Behandeln von Problemen beim Portieren von Windows-Runtime 8.x zu UWPTroubleshooting porting Windows Runtime 8.x to UWP

Im vorherigen Thema ging es um das Portieren des Projekts.The previous topic was Porting the project.

Wir empfehlen dringend, dieses Handbuch für das Portieren vollständig zu lesen. Wir wissen aber auch, dass Sie möglichst schnell die Phase erreichen möchten, in der Ihr Projekt erstellt und ausgeführt wird.We highly recommend reading to the end of this porting guide, but we also understand that you're eager to forge ahead and get to the stage where your project builds and runs. Zu diesem Zweck können Sie einen temporären Fortschritt erzielen, indem Sie allen nicht unbedingt erforderlichen Code auskommentieren und anschließend zurückkehren, um die Schulden später zu bezahlen.To that end, you can make temporary progress by commenting or stubbing out any non-essential code, and then returning to pay off that debt later. Die Tabelle mit Symptomen und Möglichkeiten zur Problembehandlung in diesem Thema kann in dieser Phase hilfreich für Sie sein, ersetzt jedoch nicht das Lesen der nächsten Themen.The table of troubleshooting symptoms and remedies in this topic may be helpful to you at this stage, although it's not a substitute for reading the next few topics. Sie können die Tabelle jederzeit zu Rate ziehen, während Sie die weiteren Themen lesen.You can always refer back to the table as you progress through the later topics.

Ermitteln von ProblemenTracking down issues

XAML-Analyseausnahmen sind u U. schwierig zu diagnostizieren, insbesondere wenn keine sinnvollen Fehlermeldungen innerhalb der Ausnahme vorhanden sind.XAML parse exceptions can be difficult to diagnose, particularly if there are no meaningful error messages within the exception. 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).Make sure that the debugger is configured to catch first-chance exceptions (to try and catch the parsing exception early on). Möglicherweise können Sie die Ausnahmevariable im Debugger überprüfen, um zu ermitteln, ob das HRESULT oder die Meldung hilfreiche Informationen enthält.You may be able to inspect the exception variable in the debugger to determine whether the HRESULT or message has any useful information. Überprüfen Sie auch das Visual Studio-Ausgabefenster auf Fehlermeldungen des XAML-Parsers.Also, check Visual Studio's output window for error messages output by the XAML parser.

Wenn Ihre APP beendet wird und Sie wissen, dass während der XAML-Markup-Verarbeitung eine nicht behandelte Ausnahme ausgelöst wurde, könnte 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 System- TextBlock -Schlüssel.If your app terminates and all you know is that an unhandled exception was thrown during XAML markup parsing, then that could be the result of a reference to a missing resource (that is, a resource whose key exists for Universal 8.1 apps but not for Windows 10 apps, such as some system TextBlock Style keys). Es kann sich auch um eine Ausnahme handeln, die innerhalb eines UserControl-Elements, eines benutzerdefinierten Steuerelements oder eines benutzerdefinierten Layoutpanels ausgelöst wurde.Or it could be an exception thrown inside a UserControl, a custom control, or a custom layout panel.

Als letzte Möglichkeit kann eine Binärdatei aufgeteilt werden.A last resort is a binary split. Entfernen Sie etwa die Hälfte des Markups von einer Seite, und führen Sie die App erneut aus.Remove about half of the markup from a Page and re-run the app. So können Sie feststellen, ob sich der Fehler in der entfernten Hälfte (die Sie jetzt in jedem Fall wiederherstellen sollten) oder in der nicht entfernten Hälfte befindet.You will then know whether the error is somewhere inside the half you removed (which you should now restore in any case) or in the half you did not remove. Wiederholen Sie den Vorgang durch Teilen der Hälfte mit den Fehler solange, Sie das Problem eingegrenzt haben.Repeat the process by splitting the half that contains the error, and so on, until you've zeroed in on the issue.

TargetPlatformVersionTargetPlatformVersion

