2011-07-16 35 views
3

我有一个xml文件作为Project_A中的嵌入式资源。我可以在同一解决方案中访问另一个项目的嵌入式资源吗?

我想从Project_B中引用Project_A来访问此嵌入式资源。

(基本上Project_B包括单元测试,我用ReSharper的运行它们。)

是否有可能当我在Project_B工作访问Project_A的嵌入式资源?

或者一般情况下,我可以在同一解决方案中使用另一个项目中的其他项目的嵌入式资源吗?

回答

6

是的,你可以。下面是一个例子,你如何能得到嵌入的资源System.Timers.Timer.bmp内的.NET框架的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)替换为包含嵌入式资源的程序集中的类型。

0

Visual Studio为您的嵌入式资源自动创建的类是内部类。

该类无法从其他程序集访问。

您可以:

  1. 改变这一类公众(不知道您通过Visual Studio的进一步改变资源,这将站在
  2. 从一些主要的“全球回国会面临这个类“在您的Project_A中提供类,并且因此提供对其他”消费“代码的访问
+0

在VS2010#1中不起作用。添加新资源会导致资源类被重新设置为内部资源。 –

0

您是否尝试在”表“视图中打开嵌入式资源(双击Visual Studio中的Resources.resx文件)并更改顶部s中的“访问修饰符”旅行(“字符串”,“添加资源”,“移除资源”等)放置到公众而不是内部?

相关问题