设计师强制将资源嵌入表单中,而不是使用Resources.resx文件?

3
这个问题让我很纠结!我会尽可能简洁地解释。
总体来说,虽然项目正常运行且代码看起来不错,但每当我编辑和构建某些表单时,Visual Studio以一种非常不理想的方式重新编写*.Designer.cs文件。
我相当肯定这些*.Designer.cs文件过去没有被编辑过(特别是自动生成的部分)。
更详细地说,我们的项目使用自定义控件,其中一些继承自PictureBox。在这些控件存在的表单上,如果查看*.Designer.cs文件,要么看到Image属性未设置,要么Image属性指向存储在项目resx文件中的图像,这都很好。
this.customButton.Image = global::MyProject.Properties.Resources.buttonImage;

然而,如果我只是通过在表单上拖动另一个控件(将另一个按钮拖到表单上)来修改此表单,并构建项目,则Visual Studio会广泛编辑MyForm.Designer.csMyForm.resx文件,即使对于未被触及的表单上现有控件也是如此。它似乎将所有控件所需的图像嵌入MyForm.resx文件中,然后在MyForm.Designer.cs中引用它们,如下所示:
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MyForm));
this.customButton.Image = ((System.Drawing.Image)(resources.GetObject("customButton.Image")));

这显然不是我想要的。为什么 Visual Studio 现在希望表单使用本地资源,而不像之前修改表单时那样使用嵌入在项目的 Resources.resx 文件中的资源呢?如果我进入设计器,查看 customButton 的属性,并尝试将 Image 属性设置为项目资源文件中的图像,则可以允许它,但下一次点击后,它会立即恢复到嵌入在 MyForm.resx 中的本地引用。
您有任何想法为什么会发生这种情况吗?
1个回答

3
我通过另一个问题的帮助解决了这个问题。
基本上,尽管我看到过几个建议将应用程序的资源集中在单个程序集中,但这似乎是一个不好的选择。VS设计器不喜欢访问当前程序集外部的资源,虽然它可以这样做,但它也会通过嵌入这些资源来更改您的代码以将其带入当前程序集,从而破坏将资源保留在单个程序集中的努力。
我基本上不得不回到将资源保存在使用它们的程序集中的做法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接