In diesem Abschnitt wird erläutert, was zu tun ist, wenn Sie beim Öffnen eines Windows 10-Projekts in Visual Studio die Meldung "Visual Studio-Update erforderlich" sehen.This section explains what to do if, on opening a Windows 10 project in Visual Studio, you see the message "Visual Studio update required. Mindestens ein Projekt erfordert ein Plattform-SDK (<version>), das entweder nicht installiert oder in einem zukünftigen Update von Visual Studio enthalten ist.“One or more projects require a platform SDK <version> that is either not installed or is included as part of a future update to Visual Studio."

  • Bestimmen Sie zuerst die Versionsnummer des SDK für Windows 10, das Sie installiert haben.First, determine the version number of the SDK for Windows 10 that you have installed. Navigieren Sie zu C:\Programme (x86)\Windows-Kits\10,\\<versionfoldername>einschließen , und notieren Sie sich<versionfoldername> , der in Quad-Notation angegeben wird. , "Major. Minor. Build. Revision".Navigate to C:\Program Files (x86)\Windows Kits\10\Include\<versionfoldername> and make a note of <versionfoldername>, which will be in quad notation, "Major.Minor.Build.Revision".
  • Öffnen Sie Ihre Projektdatei zur Bearbeitung, und suchen Sie das TargetPlatformVersion-Element und das TargetPlatformMinVersion-Element.Open your project file for edit and find the TargetPlatformVersion and TargetPlatformMinVersion elements. Bearbeiten Sie sie folgendermaßen: Ersetzen Sie <versionfoldername> durch die Versionsnummer in Vierernotation, die Sie auf dem Datenträger gefunden haben:Edit them to look like this, replacing <versionfoldername> with the quad notation version number you found on disk:
   <TargetPlatformVersion><versionfoldername></TargetPlatformVersion>
    <TargetPlatformMinVersion><versionfoldername></TargetPlatformMinVersion>

Symptome und Möglichkeiten zur ProblembehandlungTroubleshooting symptoms and remedies

Die Lösungsinformationen in der Tabelle sollten ausreichen, um Ihr Problem selbst zu behandeln.The remedy information in the table is intended to give you enough info to unblock yourself. Weitere Details zu den einzelnen Problemen finden Sie in den späteren Themen.You'll find further details about each of these issues as you read through later topics.

