如何使用多个项目管理解决方案中的图标?

时间:2011-04-12 10:02:33

标签: c# .net visual-studio-2008 user-interface

我的解决方案中有五个项目。他们每个人都使用一些图标(其中许多图标在不同的项目中是相同的),我想将它们存储在一个地方。

我尝试使用单独的项目来存储图标,但我得到了惨败......

当我使用其他项目中的图标(包含所有图标的项目)时,Visual Studio会自动将此图标复制到form.resx文件中。

说明: 首先,我无法将图标(来自其他项目)附加到button的{​​{1}}。因此,我必须转到designer并手动将图标附加到按钮。完成这些操作后,VS重建了form.designer.cs中自动生成的部分,用自己的代码替换了我的代码,并将图标复制到form.designer.cs文件。

form.resx

您可以看到图像已复制到本地项目中的资源。在这种情况下,更改按钮的图像不足以仅替换共享项目中的图像(compilation.png)。我需要在它使用的每种形式中替换它。

问题:如何管理解决方案中的图标以避免重复和这么大的不便?

2 个答案:

答案 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中,您将看到图像链接,将操作设置为无   - 将图像添加到项目资源部分。