我有一个xml文件,它作为Project_A中的嵌入式资源。
我想从Project_B中获取这个引用Project_A的嵌入式资源。
(基本上Project_B包含单元测试,我用ReSharper运行它们。)
当我在使用Project_B时,是否可以访问Project_A的嵌入资源?
或者一般情况下,我可以在同一解决方案中从其他项目访问另一个项目的嵌入式资源吗?
答案 0 :(得分:6)
是的,你可以。下面是一个示例,如何在.NET Framework System.Timers.Timer.bmp
中获取嵌入式资源System.dll
:
using (Stream stream = typeof(System.Timers.Timer).Assembly.
GetManifestResourceStream("System.Timers.Timer.bmp"))
{
using (Bitmap bitmap = new Bitmap(stream))
{
//bitmap.Dump();
}
}
...或获取资源名称列表:
string[] names = typeof(System.Timers.Timer).Assembly.GetManifestResourceNames();
...只需将typeof(System.Timers.Timer)
替换为包含嵌入资源的程序集内的类型。
答案 1 :(得分:0)
Visual Studio为您的嵌入式资源自动创建的类是内部的。
无法从其他程序集访问此类。
你可以:
答案 2 :(得分:0)
您是否尝试在“表格”视图中打开嵌入式资源(双击Visual Studio中的Resources.resx文件)并更改顶部条带中的“访问修饰符”(“Strings”,“Add”资源“,”删除资源“等等”放在公共而不是内部?
答案 3 :(得分:0)
您可以使用资源编辑器将整个资源集标记为公共资源,但这是一个全有或全无的解决方案。如果没有手动编辑在每次编辑资源时都会重新生成的代码,则无法将单个字符串标记为公共。一旦对它们进行了如此标记,您只需引用其他程序集即可读取它们。几年前,我发现了这种技术,并用它使其他程序集可以看到常用的资源字符串。