Laden...

Bug in Visual Studio 2012: Invalid Resx file - Wie umgehen?

Erstellt von hypersurf vor 10 Jahren Letzter Beitrag vor 10 Jahren 3.337 Views
H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 10 Jahren
Bug in Visual Studio 2012: Invalid Resx file - Wie umgehen?

Hi Leute,

ich arbeite in meinem Projekt mit relativ vielen UserControls. Halt Controls/Views die mehrmals verwendet werden. Teilweise sind in den UserControls auch wieder andere UserControls enthalten (z. B. modifizierte Comboboxen).

Recht häufig bekomme ich folgenden Fehler (beim Erstellen des Builds), obwohl ich meistens gar nichts in dem entsprechenden UserControl oder dessen Basisklasse geändert habe (so wie gerade eben):

Fehlermeldung:
Error 2 Invalid Resx file. Could not load type System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[XXXXXXX, XXXXXXXXX, Version=0.5.0.2, Culture=neutral, PublicKeyToken=96036d4381770532]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 which is used in the .RESX file. Ensure that the necessary references have been added to your project. Line 205, position 5. D:\XXXXXX\Source\XXXXXXXXX\MainApp\Views\Dateizuordnungen\XXX_ViewStandardDateizuordnung.resx 205 5 XXXXXXXXXXXXXXXXXXXXXX

Wenn ich das UserControl dann im Designer öffnen möchte, kommt dieses nette Fenster mit der Überschrift > Fehlermeldung:

To prevent possible data loss before loading the designer, the following errors must be resolved:..........

Im Fehlertext meckert er irgendwelche Klassen an, die angeblich nicht im Projekt enthalten sind. Diese sind aber alle vorhanden und vollkommen funktionsfähig.

Ich habe verschiedene Lösungen bei google gefunden oder teilweise einfach die betroffene Datei aus meiner letzten Sicherung zurückgesichert, aber das ist kein Dauerzustand.

Habt' Ihr Erfahrung mit diesem Bug und wisst vielleicht sogar wie es zu dem Fehler kommt? Ich bin ganz nah dran wieder auf Visual Studio 2010 zurückzugehen, wenn der Fehler weiterhin ständig kommt... Das kann ja nicht Sinn der Sache sein.

Mein Visual Studio 2012 Pro ist auf dem aktuellsten Patch-Stand.

Gruß hypersurf

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo hypersurf,

VS hat definitiv ein Problem mit verschachtelten UserControls etc. Irgendwann wirds einfach zuviel für den Designer. Was passiert, wenn du die Datei mal ohne Designer aufmachst?

Nebenbei: Lass den Designer ganz weg.
Erstens: Musst du bei MVVM sowieso irgendwann dein Binding im xaml gestalten. Somit suchst du dein Control, so schön es im Designer aussieht, irgendwann im Xaml. Also gehst du das XAML sowieso durch.
Zweitens: Lernt man XAML und DataBinding im UI so besser.
Drittens: Schreibt man schöneren Xaml-Code. Einfach weil man es dann fast muss 😉

Also: Kommen die gleichen Fehler, wenn du die resx/xaml-File mit einem Text Editor ("with Encoding" oder ähnlich) öffnest?

Gruss

Coffeebean

H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 10 Jahren

Hi Coffeebean,

danke für Deine Antwort. Ich hatte leider vergessen zu schreiben, dass es sich um ein Windows-Forms-Projekt handelt. Das Problem ist, dass sich das Projekt nicht mehr starten lässt, sobald dieser Fehler auftritt.

Gestern Abend hatte ich diesen Fehler zweimal. Hab' die betroffenen Dateien dann zurückgesichert und danach lief es wieder... Ist aber einfach mega nervig und ziemlich zeitraubend dieser Bug..

U
1.688 Beiträge seit 2007
vor 10 Jahren

Hallo,

.resx Dateien sind xml-Dateien. Vergleich doch mal mit der Versionsverwaltung, wann sich was ändert.

H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 10 Jahren

Werde ich beim nächsten Auftreten des Fehlers mal machen.

Vielleicht kann man Visual Studio auch irgendwie dazu bringen, das resx-File neu zu generieren...

4.221 Beiträge seit 2005
vor 10 Jahren

VisualStudio schliessen und neu aufmachen löst solche Fehler meistens (jedenfalls bei mir).

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

2.298 Beiträge seit 2010
vor 10 Jahren

Falls der Ansatz von Programmierhans nicht funktioniert, kannst du das Projekt auch einmal bereinigen und anschließend das VS neustarten.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 10 Jahren

Das hab' ich bisher immer probiert (Neustarten, Bereinigen und Neustarten), hat aber nie geholfen. Beim nächsten Mal werde ich den XML-Code mal vergleichen.

M
24 Beiträge seit 2006
vor 10 Jahren

Hallo hypersurf,
hört sich entfernt nach einem Problem an, das auch in VS2008 und VS2010 existiert.

Kommt vor, wenn man 32 Bit-Programm unter 64 Bit-Windows bauen will.

ResGen.exe error: An attempt was made to load a program with an incorrect format

Wir haben dieses Problem mehrfach und keinen Hinweis, warum es manchmal vorkommt und manchmal nicht.

MS hat dies als Bug bestätigt und es sollte eigentlich in späteren VS als 2010 gefixt werden, aber wer weiss...?

Unser Workaround ist in dem Link beschrieben: Umstellen der Toolchain auf 32 Bit (betrifft v.a. die Modifikation von resgen.exe und Setzen der Umgebungsvariable)

Vielleicht hilfts.

H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 10 Jahren

Hallo manfred.baur,

danke für Deine Antwort. Genau das ist der Fall, ich erstelle eine 32-Bit-Anwendung unter Win8 64-Bit. Dann werd' ich den Bug wohl morgen mal an MS melden..

Danke für den Hinweis mit dem Workaround.

H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 10 Jahren

Gerade hatte ich das Problem wieder. Neues UserControl erstellt, eingefügt, zack... wieder dieser Fehler. Zum Ausflippen... :evil:

Die UserControls enthalten zum Teil öffentliche Member die als Typ selbstgeschriebene Klassen haben. Ich habe jetzt in allen UserControls vor diese Member folgendes Attribut gesetzt:


[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

Dadurch serialisiert VS diese Eigenschaften nicht mehr und der Fehler ist verschwunden...