Freigeben über


Problembehandlung beim Portieren von Windows-Runtime 8.x zu UWP

Im vorherigen Thema wurde das Projekt portiert.

Es wird dringend empfohlen, das Ende dieses Portierungshandbuchs zu lesen, aber wir wissen auch, dass Sie sich darauf freuen, voranzuschreiten und in die Phase zu gelangen, in der Ihr Projekt erstellt und ausgeführt wird. Zu diesem Zweck können Sie temporäre Fortschritte erzielen, indem Sie alle nicht unbedingt benötigten Code kommentieren oder verstören und dann später zurückkehren, um diese Verschuldung abzuzahlen. Die Tabelle der Problembehandlungssymptome und Heilmittel in diesem Thema kann ihnen in diesem Stadium hilfreich sein, obwohl es kein Ersatz zum Lesen der nächsten Themen ist. Sie können immer wieder auf die Tabelle verweisen, während Sie die späteren Themen durcharbeiten.

Nachverfolgen von Problemen

XAML-Analyseausnahmen können schwierig zu diagnostizieren sein, insbesondere, wenn innerhalb der Ausnahme keine aussagekräftigen Fehlermeldungen vorhanden sind. Stellen Sie sicher, dass der Debugger für die Erfassung von Ausnahmen (erste Chance) konfiguriert ist (um die Analyseausnahme möglichst früh zu erfassen). Möglicherweise können Sie die Ausnahmevariable im Debugger überprüfen, um zu ermitteln, ob das HRESULT oder die Meldung hilfreiche Informationen enthält. Überprüfen Sie auch das Visual Studio-Ausgabefenster auf Fehlermeldungen des XAML-Parsers.

Wenn Ihre App beendet wird und Sie nur wissen, dass während der XAML-Markupanalyse eine unbehandelte Ausnahme ausgelöst wurde, kann dies das Ergebnis eines Verweises auf eine fehlende Ressource sein (d. h. eine Ressource, deren Schlüssel für universelle 8.1-Apps, aber nicht für Windows 10-Apps vorhanden ist, z. B. einige SystemtextBlock-Stiltasten). Oder es kann eine Ausnahme sein, die innerhalb eines UserControl-Steuerelements, eines benutzerdefinierten Steuerelements oder eines benutzerdefinierten Layoutpanels ausgelöst wird.

Als letzte Möglichkeit kann eine Binärdatei aufgeteilt werden. Entfernen Sie etwa die Hälfte des Markups von einer Seite, und führen Sie die App erneut aus. Sie werden dann wissen, ob sich der Fehler in der Hälfte befindet, die Sie entfernt haben (die Sie jetzt in jedem Fall wiederherstellen sollten) oder in der Hälfte, die Sie nicht entfernt haben. Wiederholen Sie den Vorgang durch Teilen der Hälfte mit den Fehler solange, Sie das Problem eingegrenzt haben.

TargetPlatformVersion

In diesem Abschnitt wird erläutert, was zu tun ist, wenn beim Öffnen eines Windows 10-Projekts in Visual Studio die Meldung "Visual Studio-Update erforderlich" angezeigt wird. Mindestens ein Projekt erfordert eine Plattform-SDK-Version<>, die entweder nicht installiert ist oder als Teil eines zukünftigen Updates für Visual Studio enthalten ist."

  • Ermitteln Sie zunächst die Versionsnummer des SDK für Windows 10, das Sie installiert haben. Navigieren Sie zu "C:\Programme (x86)\Windows Kits\10\Include\<versionfoldername> ", und notieren Sie sich den <Versionsordnernamen>, der in der vierfachen Schreibweise "Major.Minor.Build.Revision" enthalten ist.
  • Öffnen Sie Die Projektdatei zum Bearbeiten und Suchen der TargetPlatformVersion Elemente TargetPlatformMinVersion . Bearbeiten Sie sie, um wie folgt zu aussehen, und ersetzen <Sie den Versionsordnernamen> mit der Vierfachversionsnummer, die Sie auf dem Datenträger gefunden haben:
   <TargetPlatformVersion><versionfoldername></TargetPlatformVersion>
    <TargetPlatformMinVersion><versionfoldername></TargetPlatformMinVersion>

Problembehandlung bei Symptomen und Abhilfemaßnahmen