SymptomSymptom AbhilfeRemedy
Wenn Sie ein Windows 10-Projekt in Visual Studio öffnen, wird die Meldung "Visual Studio-Update erforderlich.On opening a Windows 10 project in Visual Studio, you see the message "Visual Studio update required. Mindestens ein Projekt erfordert ein Plattform-SDK (<version>), das entweder nicht installiert oder in einem zukünftigen Update von Visual Studio enthalten ist.“One or more projects require a platform SDK <version> that is either not installed or is included as part of a future update to Visual Studio." Weitere Informationen finden Sie im Abschnitt TargetPlatformVersion in diesem Thema.See the TargetPlatformVersion section in this topic.
Wenn in einer XAML.CS-Datei „InitializeComponent“ aufgerufen wird, wird eine „System.InvalidCastException“ ausgelöst.A System.InvalidCastException is thrown when InitializeComponent is called in a xaml.cs file. Dies kann passieren, wenn mehrere XAML-Dateien (mindestens eine davon MRT-qualifiziert) dieselbe XAML.CS-Datei verwenden und Elemente x:Name-Attribute aufweisen, die zwischen den beiden XAML-Dateien inkonsistent sind.This can happen when you have more than one xaml file (at least one of which is MRT-qualified) sharing the same xaml.cs file and elements have x:Name attributes that are inconsistent between the two xaml files. Versuchen Sie, den gleichen Elementen in XAML-Dateien denselben Namen hinzuzufügen, oder lassen Sie Namen ganz weg.Try adding the same name to the same elements in both xaml files, or omit names altogether.
Wenn die APP auf dem Gerät ausgeführt wird, wird Sie beendet, oder wenn Sie von Visual Studio aus gestartet wird, wird die Fehlermeldung "Windows-Runtime 8. x-APP kann nicht aktiviert werden [...]angezeigt.When run on the device, the app terminates, or when launched from Visual Studio, you see the error “Unable to activate Windows Runtime 8.x app […]. Fehler bei der Aktivierungsanforderung: „Windows konnte nicht mit der Zielanwendung kommunizieren.“The activation request failed with error ‘Windows was unable to communicate with the target application. Dies weist in der Regel darauf hin, dass der Prozess der Zielanwendung abgebrochen wurde.This usually indicates that the target application’s process aborted. [...]".[…]”. Das Problem ist möglicherweise der imperative Code, der während der Initialisierung auf Ihren eigenen Seiten oder in gebundenen Eigenschaften (oder anderen Typen) ausgeführt wird.The problem could be the imperative code running in your own Pages or in bound properties (or other types) during initialization. Es könnte auch beim Analysieren der XAML-Datei passieren, die angezeigt wird, wenn die App beendet wird (beim Starten in Visual Studio ist dies die Startseite).Or it could be happening while parsing the XAML file about to be displayed when the app terminated (if launching from Visual Studio, that will be the startup page). Suchen Sie nach ungültigen Ressourcenschlüsseln und/oder probieren Sie einige der Ratschläge im Abschnitt „Ermitteln von Problemen“ in diesem Thema aus.Look for invalid resource keys, and/or try some of the guidance in the "Tracking down issues" section in this topic.
Der XAML-Parser bzw. -Compiler oder eine Laufzeitausnahme meldet den Fehler „Die Ressource „<resourcekey>“ konnte nicht aufgelöst werden“.The XAML parser or compiler, or a runtime exception, gives the error "The resource "<resourcekey>" could not be resolved.". Der Ressourcenschlüssel gilt nicht für UWP (Universelle Windows-Plattform)-Apps (dies ist z. B. bei einigen Windows Phone-Ressourcen der Fall).The resource key doesn't apply to Universal Windows Platform (UWP) apps (this is the case with some Windows Phone resources, for example). Suchen Sie nach dem richtigen äquivalenten Ressourcenobjekt, und aktualisieren Sie Ihr Markup.Find the correct equivalent resource and update your markup. Systemschlüssel wie PhoneAccentBrush können beispielsweise sofort auftreten.Examples you might encounter right away are system keys such as PhoneAccentBrush.
Der C# Compiler gibt den Fehler "der Typ-oder Namespace Name '<Name>' wurde nicht gefunden [...] " oder "der Typ-oder Namespace Name '<Name>' ist im Namespace [nicht vorhanden...] "oder"der Typ-oder Namespace Name '<Name>' ist im aktuellen Kontext nicht vorhanden".The C# compiler gives the error "The type or namespace name '<name>' could not be found [...]" or "The type or namespace name '<name>' does not exist in the namespace [...]" or "The type or namespace name '<name>' does not exist in the current context". Dies bedeutet wahrscheinlich, dass der Typ in ein Erweiterungs-SDK implementiert ist (es gibt jedoch auch Fälle, in denen die Lösung nicht so einfach ist).This is likely to mean that type is implemented in an extension SDK (although there may be cases where the remedy is not so straightforward). Verwenden Sie den Referenzinhalt für Windows APIs, um zu ermitteln, welches Erweiterungs-SDK die API implementiert und verwenden Sie dann den Visual Studio-Befehl Hinzufügen > Verweis, um diesem SDK einen Verweis auf Ihr Projekt hinzuzufügen.Use the Windows APIs reference content to determine what extension SDK implements the API and then use Visual Studio's Add > Reference command to add a reference to that SDK to your project. Wenn Ihre App auf die API-Gruppe für die universelle Gerätefamilie ausgerichtet ist, ist Folgendes wichtig: Sie müssen die ApiInformation-Klasse verwenden, um zur Laufzeit das Vorhandensein des Erweiterungs-SDKs zu prüfen, bevor Sie es aufrufen (dies wird als adaptiver Code bezeichnet).If your app targets the set of APIs known as the universal device family then it's vital that you use the ApiInformation class to test at runtime for the presence of extension SDK before you call them (this is called adaptive code). Wenn eine universelle API vorhanden ist, ist diese einer API in einem Erweiterungs-SDK immer vorzuziehen.If a universal API exists, then that's always preferable to an API in an extension SDK. Weitere Informationen finden Sie unter Erweiterungs-SDKs.For more info, see Extension SDKs.

Das nächste Thema ist Portieren von XAML und UI.The next topic is Porting XAML and UI.