4 Stimmen

Visual Studio stürzt beim Auftreten von XAML-Fehlern beim Initialisieren ab

Ich habe einige ernsthafte Probleme mit Visual Studio 2010 in letzter Zeit. Es wurde Absturz in einer eigentümlichen Weise, wenn ich bestimmte Arten von XAML-Fehler während der InitializeComponent() eines Steuerelements/Fensters.

Das Programm bricht und Visual Studio schaltet, wie es eine Ausnahme (weil es ist) und dann stoppt auf halbem Weg Anzeige eines gebrochenen Highlight in meiner XAML-Datei ohne Details zu fangen was ist falsch. Beispiel:

alt text

Es gibt keine Pop-Outs oder Details Irgendwo darüber, was falsch ist, nur einen Callstack, der auf meine InitializeComponent() anrufen.

Jetzt normalerweise würde ich nur einige Versuch und Irrtum tun, um dieses Problem zu beheben, und finden Sie heraus, wo ich durcheinander, aber das eigentliche Problem ist nicht mein Code. Visual Studio wird gerendert völlig nutzlos zu diesem Zeitpunkt. Es meldet, dass meine Anwendung immer noch im Modus "Laufend" ist. Die Schaltflächen Anhalten/Break/Neustart in der Symbolleiste oder in den Menüs bewirken nichts (sondern sind ausgegraut).

Schließen der Anwendung nicht stoppen dieses Verhalten, schließen Visual Studio bekommt es in einer massiven Schleife stecken, wo es schreit mich beschweren jede Datei geöffnet ist nicht in das Debug-Projekt, dann wiederholt diesen Prozess, wenn ich jede geöffnete Datei exausted haben.

Ich muss die Tür mit Gewalt schließen devenv.exe und nachdem dies 3-4 Mal hintereinander passiert ist, ist es eine Menge verschwendete Zeit (da meine Projekte in der Regel ziemlich groß sind und Studio ziemlich langsam beim Laden sein kann).

Auf den Punkt gebracht

  1. Hat noch jemand diese Erfahrung gemacht?
  2. Wie kann ich verhindern, dass sich das Studio sperrt.
  3. Kann ich zumindest Informationen aus diesem Tier eine andere Art und Weise erhalten, so dass ich meine XAML-Fehler eher als nach 3-4 Versuch-und-Irrtum-Kompilierungen ergeben den gleichen Absturz beheben kann?

Für jede Hilfe wären wir dankbar.

Visual Studio 2010 Version: 10.0.30319.1RTM

Bearbeiten & Aktualisieren

FWIW, die meisten Fehler, die dies verursachen, sind XamlParseExceptions (Ich habe das herausgefunden, nachdem ich herausgefunden habe, was mit meiner XAML falsch war).

Ich glaube, ich muss noch deutlicher werden. Ich suche nicht nach der Lösung für mein Code-Problem, da es sich in der Regel um Tippfehler oder Kleinigkeiten handelt, Ich bin auf der Suche nach einer Lösung für das Problem, dass VStudio infolgedessen völlig durcheinander gerät.

Der besondere Fehler im obigen Bild, der mit 100%iger Sicherheit zu diesem Problem führte, war ein XamlParseException verursacht durch das Vergessen einer Value Attribut für einen Daten-Trigger.

Ich habe diesen Teil behoben, aber es sagt mir immer noch nicht, warum mein Studio ein Klumpen kastriertes Programm wird, wenn eine ganz normale Ausnahme beim Parsen des XAML ausgelöst wird.

Code, der dieses Problem verursacht (zumindest bei mir)

Dies ist die Basis-Vorlage WPF-Anwendung, mit den folgenden Window.xaml Code. Das Problem ist eine fehlende Value="True" über die <DataTrigger ...> in der Vorlage. Sie erzeugt eine XamlParseException und Visual Studio stürzt wie oben beschrieben ab, wenn es debuggt wird.

<Window x:Class="XamlParseExplosion.MainWindow"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Title="MainWindow" Height="350" Width="525">
  <Window.Resources>
   <DataTemplate x:Key="BankListItemTemplate">
    <Border x:Name="ItemBorder" Width="250" Margin="1" BorderBrush="Blue" BorderThickness="5,0,0,0">
     <Grid>
      <Label Content="{Binding Name}" />
     </Grid>
    </Border>
    <DataTemplate.Triggers>
     <DataTrigger Binding="{Binding IsDirty}">
      <Setter TargetName="ItemBorder" Property="BorderBrush" Value="Red" />
     </DataTrigger>
    </DataTemplate.Triggers>
   </DataTemplate>
  </Window.Resources>
  <Grid>
   <ListView ItemTemplate="{StaticResource BankListItemTemplate}" />
  </Grid>
 </Window>

