Freigeben über


Debuggen von Expression Blend-Anwendungen

Falls die Microsoft Expression Blend-Anwendung nicht das gewünschte Verhalten zeigt oder falls beim Erstellen der Anwendung Fehler gemeldet werden, enthält die Anwendung einen Fehler. Das Finden der Ursache oder der genauen Position eines Fehlers in der Anwendung kann Probleme bereiten. Es kann hierbei jedoch hilfreich sein, wenn Sie wissen, welche Arten von Fehlern auftreten können.

Syntaxfehler

Beim Erstellen der Anwendung werden alle Kompilierungsfehler im Ergebnispanel auf der Registerkarte Fehler in Expression Blend oder im Bereich Fehlerliste in Microsoft Visual Studio 2008 angezeigt.

Syntaxfehler treten auf, wenn in Extensible Application Markup Language (XAML) oder im Code die Formatierungsregeln der Sprache nicht befolgt werden. Die Beschreibung des Fehlers kann bei seiner Behebung hilfreich sein. In der Beschreibung wird auch der Name der Datei und die Zeilennummer angegeben, in der der Fehler auftritt. Es folgen einige häufige Ursachen für Syntaxfehler:

  • Ein Schlüsselwort wurde falsch geschrieben, oder die Groß-/Kleinschreibung ist falsch.

  • Um Zeichenfolgen mit Text fehlen Anführungszeichen.

  • Für ein XAML-Element fehlt ein Endtag.

  • Ein XAML-Element ist an einer Position vorhanden, an der es nicht zulässig ist. Sie können diese Fehler vermeiden, indem Sie die Dokumente in der Designansicht von Expression Blend oder in Visual Studio 2008 bearbeiten.

  • In einer Codedatei enthält ein Funktions- oder Methodenaufruf nicht die erforderlichen Parameter. Die MessageBox.Show()-Methode (Meldungsfeld anzeigen) muss z. B. mindestens einen Parameter besitzen, beispielsweise eine Zeichenfolge: MessageBox.Show("Hello").

  • In einer Codedatei ist eine Variable eines Typs einem anderen Typ zugewiesen. Die MessageBox.Show()-Methode (Meldungsfeld anzeigen) kann z. B. ein Zeichenfolgenargument, nicht jedoch ein Ganzzahlargument besitzen.

  • In C# darf eine Methode, die keine Argumente benötigt, keine Klammern am Ende besitzen. this.InitializeComponent; verursacht z. B. einen Syntaxfehler, da die korrekte Zeile this.InitializeComponent(); lautet.

Weitere Informationen zur XAML-Syntax finden Sie in den Übersichtsthemen der einzelnen Steuerelemente in der Steuerelementbibliothek im Abschnitt Windows Presentation Foundation in MSDN (möglicherweise in englischer Sprache). Informationen zur Programmiersyntax finden Sie, wenn Sie in MSDN nach Schlüsselwörtern im Code suchen.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(de-de,Expression.10).gifNach oben

Kompilierungsfehler

Beim Erstellen der Anwendung werden alle Kompilierungsfehler im Ergebnispanel auf der Registerkarte Fehler in Expression Blend oder im Bereich Fehlerliste in Visual Studio 2008 angezeigt.

Kompilierungsfehler treten auf, wenn einige der für das Projekt erforderlichen Daten vom Kompilierungssystem von Expression Blend oder Visual Studio 2008 nicht gefunden werden können. Wenn im Projekt z. B. ein Verweis auf die WPF-Assemblys fehlt, wird möglicherweise ein Fehler wie "Der Name 'Window' ist im Namespace 'https://schemas.microsoft.com/winfx/2006/xaml/presentation-Namespace' nicht vorhanden" ausgegeben. Falls dieser Fehler ausgegeben wird, können Sie im Menü Projekt auf Verweis hinzufügen klicken, um Verweise auf die folgenden WPF-Assemblys im Ordner C:\Programme\Reference Assemblies\Microsoft\Framework\v3.0 hinzuzufügen:

  • PresentationCore.dll

  • PresentationFramework.dll

  • WindowsBase.dll

