防止 Visual Studio 将图像序列化为 resx 文件

问题描述

我设计了一个用户控件,上面有一个图片框。我希望图片框的图像来自我存储图像的项目中的单独 dll。我可以手动进入 Designer.cs 并设置 this.pictureBox1.Image = global::(Name of my dll).Properties.Resources.imageName; 以产生我想要的效果。困难在于,每当我执行某些导致 Designer.cs 重新生成的操作时,Visual Studio 都会坚持获取该图像并将其序列化到控件的 resx 文件中,然后将引用替换为 this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));

我尝试使用 DesignerSerializationVisibility 及其三个设置。我似乎能做的就是完全阻止 Visual Studio 包含 Image 属性,这会导致我的控件在运行时出现故障。

我曾考虑设计自定义 CodeDomSerializer,但目前还没有取得任何成功。

有什么办法可以让 Visual Studio 保持该属性不变,不要更改它?

解决方法

对于那些愿意花时间考虑此项目或将来可能访问此项目的人,我已经找到了解决方案。在我之前有人设置了这个,所以我不知道他们做了什么。

因此,我们的目标是拥有一个包含图像的 dll,当/如果这些图像发生更改时,您只需更换 dll,其他项目中的各种控件将在运行时通过简单地替换自动获取这些更改那个单独的 dll。

该方法需要建立一个只有图像资源的项目。然后将 resx 文件从该项目链接(而不是复制)到正在使用它的其他文件。然后,一旦您将 global:: 引用放入 Designer.cs,它们就会留在那里,不受 Visual Studio 的干扰。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...