一起谈.NET技术,Silverlight 资源的使用
2011-09-01 23:43
330 查看
我们在Silverlight 项目中,新加一个文件,比如一个图片文件,这个文件的属性会有下面2个选项,这两个选项决定了这个图片资源如何存储,如何使用。
先说简单的,资源文件的 Copy to OutPut Directory 属性, 这个属性有如下三个选项:
他们都是在程序编译或者部署时,判断此资源文件是否要同步用的。
Build Action 属性则复杂多了, 下面是VS2010中, Silverlight 4 项目资源文件的Build Action 属性截图。
注意,上面罗列了一些不适合资源文件的 Build Action 属性,在使用资源文件时,可以忽略这些。
参考资料:
分析silverlight里的URI引用资源文件的各种情况
http://bbs.blueidea.com/viewthread.php?tid=2941697
Silverlight图片相对路径的设置
/article/6223998.html
关于Silverlight资源文件(如:图片)的放置位置及其引用(相对路径)
/article/5189076.html
Silverlight资源文件
http://msdn.microsoft.com/zh-cn/library/cc296240(VS.95).aspx
图片等资源的引用路径问题
http://www.cnblogs.com/kevinyang/archive/2008/11/16/1334712.html
先说简单的,资源文件的 Copy to OutPut Directory 属性, 这个属性有如下三个选项:
他们都是在程序编译或者部署时,判断此资源文件是否要同步用的。
Do not copy | 不做数据同步 |
Copy always | 每次都会被同步过去 |
Copy if newer | 当有新版本存在时,才会被同步过去 |
注意,上面罗列了一些不适合资源文件的 Build Action 属性,在使用资源文件时,可以忽略这些。
None | 资源既不会被集成到程序集内,也不会打包到xap包中。不过我们可以通过设置CopyToOutputDirectory选项让其自动拷贝到xap包所在目录。 这种情况下,访问这个图片的相对Uri需要以"/"开始。 适用场景: 在大多数情况下,我们希望把video/audio文件放到xap的外面,因为这种文件一般都比较大,会影响silverlight应用的加载,而且一般的视频音频文件都是压缩格式的,放到xap中也不会起到减少他们文件大小的作用。 类似图片视频这种资源文件生成操作为None时和他们没有被添加到项目里是一样的,都可以用绝对Uri进行引用。 |
Compile | 不适合用于资源文件。 类文件要用"Compile"生成操作,就是指项目里.cs或.vb文件。 |
Content | 资源会被打包在Xap包里面。 这种情况下,访问这个图片的相对Uri需要以"/"开始。 在这种方式下,如果没有在xap中找到图片文件,那么silverlight会自动从当前xap应用所在的文件夹下来找所需图片文件, 如果还没有找到那么就触发ImageFailed事件, 这种方式比较适合在多个程序集引用相同文件时采用。 |
Embedded Resource | 这种方式会把文件嵌入到程序集中,silverlight无法通过Uri引用在xaml和c#里对这个文件进行使用,微软不建议在silverlight采用这种方式在程序集里嵌入资源。 如果有这种需求可以用 Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(string path)相关的方法得到文件的stream引用。 |
ApplicationDefinition | silverlight程序的入口xaml文件(默认就是App.xaml)应该设置为这个"应用定义"。其他文件都不适合用这个。 |
Page | 不适合用于资源文件。 所有的用户控件,页面和子窗体(usercontrol/page/childwindow)的xaml文件应该采用的生成操作。 如果改为别的方式那么会导致后台对应的代码文件无法链接到这个xaml文件。采用"Page" build action时xaml里的错误会导致工程无法正确生成。 |
CodeAnalysisDictionary | 代码分析使用,Silverlight中可以忽略 |
Resource | 资源会被打包在程序集内部。 选择这种生成方式后,该资源文件会被嵌入到该应用的程序集中,就是说打开生成的xap是看不到这个文件的。 可以用相对于当前的XAML文件的相对Uri访问, 如<Image Source="silverlight.png"/> 或是<Image Source="./silverlight.png"/>, 在子文件夹里的可以用 <Image Source=”./images/sl.jpg”/>访问到。 最保险的方式是采用特有的程序集资源URI访问,格式为 <Image Source="/{assemblyShortName};component/Foo.jpg"/>, 这种方式还可以引用到xap中的其他程序集中的图片。 这种生成方式的系统资源可以直接用Application.GetResourceStream(uri).Stream在代码里来得到。 |
SplashScreen | "SplashScreen"是这个选项是WPF的启动画面使用的。 silverlight启动加载画面是用的其他方式实现的,所以在silverlight里不要用这个方式。 |
EntityDeploy | 这个是EntityFramework采用的生成方式,在silverlight里是没用。 |
分析silverlight里的URI引用资源文件的各种情况
http://bbs.blueidea.com/viewthread.php?tid=2941697
Silverlight图片相对路径的设置
/article/6223998.html
关于Silverlight资源文件(如:图片)的放置位置及其引用(相对路径)
/article/5189076.html
Silverlight资源文件
http://msdn.microsoft.com/zh-cn/library/cc296240(VS.95).aspx
图片等资源的引用路径问题
http://www.cnblogs.com/kevinyang/archive/2008/11/16/1334712.html
相关文章推荐
- 一起谈.NET技术,使用 MEF 公开 Silverlight MVVM 应用程序中的接口
- 一起谈.NET技术,Silverlight实例教程 - Out of Browser的Debug和Notifications窗口
- 一起谈.NET技术,从原理来看Silverlight 4的架构
- 一起谈.NET技术,Silverlight发布时的优化工作(上)
- 一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(六)流光追影
- 一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(五)圣赞之HLSL渲染动画
- 一起谈.NET技术,Silverlight 游戏开发小技巧:实现街霸4的选人界面
- 一起谈.NET技术,SharePoint 2010 BI(2):使用Visio Service
- 一起谈.NET技术,.NET框架:为什么我们要尽量使用框架内建的功能,而不是重新发明
- 一起谈.NET技术,部署Silverlight及Web Service
- 一起谈.NET技术,关于C#线程,线程池和并行运算的简单使用和对比
- 一起谈.NET技术,ASP.NET中如何正确使用Session
- 一起谈.NET技术,在ASP.NET中自动合并小图片并使用CSS Sprite显示出来
- 一起谈.NET技术,一个Silverlight的网页访问计数器
- 一起谈.NET技术,在ASP.NET MVC3中使用EFCodeFirst 1.0
- 一起谈.NET技术,在.NET使用JSON作为数据交换格式
- 一起谈.NET技术,Silverlight 游戏开发小技巧:扇形排列元素
- 一起谈.NET技术,Silverlight 游戏开发小技巧:传送点特效制作
- 一起谈.NET技术,跟ASP.NET MVC一起使用jQuery
- 一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(一)序言