日期:2014-05-18  浏览次数:20879 次

怎么在bin\Debug的那个exe里打包大图片或者wmv声音文件,也就是说,只要有exe这个文件就可以播放声音,不需要读取本地文件了
怎么在bin\Debug的那个exe里打包大图片或者wmv声音文件,也就是说,只要有exe这个文件就可以播放声音,不需要读取本地文件了


------解决方案--------------------
C# 嵌入式资源 
1、手动嵌入式资源
右键工程-添加-现有项-图片或者文本
点击图片或者文本-生成操作-嵌入的资源 //这一步非常重要
这样添加的图片或者文本就打包到exe中
可以这样访问:
Assembly assembly = GetType().Assembly;
System.IO.Stream streamSmall = assembly.GetManifestResourceStream("WindowsFormsApplication1.event.jpg"); 
//当作为一个资源被嵌入后,资源的完整名称会由项目的默认命名空间与文件名组成
Bitmap BackgroundImg = new Bitmap(streamSmall);
pictureBox1.Image = BackgroundImg;

Assembly assembly = GetType().Assembly;
System.IO.Stream streamSmall = assembly.GetManifestResourceStream("WindowsFormsApplication1.NewFolder1.TextFile1.txt");
StreamReader sr = new StreamReader(streamSmall);
string text = sr.ReadToEnd();
MessageBox.Show(text);

2、手动非嵌入式资源
右键工程-添加-现有项-图片或者文本
点击图片或者文本-生成操作-内容 //如果不进行任何操作,默认就是非嵌入式资源
这样添加的图片或者文本就打包到exe中
可以这样访问:
通过绝对路径和相对路径作为外部资源访问

/////////////////////////////////////////////
3、.net提供的访问嵌入式资源

Resources.resx,Form1.resx怎么使用? //只需要添加,不用任何操作,默认就是嵌入式资源

每创建一个窗体就会自动生成一个.resx文件,可以在这个文件中加入字符串、图像、图标、文件等。 
项目编译时,生成exe文件,这些图像、图标、文件等都会被写入 exe 文件中。 

每一个窗体都有一个资源文件,并且项目有一个共用的资源文件,最好使用这个共用的资源文件,查看项目属性里,选中资源,

就可以加入自己要的资源 添加资源 - 添加现有文件,就可以反图片资源放进入。 

读取这个图片资源,如已经加入了一个 a.bmp 图像,名称是 Pic 

Bitmap bitmap = 项目的名称空间.Properties.Resources.Pic; 
这就可能用了这个资源了。 

具体的类位于,Properties目录中的 Resources.resx 文件中,打开看下就明白了。 

资源文件也可以自己创建,像创建类一个。?

这种嵌入式资源访问方式是.net内部提供的方式,与访问app.config方式类似,都是.net内部提供,当然也可以使用1自己手动创建