Die Abhilfeinformationen in der Tabelle sollen Ihnen genügend Informationen geben, um die Blockierung selbst aufzuheben. Weitere Details zu den einzelnen Problemen finden Sie in den nachfolgenden Themen.

Symptom Problembehandlung
Beim Öffnen eines Windows 10-Projekts in Visual Studio wird die Meldung "Visual Studio-Update erforderlich" angezeigt. Mindestens ein Projekt erfordert eine Plattform-SDK-Version<>, die entweder nicht installiert ist oder als Teil eines zukünftigen Updates für Visual Studio enthalten ist." Weitere Informationen finden Sie im Abschnitt "TargetPlatformVersion " in diesem Thema.
Eine System.InvalidCastException wird ausgelöst, wenn InitializeComponent in einer xaml.cs Datei aufgerufen wird. Dies kann passieren, wenn Sie mehrere XAML-Dateien (mindestens eine von denen MRT-qualifiziert) dieselbe xaml.cs Datei und Elemente mit x:Name-Attributen haben, die zwischen den beiden XAML-Dateien inkonsistent sind. Versuchen Sie, denselben Namen zu denselben Elementen in beiden XAML-Dateien hinzuzufügen, oder lassen Sie Namen vollständig weg.
Wenn sie auf dem Gerät ausgeführt wird, wird die App beendet oder wenn sie von Visual Studio gestartet wird, wird der Fehler "Windows-Runtime 8.x-App [...] kann nicht aktiviert werden[...] angezeigt. Fehler bei der Aktivierungsanforderung mit dem Fehler "Windows konnte nicht mit der Zielanwendung kommunizieren. Dies weist in der Regel darauf hin, dass der Prozess der Zielanwendung abgebrochen wurde. […]”. Das Problem könnte der imperative Code sein, der in Ihren eigenen Seiten oder in gebundenen Eigenschaften (oder anderen Typen) während der Initialisierung ausgeführt wird. Oder es kann beim Analysieren der XAML-Datei passieren, die angezeigt wird, wenn die App beendet wird (wenn sie von Visual Studio gestartet wird, das ist die Startseite). Suchen Sie nach ungültigen Ressourcenschlüsseln, und/oder probieren Sie einige der Anleitungen im Abschnitt "Aufspüren von Problemen" in diesem Thema aus.
Der XAML-Parser oder Compiler oder eine Laufzeitausnahme gibt den Fehler "Die Ressource "<Resourcekey>" konnte nicht aufgelöst werden." Der Ressourcenschlüssel gilt nicht für Universelle Windows-Plattform -Apps (UWP) (dies ist der Fall bei einigen Windows Phone Ressourcen, z. B.). Suchen Sie die richtige entsprechende Ressource, und aktualisieren Sie Ihr Markup. Beispiele, die sofort auftreten können, sind Systemschlüssel wie PhoneAccentBrushz. B. .
Der C#-Compiler gibt den Fehler "Der Typ oder Namespacename '<Name>' konnte nicht gefunden werden [...]" oder "Der Typ oder Namespacename '<Name>' ist im Namespace [...]" nicht vorhanden, oder "Der Typ oder Namespacename '<Name>' ist im aktuellen Kontext nicht vorhanden". Dies bedeutet wahrscheinlich, dass der Typ in einem Erweiterungs-SDK implementiert wird (obwohl es Fälle geben kann, in denen das Mittel nicht so einfach ist). Verwenden Sie den Windows-APIs-Verweisinhalt, um zu bestimmen, welches Erweiterungs-SDK die API implementiert, und verwenden Sie dann den Befehl "Verweis hinzufügen">von Visual Studio, um ihrem Projekt einen Verweis auf dieses SDK hinzuzufügen. Wenn Ihre App auf den Satz von APIs abzielt, die als universelle Gerätefamilie bezeichnet werden, ist es wichtig, dass Sie die ApiInformation-Klasse verwenden, um zur Laufzeit das Vorhandensein des Erweiterungs-SDK zu testen, bevor Sie sie aufrufen (dies wird als adaptiver Code bezeichnet). Wenn eine universelle API vorhanden ist, ist dies immer einer API in einem Erweiterungs-SDK vorzuziehen. Weitere Informationen finden Sie unter Erweiterungs-SDKs.

Das nächste Thema ist das Portieren von XAML und der Benutzeroberfläche.