2015-07-21 14 views
9

Ich habe eine funktionierende Lösung für WP8.0. Aber ich musste upgraden, um auf WNS zugreifen zu können. Es ist mir gelungen, WNS zu der Upgrade-Lösung im Hauptmenü hinzuzufügen. Aber nach dem Upgrade auf wp8.1 (silverlight) hatte ich einige seltsame Fehler, die nur zur Laufzeit auftreten. Als Beispiel in der folgenden Usercontrol geschieht:XAML Parse-Fehler bei Interaktion triggert wp8.1 (silverlight)

<UserControl 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform" 
xmlns:View="clr-namespace:ShieldGenerator.View" 
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
x:Class="ShieldGenerator.View.MoveableShieldGear" 
mc:Ignorable="d" 
Canvas.Left="{Binding Gear.x}" Canvas.Top="{Binding Gear.y}" Canvas.ZIndex="{Binding Gear.z}" > 

<Path Data="{Binding Gear.Path}" Fill="{Binding Gear.Color}" Stretch="Fill" UseLayoutRounding="False" Height="{Binding Gear.Height}" Width="{Binding Gear.Width}" Opacity="{Binding Gear.Opacity}"> 
    <Path.RenderTransform> 
     <TransformGroup> 
      <ScaleTransform ScaleX="{Binding Gear.Scale}" ScaleY="{Binding Gear.Scale}" CenterX="{Binding Gear.CenterX}" CenterY="{Binding Gear.CenterY}"/> 
      <RotateTransform Angle="{Binding Gear.Rotate}" CenterX="{Binding Gear.CenterX}" CenterY="{Binding Gear.CenterY}" /> 
      <SkewTransform AngleX="{Binding Gear.SkewX}" AngleY="{Binding Gear.SkewY}" CenterX="{Binding Gear.CenterX}" CenterY="{Binding Gear.CenterY}" /> 
     </TransformGroup> 
    </Path.RenderTransform> 

    <i:Interaction.Triggers> 

     <i:EventTrigger EventName="ManipulationStarted"> 
      <cmd:EventToCommand Command="{Binding MouseDownGearCommand}" PassEventArgsToCommand="True"/> 
     </i:EventTrigger> 

     <i:EventTrigger EventName="ManipulationDelta"> 
      <cmd:EventToCommand Command="{Binding MouseGearMoveCommand, Mode=OneWay}" PassEventArgsToCommand="True"/> 
     </i:EventTrigger> 

     <i:EventTrigger EventName="ManipulationCompleted"> 
      <cmd:EventToCommand Command="{Binding MouseUpGearCommand}" PassEventArgsToCommand="True"/> 
     </i:EventTrigger> 

     <i:EventTrigger EventName="DoubleTap"> 
      <cmd:EventToCommand Command="{Binding DoubleTapCommand}" PassEventArgsToCommand="True"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 

</Path> 

</UserControl> 

Wo die Ereignisse meiner VM binded sind, werden die Befehle in der VM als RelayCommand definiert. Wie bereits erwähnt, war dies eine funktionierende Lösung ohne Fehler. Ich habe aktualisiert und immer noch keine Fehler beim Kompilieren. Ich habe keinen Code hinter dem Blick, aber der Fehler tritt in der Zeile darunter mit ERROR markiert (in der * .g.cs Datei)

namespace ShieldGenerator.View { 


public partial class MoveableShieldGear : System.Windows.Controls.UserControl { 

    private bool _contentLoaded; 