Abschließende Anmerkungen

Die folgenden Lösungen hat nicht helfen Sie mir:

  1. Neustart von Visual Studio
  2. Neustart
  3. Neuinstallation von Visual Studio
  4. Deaktivieren von Add-Ins wie ReSharper und Reflector

Update (viel später) mit Antwort

Ich möchte noch etwas hinzufügen (als Pseudo-Antwort), weil ich später noch mehr Informationen darüber herausgefunden habe, die ich an Leute weitergeben möchte, die diese Frage in Google finden.

Das wahre Problem: XamlParseException wurde in Debug -> Ausnahmen ausgewählt, um zu unterbrechen, wenn es auftritt, da dies während der WPF-Verdrahtung geschieht, kann vstudio es nicht richtig abfangen (normalerweise würde es ein paar Ebenen tiefer fallen und dort behandelt werden, wo vstudio es behandeln könnte).

Schalten Sie es einfach aus und das Leben ist wieder gut.

Ich wollte dies nicht als Antwort setzen, weil die Antwort von mazelo auch richtig war, wenn vstudio als Administrator ausgeführt wird, scheint es in der Lage zu sein, die Ausnahme ordnungsgemäß abzufangen und von dort aus zu debuggen, also wollte ich seinen beantworteten Status nicht wegnehmen, weil seine Lösung funktioniert.

2voto

GMG Punkte 21

Ich hatte gerade ein ähnliches Problem und die oben aufgeführten Antworten haben bei mir nicht funktioniert. Ich werde meine Lösung hier posten, falls dies auch anderen passiert. Ich hatte ein Fenster, das einige verdächtige xaml enthielt, die, als ich versuchte, die Fenster-Registerkarte in VS zu öffnen, es jedes Mal zum Absturz brachte. Toll, wenn man da rein will, um den schlechten Code zu löschen! Einfache Lösung: Öffnen Sie die xaml-Datei in Notepad, löschen Sie den fehlerhaften Code, und erstellen Sie sie dann in VS neu. Einfach, aber bei mir hat es funktioniert.

1voto

Indy9000 Punkte 8404

Es stürzt wahrscheinlich bei der Initialisierung eines eingebetteten UserControls ab. Schauen Sie sich an, wie die DependencyProperties dieses Steuerelements behandelt werden.

1voto

mazelo Punkte 86

Ich hatte ein ähnliches Problem. Nach Stunden kam ich auf die Idee, Visual Studio als Administrator zu starten. Das Problem ist behoben, aber ich weiß immer noch nicht, warum.

0voto

AMissico Punkte 21179

Dinge zum Probieren:

  • Deaktivieren Sie den "Ausnahme-Assistenten" unter den Debugging-Optionen.
  • Deaktivieren Sie "Visual Studio-Hosting-Prozess" in den Debug-Eigenschaften des Projekts.

Unterscheidet sich das Verhalten, wenn Sie "Unterbrechung bei CLR-Ausnahmen" im Dialogfeld Ausnahmen (Strg+Umschalt+E) aktivieren und deaktivieren Sie "Aktivieren Sie nur meinen Code..."?

0voto

Tomas Voracek Punkte 5801

Etwas Ähnliches passierte mir in einer aspx-Datei, einem Projekt auf MOSS. Es gab eine einzige Zeile, die VS Absturz jedes Mal verursacht wurde. Ich fand heraus, dass die einzige Lösung war, Zeile zu entfernen und fügen Sie es nur, wenn die Datei nicht in VS geöffnet wurde.

Haben Sie das Dateiformat überprüft, d.h. ist es die richtige Unicode/Ansi/etc-Datei? Prüfen Sie es auf binärer Ebene.

Versuchen Sie, öffnen Sie neue WPF-Projekt, Vergangenheit XAML (kein Codebehind) und sehen, ob es immer noch abstürzt. Try-catch um Initialize wird nicht helfen?

Bearbeiten: Ich habe XAML versucht Sie gepostet, kein Fehler. Dieselbe Version von VS.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X