Dotnet中嵌入资源(位图、图标或光标等)有两种方式,一是直接把资源文件加入到项目,作为嵌入资源,在代码中通过Assembly的GetManifestResourceStream方法获取资源的Stream。另一种方法是在项目中加入. resx资源文件,在资源文件中添加资源,由ResourceManager类统一管理其中的资源。
下面分别详述这两种方法
一、使用GetManifestResourceStream读取嵌入资源
1、加入资源文件
直接把要嵌入到程序集的资源文件加入到项目中,可以加在项目的根目录,可以加在项目的任何目录中。
2、设置资源文件的“BuildAction”属性
将嵌入资源文件的“BuildAction”属性设置为“Embedded Resource”
3、代码中使用嵌入资源
//获得正在运行类所在的名称空间
Type type = MethodBase.GetCurrentMethod().DeclaringType;
string _namespace = type.Namespace;
//获得当前运行的Assembly
Assembly _assembly = Assembly.GetExecutingAssembly();
//根据名称空间和文件名生成资源名称
string resourceName = _namespace + ".directory.BitmapManifest.bmp";
//根据资源名称从Assembly中获取此资源的Stream
Stream stream = _assembly.GetManifestResourceStream(resourceName);
Image myImage = Image.FromStream(stream);
注意资源名称的组成规则:
项目默认名称空间.资源在项目中所在目录.资源文件名
上面代码中BitmapManifest.bmp位图就在项目的directory目录下。如果资源文件直接在项目根目录,则为项目默认名称空间.资源文件名
再给一个xml资源的例子:
//获得正在运行类所在的名称空间
Type type = MethodBase.GetCurrentMethod().DeclaringType;
string _namespace = type.Namespace;
//获得当前运行的Assembly
Assembly _assembly = Assembly.GetExecutingAssembly();
//根据名称空间和文件名生成资源名称
string resourceName = _namespace + ".XMLFileTest.xml";
//根据资源名称从Assembly中获取此资源的Stream
Stream stream = _assembly.GetManifestResourceStream(resourceName);
XmlDocument xmlDoc = null;
xmlDoc = new XmlDocument();
xmlDoc.Load(stream);










