最近一朋友问了一个问题,他想引用一个本地图片到页面上的Image控件,可是发现用Application的GetResourceStream得到的结果是个null值,当时第一个想到的就是他图片的Build Action属性值设置的不对,于是自己写了个Demo测试,
Stream sr = Application.GetResourceStream(new Uri("face.png", UriKind.Relative)).Stream; BitmapImage bi = new BitmapImage(); bi.SetSource(sr); image.Source = bi;
发现测试成功,图片正常显示,(Build Action:Content),但是在朋友那不行,设置相同,后来查看代码发现,他的项目是Class Library,把图片的Build Action:Resource就一切OK了。所以也引起了对记忆中不清楚的Build Action的值兴趣,特写此文,让自己清楚下。
Build Action 属性有多种
None:此文件将被忽略不参与编译和输出(这个可以简单理解为不要这个文件不)
Compile:文件将被编译为Microsoft 中间语言(IL),如文件扩展名为cs的文件(简单理解,代码文件都是这个类型的)
Content:文件将会打包进xap文件当中,以独立文件使用
Page:在WP当中,xaml页面文件都属于Page,除App.xaml文件外
Resource:文件将被编译到xap文件包的.dll文件内
Content和Resource的区别,Content是把资源文件打包到xap中,Resource是把资源打包到Dll中;
Content的引用:Application.GetResourceStream(new Uri("face.png", UriKind.Relative)).Stream;
Resources的引用:Application.GetResourceStream(new Uri("/DLL;component/face.png", UriKind.Relative)).Stream;