C#.net使用GetManifestResourceStream从程序集取得资源清单

http://blog.163.com/little_wind_585/blog/static/98205115200982910255684/


本人在制作一个网站时想要从程序集中加载一个xml文件数据,可是在运行后确取不到值,值为null。部分代码如下:

         string fileName = "server-config.xml";

         Assembly asmbly = Assembly.GetExecutingAssembly();

         Stream stream = asmbly.GetManifestResourceStream("BSP.Common." + fileName);

注:BSP.Common为程序集的命名空间名。fileName为要加载的资源清单名。(资源清单:在开发时其实就是一个文件,发布后被编辑到程序集中形成一个dll文件)

如下图:

C#.net使用GetManifestResourceStream从程序集取得资源清单_第1张图片

       资源清单所在的程序集的命名空间名为BSP.Common,我将其直接建立在其下了,所以上面的代码就用(“命名空间名”.“资源清单名”)

       若在其中的子文件夹下那么代码中就应该用(“命名空间名”.“子文件夹名”.“资源清单名”)  (此情况我没有测试过,不知是否正确)

       如上代码运行后取得的值为null,经网上查找资料,原因是虽然资源清单在当前程序集下,但是还要将其属性设置为“嵌入资源”才行。

设置如下:

       工程中右键单击资源清单文件(server-config.xml),选择属性(Properties)。

 C#.net使用GetManifestResourceStream从程序集取得资源清单_第2张图片

在弹出的属性设置框中,选择嵌入资源(Embedded Resource)

再次运行程序,资源清单正常取得。



你可能感兴趣的:(C#.net使用GetManifestResourceStream从程序集取得资源清单)