    /// <summary> 
    /// InitializeComponent 
    /// </summary> 
    [System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    public void InitializeComponent() { 
     if (_contentLoaded) { 
      return; 
     } 
     _contentLoaded = true; 
     System.Windows.Application.LoadComponent(this, new System.Uri("/ShieldGenerator;component/View/MoveableShieldGear.xaml", System.UriKind.Relative)); //ERROR 
    } 
} 
} 

Der Fehler in <i:Interaction.Triggers> in dem obigen XAML-Code auf die Zeile bezieht sich .

Ich habe versucht, mehrere Pakete ohne Erfolg zu deinstallieren und zu installieren. Ich habe versucht, herum zu suchen, und fand Ideen für die Aufnahme Mode=Oneway, und einige Fehler im XAML-Parser. Ich bin völlig am Ende.

Hoffe jemand kann helfen!

Der Fehlerenter image description here

Dieser Fehler überall, wo ich i:interaction angezeigt verwenden. Ich habe nach einer Möglichkeit gesucht, eine wp8.1-Version von System.Windows.Interactivity zu finden, aber ich war dazu nicht in der Lage. Ich habe deshalb dafür gesorgt, dass die MVVMLight Tools aktualisiert werden:

enter image description here

Informationen auf der Grundlage der Kommentar

Unterschied in neuen app.config ist eine neue Ergänzung.

Unterschied in neuen WMAppManifest.xml NotificationService = "WNS" Weil ich es einrichten und es funktioniert

NEW

<Capabilities> 
    <Capability Name="ID_CAP_NETWORKING" /> 
    <Capability Name="ID_CAP_MEDIALIB_AUDIO" /> 
    <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" /> 
    <Capability Name="ID_CAP_MEDIALIB_PHOTO" /> 
</Capabilities> 

OLD

<Capabilities> 
    <Capability Name="ID_CAP_NETWORKING" /> 
    <Capability Name="ID_CAP_MEDIALIB_AUDIO" /> 
    <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" /> 
    <Capability Name="ID_CAP_SENSORS" /> 
    <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" /> 
    <Capability Name="ID_CAP_MEDIALIB_PHOTO" /> 
    <Capability Name="ID_CAP_PUSH_NOTIFICATION" /> 
    <Capability Name="ID_CAP_IDENTITY_USER" /> 
</Capabilities> 

ich die Fähigkeiten entfernt habe ich tat nicht mehr benutzen. Und fügte hinzu in den neuen Package.appxmanifest für WP8.1

<Capabilities> 
<Capability Name="internetClientServer" /> 
<Capability Name="musicLibrary" /> 
<Capability Name="picturesLibrary" /> 

ich je die andere Frage habe auch Probleme mit dem AGHost.exe, aber ich habe nicht versucht, es zu löschen, wie ich das unten dachte, war obligatorisch .

<Applications> 
<Application Id="xd82c080dy903dy47f4yba02y5a36d745c72bx" Executable="AGHost.exe" EntryPoint="StartUp/FirstPage.xaml"> 
    <m3:VisualElements DisplayName="XXXXX" Square150x150Logo="Assets\SquareTile150x150.png" Square44x44Logo="Assets\Logo.png" Description="XXXX" ForegroundText="light" BackgroundColor="#464646" ToastCapable="true"> 
    <m3:DefaultTile Square71x71Logo="Assets\SquareTile71x71.png"> 
    </m3:DefaultTile> 
    <m3:SplashScreen Image="Assets\Splashscreen.png" /> 
    </m3:VisualElements> 
</Application> 


</Applications> 
<Capabilities> 
    <Capability Name="internetClientServer" /> 
    <Capability Name="musicLibrary" /> 
    <Capability Name="picturesLibrary" /> 
</Capabilities> 
<Extensions> 
    <Extension Category="windows.activatableClass.inProcessServer"> 
    <InProcessServer> 
     <Path>AgHostSvcs.dll</Path> 
     <ActivatableClass ActivatableClassId="AgHost.BackgroundTask" ThreadingModel="both" /> 
    </InProcessServer> 
    </Extension> 
</Extensions> 

Kein anderes Problem in dieser Datei gefunden. AssemblyInfo.cs und AppManifest.xml sind gleich.Mit Blick auf den Referenzordner die Referenzen in Ordnung scheint, und sind für wp8.1 aktualisiert (jene, die könnte)

Extra-

Wenn ich kopieren Sie die XAML-Code (dh Pfad mit Interaktion) in eine andere Seite, die gearbeitet . Dann scheitert es mit dem gleichen Fehler, während der XAML-Parsing für die Seite, die ohne das Snippet funktioniert.

Neues Update Es scheint, dass bei meinem Upgrade etwas in den Lösungen und den Projekten beschädigt wurde. Das Folgende, das ich gefunden habe, ist, dass ich den Code bekommen und in einem neuen Projekt arbeiten kann. Der Code funktioniert, wenn ich das Projekt ausführen und bereitstellen.

Wenn ich auf der anderen Seite das gleiche Projekt verwenden, das bei der Bereitstellung funktionierte, navigieren Sie jetzt von einem anderen Projekt zu diesem Projekt "/BC_Creator;component/MainPage.xaml" Dann tritt der obige Fehler erneut auf. Meine einzige Idee ist jetzt, zu versuchen, völlig neue Projekte zu erstellen und den Code in neue Dateien zu kopieren. Seit dem Importieren scheint es immer noch nicht zu funktionieren.

WTF passiert hat: S

+0

Was ist der tatsächliche Fehler? –

+0

@ChrisW. hinzugefügte Beschreibung des Fehlers, Position 24 ist das '.' in der Zeile' '. Ich kann die Fehlermeldung mit dem Debugger wegen eines anderen Problems nach dem Aktualisieren nicht extrahieren. Bezug nehmend auf Frage http://stackoverflow.com/questions/31432007/upgrading-wp8-to-wp8-1-silverlight-debugger-cannot-belaunched – JTIM

+0

Uh, ok ... so durch Ihre Linie zählen und die Erwähnung von System.Windows.ni.dll in der Ausnahme, ich werde sagen, dass es wahrscheinlich nichts mit diesen Auslösern zu tun hat, oder ihre Interaktionen/Namespaces etc. Ich würde fragen, könnten Sie möglicherweise einige Projektreferenzen in wie Ihre WMAppManifest verloren haben .xaml, die manuell hinzugefügt werden müssen? –

Antwort

1

bin ich nach Antworten noch offen.

Aber mein aktuelles Ergebnis ist, dass es das MVVMLight-Paket ist, das das Problem ist.

Nach dem Upgrade der Lösungen, Deinstallation und Neuinstallation mit der Packmanager-Konsole, hatte ich alle Fehler entfernt. Aber die Lösung hat nicht funktioniert. Dies endete damit, dass ich eine neue Lösung erstellen und die alten Projekte importieren musste. Einige der Probleme blieben jedoch bestehen, was zu einem Kopiervorgang in neue Dateien führte, die mit den gleichen Namen erstellt wurden. Und plötzlich funktionierte es, so seltsam:/

Die alte Lösung funktioniert immer noch nicht, und sogar das Testen der alten Dateien (nicht Projekt JUST Code-Dateien) hat nicht funktioniert, nur das Erstellen und Kopieren funktioniert.

Es ist wirklich merkwürdig, also immer noch offen für Lösungen, denn das wird eine lange Zeit dauern!