Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VisualStudio不断更改对资源的引用_C#_Visual Studio 2010 - Fatal编程技术网

C# VisualStudio不断更改对资源的引用

C# VisualStudio不断更改对资源的引用,c#,visual-studio-2010,C#,Visual Studio 2010,我对Visual Studio有一个奇怪的问题。我有一个C语言的大型应用程序,有很多表单,还有一个包含字符串的.resx文件。我有.resx文件的各种语言版本,例如 MyApplication.resx, MyApplication.ja.resx 现在看这段代码,它指的是包含在代码的控件定义部分中的windows控件(标签): this.uxMyLabel.BackColor = System.Drawing.SystemColors.Window; resources.ApplyResour

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

MyApplication.resx
MyApplication.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

我不确定这种变化是什么时候发生的(当我编辑代码时?当我构建代码时?),但这种变化只是偶尔发生的,而且发生在许多不同的控件上,通常一次发生一个完整的文件。(尽管从未涉及整个项目)

我正在其他地方编辑有问题的文件,尽管与该特定控件无关


为什么会发生这种情况?

我不完全了解您这一方的配置,因此我在分析为什么VS与日语(“ja”)本地化组件有密切关系时感到有点约束

但是我确实看到表单/用户控件本地化的方式存在问题,所以我要指出这一点。我认为坚持正确的模式可能有助于摆脱上述行为

控件不应从全局资源中拾取值,如
this.uxMyLabel.Text=global::MyNamespace.MyApplication.MY_Text_STRING
相反,Form/UserControl的Localizable属性必须设置为true。
这将专门为表单/Usercontrol创建一个.resx文件,并将从设计器到resx中取出(所有控件的)所有区域性特定属性

这将使开发人员(或设计师)能够在设计时为不同的语言设置本地化文本。这里有一个链接-

了解到您正在处理具有许多表单的大规模应用程序,我的建议可能有点太耗时,因为它将涉及对所有语言的每个控件进行再次本地化。 但是如果你提到的问题成为一个难题,也许你可以先在最臭名昭著的表单(用户控件)上尝试一下


希望能有所帮助。

我不完全了解您这边的配置,因此我在分析为什么VS与日语(“ja”)本地化组件有密切关系时感到有点约束

但是我确实看到表单/用户控件本地化的方式存在问题,所以我要指出这一点。我认为坚持正确的模式可能有助于摆脱上述行为

控件不应从全局资源中拾取值,如
this.uxMyLabel.Text=global::MyNamespace.MyApplication.MY_Text_STRING
相反,Form/UserControl的Localizable属性必须设置为true。
这将专门为表单/Usercontrol创建一个.resx文件,并将从设计器到resx中取出(所有控件的)所有区域性特定属性

这将使开发人员(或设计师)能够在设计时为不同的语言设置本地化文本。这里有一个链接-

了解到您正在处理具有许多表单的大规模应用程序,我的建议可能有点太耗时,因为它将涉及对所有语言的每个控件进行再次本地化。 但是如果你提到的问题成为一个难题,也许你可以先在最臭名昭著的表单(用户控件)上尝试一下


希望有帮助。

不要编辑由设计器生成的代码。只要对设计做一点小的更改,您所做的任何更改都将丢失。如果设计器代码解析器真的可以利用您的更改,则会产生不可预测的结果。该语句属于InitializeComponent()调用之后的构造函数。@HansPassant我没有太多选择。。。如果我不确定它的相关性,应用程序将无法构建。我问的是我观察到的问题/症状,并问它为什么会发生。我从来没有说过这是一个解决方案,这是一个绕过原始问题的解决办法,这正是我所问的。不要编辑设计师生成的代码。只要对设计做一点小的更改,您所做的任何更改都将丢失。如果设计器代码解析器真的可以利用您的更改,则会产生不可预测的结果。该语句属于InitializeComponent()调用之后的构造函数。@HansPassant我没有太多选择。。。如果我不确定它的相关性,应用程序将无法构建。我在问我所观察到的问题/症状,并问它为什么会发生。我从来没有说过这是一个解决方案,这是一个绕过原始问题的解决办法,这就是我所问的。