我实在不理解网上说的VS读取创建C#EXE资源是什么意思。帖自己的代码,让人家去搜吧。
using System.Reflection;
using System.Resources;
private void button1_Click(object sender, EventArgs e)
{
ResourceManager rm = new ResourceManager("ResxRead.Res", Assembly.GetExecutingAssembly());
Image img = (Image)rm.GetObject("face1");
this.pictureBox1.Image = img;
}
获取资源文件
资源文件打包好以后,下一步是把资源文件集成到项目里。方法有两个,一个是用控制台的方式编译项目,通过加载资源文件的方式把资源加载到exe里,另外一个简单很多,就是把直接把资源文件加载到工程里,vs会根据后缀名识别出来加载的文件属于资源文件,在进行编译的时候会自动把这个文件打包到资源文件里。如果编译后发现资源文件没有加到exe文件,可以设置资源文件的属性,把Build Action的属性设置为Embedded Resource。
在当前项目中读取资源:
this.Icon = Properties.Resources.exeIcon;
this.Text = Resource1.String1.ToString();//主要是字符串
资源文件成功加到exe文件后,下一步就是在程序里读取资源文件。
ResourceManager rm = new ResourceManager("Resunce.abc", this.GetType().Assembly);
byte[] bit = rm.GetObject("abc") as byte[];
通常是创建一个ResourceManager的对象,第一个参数是资源的名字,这里要注意的是“Resunce”是编译的时候,组件(命名空间)名字,“abc”是资源文件的名字。如果前面不是通过VS的工程文件进行编译,而是通过控制台方式直接编译,那么资源的名字不需要带组件的名字,只是“abc”就可以了。原因吗,我估计可能是vs在进行编译的时候,带了某些参数(确定了组件名),所以在项目读取资源文件的时候需要带组件名。