2

Ich bin wirklich neu in Xamarin.Forms und versuchen zu lernen mit this nice tutorial.Xamarin Formulare in Visual Studio 2017 XAML Validierung

Ich habe es geschafft, alles in Visual Studio 2017 Community Edition einzurichten und erfolgreich auf emulierten und physischen Geräten (nur Android) zu implementieren.

Während verschiedener Tests habe ich festgestellt, dass einige XAML-Fehler nicht hervorgehoben sind und der Build erfolgreich ausgeführt wurde, aber XAML ist zur Laufzeit fehlgeschlagen und hat die App zum Absturz gebracht. Z.B. einen Stilnamen oder irgendeinen Attributwert falsch schreiben.

Im Debug-Modus läuft nur die App. Brechen sie die folgende Zeile zeigt:

public partial class MainPage : global::Xamarin.Forms.ContentPage { [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")] 
    private void InitializeComponent() { 
     // this is the last line from my code that hands when XAML is invalid 
     this.LoadFromXaml(typeof(MainPage)); 
    } 
} 

die Ausführung wieder aufnehmen zeigt einen Hinweis darauf, was falsch ist (keine feinen Details, wie durch die neue VS2017 Ausnahme-Schnittstelle zur Verfügung gestellt):

Unbehandelte Ausnahme:

Xamarin.Forms.Xaml.XamlParseException: aufgetreten

Frage:Gibt es eine Möglichkeit, ungültige XAML-Fehler früher zu erfassen? Oder zumindest relevantere Informationen erhalten? Oder ist dies eine bekannte Einschränkung von Xamarin.Forms?

Um die Sache noch schlimmer zu machen, scheint Autocomplete für Attributwerte in VS2017 nicht zu funktionieren (es funktioniert in VS2015), aber das ist ein anderes Problem für eine andere Frage.

Weitere Informationen über installierte Software:

Microsoft Visual Studio Community 2017 
Version 15.0.26228.9 D15RTWSVC 
Microsoft .NET Framework 
Version 4.6.01586 

Installed Version: Community 

Xamarin 4.3.0.795 (aece090) 
Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android. 

Xamarin.Android SDK 7.1.0.41 (9578cdc) 
Xamarin.Android Reference Assemblies and MSBuild support. 

Xamarin.iOS and Xamarin.Mac SDK 10.4.0.123 (35d1ccd) 
Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support. 

Antwort

2

Um XAML Fehler bei der Kompilierung zu fangen Sie haben eine Zeile AssemblyInfo.cs hinzuzufügen:

[assembly: XamlCompilation(XamlCompilationOptions.Compile)] 

Weitere Informationen zu diesem Thema here zu finden sind .

Leider Xamarin.Forms XAML Intellisense-Unterstützung in VS ist nicht wie für WPF oder SilverLight, es ist derzeit sehr begrenzt. Ein Vorschlag kann sein, Ihre ui in Code zu schreiben, auf diese Weise erhalten Sie eine Rückmeldung schneller und wenn Sie Xamarin.Forms XAML sehr neu sind, können Sie sich damit viel leichter vertraut machen, weil intellisense im Code dahinter ist.

Eine weitere Option ist IDE-Erweiterungen zu verwenden, in meinem Fall, wie ich es verstehe VS 2017 für Windows, so wird es Ihnen nicht helfen, aber für Xamarin Studio für MC haben Sie Tools wie mfractor, die die Probleme zu lösen adressiert.

+0

Danke für die schnelle Antwort. Leider scheint es (zumindest nicht mehr) zu funktionieren. Ich habe sowohl Assembly-Level-Attribut als auch Klassen-Level-Attribut ausprobiert. Auch in VS2015 versucht. Ich habe jedoch gerade festgestellt, dass Resharper (derzeit nur in VS2015 aktiv) XAML-Fehler korrekt hervorhebt, so dass es als Workaround für die frühe Erkennung von inkorrekten XAML-Referenzen verwendet werden kann. – Alexei

+0

'XamlCompilationOptions.Compile' - kompiliert Ihr XAML. Wenn Ihr XAML falsch oder beschädigt ist, erhalten Sie einen Kompilierzeitfehler. Sie müssen Ihre App nicht ausführen, um festzustellen, dass in XAML ein Fehler aufgetreten ist. – EvZ

+0

Ja, ich erhalte Kompilierungsfehler, wenn XAML nicht korrekt ist oder ein eingebauter Attributwert falsch geschrieben ist. Ich werde jedoch falsche Ressourcenreferenzen schreiben und zur Laufzeit abstürzen.Das ist jetzt in Ordnung (ich kann warten, bis ein Resharper-Upgrade durchgeführt wird, um die Fehlerhervorhebung in VS2017 zu erhalten). – Alexei

Verwandte Themen