Visual Studio不断更改对资源的引用

时间:2015-10-08 09:00:24

标签: c# visual-studio-2010

我对Visual Studio有一个奇怪的问题。我在C#中有一个包含大量表单的大型应用程序,还有一个包含字符串的.resx文件。我有.resx文件的各种语言版本,例如

MyApplication.resxMyApplication.ja.resx

现在拿这段代码,它引用一个windows控件(一个标签)包含在代码的控件定义部分中:

this.uxMyLabel.BackColor = System.Drawing.SystemColors.Window;
resources.ApplyResources(this.uxMyLabel, "uxMyLabel");
this.uxMyLabel.Name = "uxMyLabel";
this.uxMyLabel.ReadOnly = true;
this.uxMyLabel.Text = global::MyNamespace.MyApplication.MY_TEXT_STRING;

我会不时地构建我的应用程序,以发现最后一行已更改为

this.uxMyLabel.Text = global::MyNamespace.MyApplication_ja.MY_TEXT_STRING;

由于没有名为MyApplication_ja.resx的文件,当然构建失败,我必须编辑并将其更改回MyApplication

我不确定这种变化何时发生(我在编辑代码时?我正在构建它?)但它只是偶尔发生并且发生在很多不同的控件上,通常是整个文件时间。 (虽然从未涉及整个项目)

我正在其他地方编辑相关文件,但与该特定控件没有任何关系。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

我并不完全了解你的配置,因此我在分析为什么VS对日语具有亲和力时会感到有点限制(" ja" )本地化程序集。

但我确实看到了Form / UserControl本地化方式的问题,所以我会指出它。而且我认为坚持正确的模式可能有助于摆脱上述行为。

控件不应从this.uxMyLabel.Text = global::MyNamespace.MyApplication.MY_TEXT_STRING;等全局资源中选择值 而是必须将Form / UserControl的可本地化属性设置为true。 这将专门为Form / Usercontrol创建一个.resx文件,并将从设计器到resx取出所有特定于文化的属性(所有控件)。

这将使开发人员(或设计人员)能够在设计时为不同语言设置本地化文本。这是一个链接 - https://msdn.microsoft.com/en-us/library/y99d1cd3(v=vs.100).aspx#

了解您正在处理具有多种表单的大量应用程序,我的建议可能有点太耗费时间,因为它将涉及为所有语言再次本地化每个控件。 但是,如果您提到的问题变得很痛苦,也许您可​​以先尝试最臭名昭着的形式(用户控件)。

希望它有所帮助。