VS Designer使用指向空字符串的资源标识符替换“空”字符串

时间:2010-09-23 10:42:42

标签: c# visual-studio-2010 designer

奇怪的问题,从迁移到Visual Studio 2010开始。

某些表单在打开时会将某些对象的属性设置为资源文件中为空的字符串。通常这些是控件属性,如ImageKeyToolTipText,对于UltraGrid,某些列将columnX.Header.Caption设置为该字符串。这显然会删除设置图像并在其他语言环境中提供错误的列标题文本。此外,工具提示将显示在奇怪的地方(如标签面板主体)。

此字符串(下面的strSaveInterestDetails8)在Strings.resx(<value />)中为空,但在Strings.fi.resx中不为空。当我改变这个字符串以获得空格时,设计师开始使用Strings.resx中的其他“空”字符串..

这些表格都来自共同基础,但没有任何特殊/可疑的形式。从其他devenv实例调试这些失败,因为调试器从未在设置的断点上中断(内部VS代码中引发的异常被捕获)。

示例:

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;

那么有没有人遇到过类似的东西或者有更好的google-fu?

4 个答案:

答案 0 :(得分:6)

这是Visual Studio中的一个长期存在的错误。微软意识到了这个问题,但仍无法解决问题。你可以在这里投票支持这个问题:

https://connect.microsoft.com/VisualStudio/feedback/details/683661/windows-forms-designer-cs-files-corrupt-after-changing-language#tabs

答案 1 :(得分:2)

我遇到了同样的问题,但VS2008。但是,我的系统上也安装了VS2010 Web Developer Express版本(几个月后)。首先,我正在开发一个使用多种语言资源的项目,然后我开辟了另一个VS解决方案来改变表单上的内容。 Windows窗体设计器使用第一个项目中的字符串资源标识符替换了Designer.vb文件中的所有空字符串!
我可以通过关闭Visual Studio并重新打开解决方案来解决问题。

答案 2 :(得分:2)

根据我们的经验,这通常是由文本字符串的存在引起的错误 &lt; value /&gt; 在resx文件的xml中。编辑和保存表单设计器时,设计器文件中的所有空字符串“”都会映射到与此自终止节点关联的键。

Theses spurious&lt; value /&gt;如果您开始构建项目时有时会出现条目,而资源编辑器仍然在“新行”行中有闪烁的光标,并且没有与该键关联的文本。

在项目中搜索&lt; value /&gt;并从resx文件中删除它们。然后清理并重建项目(将失败),然后通过用“”

替换它们来修复编译错误

希望这有帮助。

答案 3 :(得分:0)

我认为你this will work。检查已接受的解决方案。

或者this