2010-09-23 7 views
8

Sonderbare Problem zeigt, begann mit der Migration zu Visual Studio 2010.VS Designer ersetzt „leer“ Strings mit Resource Identifier zu leeren Saiten

Einige Formen, wenn sie geöffnet werden, werden einige Eigenschaften auf eine Zeichenfolge gesetzt Objekte, die ist leer in Ressourcendatei. Meistens sind dies Steuereigenschaften wie ImageKey, ToolTipText und für UltraGrid werden einige Spalten columnX.Header.Caption auf diese Zeichenfolge gesetzt. Dies wird offensichtlich gesetzte Bilder entfernen und falsche Spaltenkopftexte in anderen Gebietsschemata geben. Außerdem werden Tooltips an seltsamen Stellen angezeigt (wie im Tab-Panel).

Diese Zeichenfolge (strSaveInterestDetails8 unten) ist in Strings.resx (<value />) leer, in Strings.fi.resx jedoch nicht leer. Wenn ich diese Zeichenfolge änderte, um ein Leerzeichen zu haben, begann Designer, eine andere "leere" Zeichenkette von Strings.resx zu verwenden.

Diese Formulare sind alle von der gemeinsamen Basis abgeleitet, aber es hat nichts besonderes/verdächtiges. Das Debuggen dieser zusätzlichen Devenv-Instanz ist fehlgeschlagen, da der Debugger nie an den gesetzten Haltepunkten abgebrochen wurde (ausgelöste Ausnahmen im internen VS-Code wurden abgefangen).

Beispiel:

ultraGridColumn23.Header.Caption = global::Company.Module.Properties.Strings.strSaveInterestDetails8; 
... 
this._timespanCheck.ImageKey = global::Company.Module.Properties.Strings.strSaveInterestDetails8; 
... 
this.tabPage1.ImageKey = global::Company.Module.Properties.Strings.strSaveInterestDetails8; 
this.tabPage1.ToolTipText = global::Company.Module.Properties.Strings.strSaveInterestDetails8; 

So jemand laufen in etwas hat ähnliche oder hat eine bessere Google-fu?

+0

Was sieht der ursprüngliche Code wie? Verwenden Sie "" oder "string.Empty"? – Oded

+0

Bisher wurden sie überhaupt nicht gesetzt (mindestens ImageKey/ToolTipText). –

+0

Es ist mir auch passiert, in meinem Fall hatte ich die leeren Zeichenfolgen entfernt (und VS gezwungen, die Änderung zu identifizieren). Könnten Sie die leeren Strings entfernen oder sie nicht leer machen? –

Antwort

0

Ich denke, this will work für Sie. Überprüfen Sie die akzeptierte Lösung.

Oder vielleicht this.

+1

Dies ist in diesem Fall nicht relevant. Anwendung hat mehrere hundert Formen. Eine vollständige Migration zu einer anderen Art von Lokalisierung ist höchst unwahrscheinlich. –

2

Ich habe das gleiche Problem, aber mit VS2008. Eine VS2010 Web Developer Express-Version ist jedoch auch auf meinem System installiert (seit ein paar Monaten). Zuerst entwickelte ich ein Projekt, das mehrere Sprachressourcen verwendet, und dann öffnete ich eine andere VS-Lösung, um etwas auf einem Formular zu ändern. Der Windows Form Designer ersetzte alle leeren Zeichenfolgen in der Designer.vb-Datei durch eine Zeichenfolge-Ressource-Kennung aus dem ersten Projekt!
Ich konnte das Problem durch das Schließen von Visual Studio lösen und die Lösung wieder aufzunehmen.

2

Unserer Erfahrung nach ist dies in der Regel ein durch das Vorhandensein der Textzeichenfolge verursachten Fehler < Wert/> in der XML-Datei einer resx. Wenn Sie den Formular-Designer bearbeiten und speichern, werden alle leeren Zeichenfolgen in der Designer-Datei dem Schlüssel zugeordnet, der diesem selbstbeendenden Knoten zugeordnet ist.

Arbeiten unechte < Wert/> Einträge manchmal angezeigt, wenn Sie ein Projekt beginnen den Bau, während die Ressourcen-Editor noch hat den blinkenden Cursor in der ‚neuen Zeile‘ Linie bekommt, und es gibt keinen Text mit dem Schlüssel zugeordnet ist.

Durchsuchen Sie das Projekt für < Wert/> und beseitigen Sie sie aus den Resx-Dateien. Dann sauber und das Projekt neu, (was fehlschlagen wird), dann beheben Sie die Kompilierung-Fehler, indem sie mit „“

Hoffnung zu ersetzen, das hilft.

+0

Das ist interessant. Werde versuchen (später), danke! –

Verwandte Themen