Allgemeine Problembehandlung bei .NET Native
In diesem Artikel wird beschrieben, wie Sie potenzielle Probleme beheben, die beim Entwickeln von Apps mit .NET Native auftreten können.
Probleme
Problem: Das Buildausgabefenster wird nicht ordnungsgemäß aktualisiert.
Lösung: Das Buildausgabefenster wird erst aktualisiert, wenn der Build abgeschlossen ist. Buildzeiten können bis zu mehreren Minuten dauern, daher kann eine Verzögerung bei der Aktualisierung der Anzeige auftreten.
Problem: Die Einzelhandels-Buildzeit Ihrer App für Arm ist gestiegen.
Lösung: Wenn Sie eine App auf Ihrem Arm-Gerät bereitstellen, wird die .NET Native-Infrastruktur aufgerufen. Bei dieser Kompilierung wird eine große Anzahl von Optimierungen ausgeführt und gleichzeitig sichergestellt, dass nicht statische Semantik, wie Reflektion, weiterhin funktioniert. Darüber hinaus ist der Von der App verwendete Teil von .NET Framework zur optimalen Leistung statisch verknüpft und muss auch in systemeigenem Code kompiliert werden. Deshalb dauert die Kompilierung länger.
Allerdings liegen die Kompilierungszeiten für die meisten Apps auf einem Standardentwicklungscomputer bei Standardkompilierung noch innerhalb einer Minute. In der Regel dauert das Generieren von nativen Images für .NET Framework auf einem Standardentwicklungscomputer mehrere Minuten. Auch bei allen Optimierungen zur Verbesserung des generierten Codes und einschließlich .NET Framework sind App-Buildzeiten in der Regel eine minute oder zwei.
Wir arbeiten weiterhin an der Verbesserung der Kompilierungsleistung, indem wir Multithreadkompilierung und andere Optimierungen untersuchen.
Problem: Sie wissen nicht, ob Ihre App mit .NET Native kompiliert wurde.
Lösung: Wenn der .NET Native-Compiler aufgerufen wird, werden Sie längere Buildzeiten feststellen, und der Task-Manager zeigt verschiedene .NET Native-Komponentenprozesse wie ILC.exe und nutc_driver.exe an.
Nachdem Sie Ihr Projekt mit .NET Native erfolgreich erstellt haben, finden Sie die Ausgabe unter "obj\config\ arch\projectname.ilc\out". Der endgültige inhalt des nativen Pakets finden Sie unter "bin\arch\config\AppX". Die endgültigen systemeigenen Paketinhalte befinden sich unter \bin\arch\config\AppX, wenn Sie die App bereitgestellt haben.
Problem: Die mit .NET Native kompilierte App löst Laufzeitausnahmen aus (in der Regel MissingMetadataException- oder MissingRuntimeArtifactException-Ausnahmen), die beim Kompilieren ohne .NET Native nicht ausgelöst wurden.
Lösung: Die Ausnahmen werden ausgelöst, da .NET Native weder Metadaten noch Implementierungscode bereitstellt, die andernfalls durch Reflektion verfügbar sind. (Weitere Informationen finden Sie unter .NET Native und Compilation.) Um die Ausnahme zu beseitigen, müssen Sie ihrer Laufzeitdirektiven (rd.xml) einen Eintrag hinzufügen, damit die .NET Native-Toolkette die Metadaten oder den Implementierungscode zur Laufzeit verfügbar machen kann. Es sind zwei Problembehandlungen verfügbar, die den entsprechenden Eintrag für die Laufzeitdirektivendatei zur Beseitigung der Ausnahme generieren:
Die MissingMetadataException-Problembehandlung für Typen.
Die MissingMetadataException-Problembehandlung für Methoden.
Weitere Informationen finden Sie unter Reflektion und .NET Native.