Falls weiterhin Fehler wie z. B. "Der Name '<member>' ist im aktuellen Kontext nicht vorhanden." ausgegeben werden, fehlt u. U. ein weiterer Assemblyverweis, oder Sie müssen dem Code möglicherweise für den fehlenden Namespace eine Anweisung vom Typ using (C#) oder Imports (Visual Basic .NET) hinzufügen. Sie können ermitteln, welche Assembly oder welcher Namespace erforderlich ist, wenn Sie das MSDN-Referenzthema für den Member anzeigen, der den Fehler verursacht.

Es folgen weitere häufige Ursachen für Kompilierungsfehler:

  • Ein Schlüsselwort wurde falsch geschrieben, oder die Groß-/Kleinschreibung ist falsch.

  • Auf eine Klasse wird in der Anwendung nicht ordnungsgemäß verwiesen. Wenn die Anwendung z. B. eine benutzerdefinierte Klasse verwendet, die in einer separaten CS- oder VB-Codedatei mit einem eigenen Namespace implementiert ist (oder im Falle eines Microsoft Silverlight 1.0-Projekts in einer JS-Codedatei), muss jedes Dokument in der Anwendung, das die benutzerdefinierte Klasse verwendet, eine Zeile wie die folgende einschließen. FullyQualifiedNamespace entspricht hierbei dem Namespace in der Codedatei:

    xmlns:SampleNamespace="clr-namespace:FullyQualifiedNamespace"
    
  • Die Compileroptionen sind nicht ordnungsgemäß festgelegt, oder vom System können keine Microsoft .NET Framework-basierten Anwendungen erstellt werden. Falls Microsoft .NET Framework 3.5 installiert ist und Sie die Anwendung mit Expression Blend oder Visual Studio 2008 erstellen, sollte dieses Problem nicht auftreten.

  • Das Projekt soll erstellt werden, eine Datei wurde jedoch noch nicht gespeichert. Wenn Sie z. B. das Ereignispanel Cc294906.6c67bb3b-e8a2-4a63-bad5-54d5c15b04dd(de-de,Expression.10).png von Expression Blend zum Generieren einer neuen Ereignishandlermethode in der CodeBehind-Datei verwenden (und die CodeBehind-Datei in Visual Studio öffnen) und dann das Projekt in Expression Blend erstellen möchten, ohne die CodeBehind-Datei vorher zu speichern, wird eine Fehlermeldung ausgegeben. Darin wird angegeben, dass das Projekt keine Definition für den Ereignishandler enthält.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(de-de,Expression.10).gifNach oben

Laufzeitfehler

Laufzeitfehler können auftreten, wenn die Anwendung zwar erstellt wird, bei der Ausführung (durch Drücken von F5 in Expression Blend) jedoch nicht das erwartete Verhalten zeigt. Laufzeitfehler sind sehr schwer zu finden, da Fehler in der Logik vorhanden sind. Manchmal können Laufzeitfehler behoben werden, indem Sie verschiedene Änderungen in XAML oder Code ausprobieren, bis Sie die Abläufe im Hintergrund erkennen. Die schnellere Möglichkeit besteht jedoch darin, die im Hintergrund stattfindenden Abläufe direkt zu beobachten, indem Sie den Code während der Programmausführung zeilenweise durchgehen. Weitere Informationen finden Sie unter Debugging in Visual Studio 2008 weiter unten in diesem Thema.

Es folgen einige häufige Ursachen für Laufzeitfehler:

  • Das Layout von XAML-Elementen ist fehlerhaft, oder es wird ein falsches Panelelement für andere Elemente verwendet. Informationen zum Layout finden Sie unter "Layoutsystem" in diesem Benutzerhandbuch oder in den Themen zum Layoutsystem und der Übersicht zu Ausrichtung, Rändern und Abständen im WPF-Abschnitt in MSDN (möglicherweise in englischer Sprache).

  • Ein XAML-Element ist nicht in den korrekten Ereignishandler eingebunden. Dies kann vorkommen, wenn Sie zahlreiche Ereignishandlermethoden erstellen und dann dem XAML-Element die falsche Methode zuweisen. Sie können anzeigen, welche Ereignishandler einem XAML-Element in einem WPF-Projekt Expression Blend zugewiesen sind, indem Sie im Interaktionspanel unter Objekte und Zeitachsen das Element auswählen und dann im Eigenschaftenpanel auf die Schaltfläche Ereignisse klicken. Weitere Informationen finden Sie in diesem Benutzerhandbuch unter Ereignishandling und Benutzerinteraktivität. In einem Silverlight 1.0 kann dies auftreten, wenn Sie einen Ereignishandler mithilfe des folgenden Codes an das Stammelement binden:

    rootElement.addEventListener(…);
    

    Anstatt den Ereignishandler beispielsweise mit dem folgenden Code an ein untergeordnetes Element im Dokument zu binden:

    this.control.content.findName("WebLink").addEventListener(…);
    

    Weitere Informationen finden Sie unter Erstellen einer Schaltfläche zur Steuerung eines Storyboards in einer Silverlight-Anwendung.

  • Ein Animationsauslöser ist in Expression Blend nicht ordnungsgemäß festgelegt. Animationsstoryboards müssen z. B. in einem Auslöser gestartet werden, wenn sie nach dem Laden der Anwendung angehalten werden sollen. (Standardmäßig werden alle Animationsstoryboards im Auslöser Window.Loaded gestartet, diese Einstellung kann jedoch geändert werden.) Weitere Informationen finden Sie in diesem Benutzerhandbuch unter Animation. Ein Beispiel für Animationsauslöser finden Sie unter Erstellen einer einfachen Animation oder in den Themen im Abschnitt Weiterführende Themen unter Einfache Stile.

  • In einer Codedatei verweist eine Variable auf ein noch nicht vorhandenes Objekt. Sie können in einer CodeBehind-Datei in einem WPF-Projekt beispielsweise nicht vor der Zeile this.InitializeComponent() auf ein XAML-Objekt verweisen; andernfalls wird ein XamlParseException-Fehler ausgegeben.

  • In einer Codedatei werden Annahmen erstellt, die dazu führen, dass die Anwendung einen unerwarteten Codepfad verwendet. Dieses Problem kann am besten durch eine schrittweise Überprüfung des Codes beim Debuggen der Anwendung in Visual Studio 2008 behoben werden. Weitere Informationen finden Sie in diesem Benutzerhandbuch unter Debuggen von Expression Blend-Anwendungen in Visual Studio 2008.

  • In einer CodeBehind-Datei werden Aktualisierungen der Benutzeroberfläche (User Interface, UI) in demselben Thread verarbeitet wie andere Programmlogik, die in einem separaten Thread ausgeführt werden sollte. Wenn Sie z. B. eine Ereignishandlermethode erstellen, die den in einem Label-Feld angezeigten Text aktualisiert, einige andere Berechnungen durchführt und dann erneut den Text im Label-Feld aktualisiert, bevor die Ereignishandlermethode beendet wird, wird nur die letzte Aktualisierung angezeigt. Der Grund hierfür liegt darin, dass die Benutzeroberfläche am Ende der Ereignishandlermethode und nach Abschluss der gesamten Verarbeitung in demselben Thread gerendert wird. Daher kann während der Ausführung der Methode keine Zeit für die Aktualisierung der Benutzeroberfläche aufgebracht werden. Informationen zum Schreiben von WPF-Anwendungen mit mehreren Aktualisierungen der Benutzeroberfläche und Berechnungen finden Sie im Thema Threadingmodell im WPF-Abschnitt in MSDN (möglicherweise in englischer Sprache).

  • In einer Ereignishandlermethode in einer CodeBehind-Datei wird auf Benutzeroberflächenelemente oder ihre Eigenschaften verwiesen, bevor diese verfügbar sind. In einer Window1()-Konstruktormethode in einem WPF-Projekt können Sie z. B. noch nicht auf Benutzeroberflächenelemente zugreifen. In einer OnInitialized()-Ereignishandlermethode können Sie zwar auf Benutzeroberflächenelemente zugreifen, Sie können jedoch die Eigenschaften wie ActualWidth nicht überprüfen, da das Layout für die Benutzeroberflächenelemente noch nicht beendet wurde. In einer OnLoaded()-Ereignishandlermethode können Sie alle Aktionen für Benutzeroberflächenelemente ausführen, die im XAML-Dokument vorhanden sind. Weitere Informationen finden Sie unter Object Lifetime Events im WPF-Abschnitt in MSDN (möglicherweise in englischer Sprache). Eine Liste der Ereignisse und der Zeitpunkte ihres Auftretens finden Sie unter Kurzübersicht der WPF-Ereignisse in diesem Benutzerhandbuch.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(de-de,Expression.10).gifNach oben

-

Debuggen in Visual Studio 2008

Expression Blend ist ein Designwerkzeug zum Erstellen umfassender Benutzeroberflächen für WPF-basierte Anwendungen und Silverlight 1.0-Anwendungen. Sie können Visual Studio 2008 verwenden, um Expression Blend-Projekte zu öffnen, zu erstellen und zu debuggen. Falls beim Debuggen der Anwendung mithilfe der Expression Blend-Option Test (F5) Probleme auftreten, können Sie mit Visual Studio 2008 detaillierte Fehlermeldungen zu Laufzeitfehlern abrufen. Weitere Informationen finden Sie in diesem Benutzerhandbuch unter Debuggen von Expression Blend-Anwendungen in Visual Studio 2008.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(de-de,Expression.10).gifNach oben

Leistungsprobleme beim Debuggen

Von WPF wird eine Suite von Tools zur Leistungsbewertung bereitgestellt, mit deren Hilfe Sie das Laufzeitverhalten der Anwendung analysieren und Maßnahmen zur Leistungsverbesserung bestimmen können. Weitere Informationen finden Sie in den Themen zu Tools zur Leistungsprofilerstellung für WPF und zum Optimieren der WPF-Anwendungsleistung im WPF-Abschnitt in MSDN (möglicherweise in englicher Sprache).

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(de-de,Expression.10).gifNach oben

Ereignisablaufverfolgung

Erfahrene .NET-Programmierer können ihren WPF-Anwendungen Code hinzufügen, um benutzerdefinierte Debugereignisse auszulösen, die beim Debuggen komplexerer Fehler hilfreich sind. Dieses Feature wird als Ereignisablaufverfolgung für Windows (Event Tracing for Windows, ETW) bezeichnet. Das Werkzeug zur Profilerstellung in der WPF-Ereignisablaufverfolgung verwendet ETW zur Ereignisprotokollierung. Weitere Informationen finden Sie unter "Event Tracing" und "PresentationTraceSources" unter Tools zur Leistungsprofilerstellung für WPF in MSDN (möglicherweise in englicher Sprache).

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(de-de,Expression.10).gifNach oben

Debuggen von Hybridanwendungen

Falls in einer Anwendung sowohl WPF als auch eine andere Technologie wie Windows Forms-Programmierung verwendet wird, können Probleme wie unerwartete Überlappungen, unerwartetes Skalierungsverhalten, Probleme beim Steuern des Fokus usw. auftreten. Informationen zum Debuggen von Hybridanwendungen finden Sie im Thema Problembehandlung bei Hybridanwendungen im WPF-Abschnitt in MSDN (möglicherweise in englicher Sprache).

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(de-de,Expression.10).gifNach oben

Sicherheit

Während des Debuggens besitzt die Anwendung dieselben Sicherheitsberechtigungen wie bei Verwendung durch eine andere Person. Weitere Informationen finden Sie in diesem Benutzerhandbuch unter Bereitstellen und Veröffentlichen von Expression Blend-Anwendungen. Weitere Informationen zur WPF-Anwendungssicherheit finden Sie im Thema Sicherheit im WPF-Abschnitt in MSDN (möglicherweise in englicher Sprache).

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(de-de,Expression.10).gifNach oben

Anzeigen der Hilfe

Wenn Sie weitere Unterstützung zum Debuggen einer Expression Blend-Anwendung benötigen, können Sie im Windows Presentation Foundation-Forum (möglicherweise in englischer Sprache) nach Beiträgen zu einem konkreten Problem suchen oder selbst eine Frage bereitstellen.

Cc294906.7e183f1f-37d8-4dcb-980c-19a5d61ca087(de-de,Expression.10).gifNach oben