【WP7】关于Build Action
WP7关于资源属性的 Build Action 属性有多种
None:此文件将被忽略不参与编译和输出
Compile:文件将被编译为Microsoft 中间语言(IL),如文件扩展名为cs的文件
Content:文件将会打包进xap文件当中,以独立文件使用
Page:在WP当中,xaml页面文件都属于Page,除App.xaml文件外
Resource:文件将被编译到xap文件包的.dll文件内
一般我们都使用 Content 和 Resources 两种属性
对于Content 的引用,由于资源文件是以单独的文件打包到xap文件中,所以直接引用路径即可,
Uri uri = new Uri("/Image/img.png", UriKind.Relative);
而 Resources 是把资源文件编译到dll中,引用的时候需要加上程序集
Uri uri = new Uri("/PhoneApp1;component/Image/img.png", UriKind.Relative);
把应用程序资源转化为流(设置成Content资源的流文件)
Uri uri1 = new Uri("Image/img.png", UriKind.Relative); //注意,路径前面不能有斜杠'/'
Uri uri = new Uri("/PhoneApp1;component/Image/img.png", UriKind.Relative);
Stream = Application.GetResourceStream(uri1);
Stream = Application.GetResourceStream(uri2);
据说很多类型的Content资源无法通过 Application.GetResourceStream 方法来访问,只有部分类型支持
Content类型的文件也可以通过XNA框架类来引用
Stream stream = Microsoft.Xna.Framework.TitleContainer.OpenStream("Image/img.png");
最后是什么时候使用Content 什么时候使用 Resources
一般情况下都把资源文件的生成操作设置成 Content ,例如:Image,media,XML file
使用”Content”要比“Resource”性能上好一些。因为Windows Phone 7是为文件和网络流做了优化处理,但是Memory流却没有。设置成Content类型,这些文件将会作为独立的文件存在xap包中,如果设置为resource,他们会被编译到dll中。如果把这些文件设置为Resource方式的话,它们实际上在回放的时候还需要读取出来放到文件中,反而降低了性能。所以,如果你的程序中有大量的媒体文件的话,要想性能好,还是把它们的BuildAction设置为“Content”比较好一些。
如果不用到透明的图片,用 Jpg 代替 Png 格式,因为Jpg格式的图片速度更快
参考阅读:http://msdn.microsoft.com/en-us/library/ff967560(v=VS.92).aspx#BKMK_Images