我的解决方案中有五个项目。他们每个人都使用一些图标(其中许多图标在不同的项目中是相同的),我想将它们存储在一个地方。
我尝试使用单独的项目来存储图标,但我得到了惨败......
当我使用其他项目中的图标(包含所有图标的项目)时,Visual Studio会自动将此图标复制到form.resx
文件中。
说明:
首先,我无法将图标(来自其他项目)附加到button
的{{1}}。因此,我必须转到designer
并手动将图标附加到按钮。完成这些操作后,VS重建了form.designer.cs
中自动生成的部分,用自己的代码替换了我的代码,并将图标复制到form.designer.cs
文件。
form.resx
您可以看到图像已复制到本地项目中的资源。在这种情况下,更改按钮的图像不足以仅替换共享项目中的图像(compilation.png)。我需要在它使用的每种形式中替换它。
问题:如何管理解决方案中的图标以避免重复和这么大的不便?
答案 0 :(得分:1)
您可以设计一个服务项目,为您的其他项目提供图标或其他资源。你应该在你的应用程序中实现这样的界面:
public interface IResourceProvider
{
Image RetrieveIcon(string key);
//you can add other resource types here.
}
然后在新类中实现此接口,并将相关的Icon返回到传递给其方法的每个键。在这里,您需要浏览此项目的resx文件以获取所请求的图标(资源)
然后在您的应用程序中,您应该只调用您的ResourceProvider类来保护所需的资源项。
答案 1 :(得分:1)
我已经解决了完全相同的问题,但有一个限制。让我们看看两种可能性:
1)您希望能够通过使用app文件夹中的图像覆盖一个文件夹来更新所有图像 您可以使用@Farzin Zaker建议的服务。该解决方案的缺点是您必须动态设置图像到控件,在设计模式下,您将看不到具有正确图像的控件。
2)你想使用Designer
在这种情况下,您必须将这些图像添加为资源。诀窍是让VS使用指定文件夹中图像的相对路径。默认情况下,VS会将所有资源文件复制到项目资源文件夹。但是如果VS在Resources文件夹中看到“已注册”,则具有相同名称的其他文件VS存储在.resx相对于图像的路径中。所以如果你想在两个项目中添加相同的图像,你必须:
- 创建文件夹资源
- 将图像添加为现有项目(作为链接):在VS中,您将看到图像链接,将操作设置为无
- 将图像添加到项目资源部分。