我想创建一个包含所有嵌入的资源项目
我在整个应用程序中需要的图标......我想选择
单击窗体的 BackgroundImage 属性时的资源
设计师。
您可以使用来自另一个程序集的资源但是不幸的是,由于下面解释的原因,您不能通过设计器来做到这一点。
在您的资源项目中添加一个带有图片框的表单并设置背景图像。这只是为了将图像添加到项目 Resouces.resx 和 Resouces.Designer.cs。将图片添加为资源后,我们可以删除带有图片框的表单。
在 Resources 项目中,转到 Resouces.Designer.cs 并将类范围更改为 Public,并将图像方法范围从 Internal 更改为 Public:
public static System.Drawing.Bitmap SO_down {
get {
object obj = ResourceManager.GetObject("SO down", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
在使用资源 DLL 的项目中,您需要将 BackGroundImages 设置为不使用自己的资源:
之前:
this.pictureBox1.BackgroundImage = global::WinFormWithSatelliteResources.Properties.Resources.SO_down;
之后:
this.pictureBox1.BackgroundImage = global::SatResources.Properties.Resources.SO_down;
在尝试解耦我的架构时应该考虑哪种架构
我的主要项目的资源?这可能不是一个聪明的主意
每次我修改一两行代码时,都会发布一个 100mb 的可执行文件。
如今,大多数企业都乐于依赖互联网。您知道如何对资源进行版本控制,例如 MyStyle22022013.CSS 和 web 浏览器如果他们已经有一个最新的副本就不会获取资源。建议我采取类似的策略,将所有这些图像资源放到网上,这样您就可以更新资源而无需打包和部署它们。
当你这样想的时候,为什么还要为一个充满资源的程序集烦恼呢?迷宫很好,只是从互联网上提取资源并从文件系统中使用它们。
如果初始互联网访问(用于下载资源)不是一个选项@jross 答案似乎完全可行。这些天来,虽然我不认为你打算在 CD 上发布这个。