一起谈.NET技术,Silverlight 资源的使用

我们在Silverlight 项目中,新加一个文件,比如一个图片文件,这个文件的属性会有下面2个选项,这两个选项决定了这个图片资源如何存储,如何使用。

先说简单的,资源文件的 Copy to OutPut Directory 属性, 这个属性有如下三个选项:

他们都是在程序编译或者部署时,判断此资源文件是否要同步用的。

Do not copy 不做数据同步
Copy always 每次都会被同步过去
Copy if newer 当有新版本存在时,才会被同步过去

Build Action 属性则复杂多了, 下面是VS2010中, Silverlight 4 项目资源文件的Build Action 属性截图。

注意,上面罗列了一些不适合资源文件的 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图片相对路径的设置

http://www.cnblogs.com/yangfan/archive/2009/12/14/1623647.html

关于Silverlight资源文件(如:图片)的放置位置及其引用(相对路径)

http://www.cnblogs.com/star250/archive/2009/10/15/1583665.html

Silverlight资源文件

http://msdn.microsoft.com/zh-cn/library/cc296240(VS.95).aspx

图片等资源的引用路径问题

http://www.cnblogs.com/kevinyang/archive/2008/11/16/1334712.html

时间: 2024-11-10 11:03:39

一起谈.NET技术,Silverlight 资源的使用的相关文章

水晶报表 10 Java 支持概览及技术白皮书资源

目录 ●简化并加速了 JSP 中的数据展现●BEA WebLogic Workshop 8.1 内嵌版水晶报表●Borland JBuilder 内嵌版水晶报表●内嵌版本水晶报表的关键特性●水晶报表 10 - 具有更加丰富 Java 技术特性的升级版本●Java 社区●技术白皮书资源 简化并加速了 JSP 中的数据展现 水晶报表的 Java 支持有助于简化并加速 - 访问,格式化,并将数据集成进 JavaServer Pages (JSP) 的过程.在 BEA WebLogic Workshop

《创业家》牛文文:少谈点模式多谈点技术

"模式"如同当年的"主义",流行于各种创业大赛.创业励志节目.论坛的"街头"式秀场 文/创业家 牛文文 "美国某某公司你知道吧?就是刚被戴尔.惠普.思科十几亿美元抢购的那家.我们的模式和它的一样,现在还没赢利,可将来起码有十几亿人民币的市值." "我开了小煤矿,但煤运不出去,上商学院之后受到启发,想搞模式创新,具体讲就是想在铁路边上搞个煤炭物流开发区,建一个大的物流和信息流平台,把分散的煤炭集中在我这个园区,这样和铁

一起谈.NET技术,Expression Blend实例中文教程(2) - 界面快速入门

上一篇主要介绍Expression系列产品,另外概述了Blend的强大功能,本篇将用Blend 3创建一个新Silverlight项目,通过创建的过程,对Blend进行快速入门学习. 在开始使用Blend前,首先需要进行Silverlight的开发环境搭建,在银光中国网(SilverlightChina.Net)有篇"轻松建立Silverlight开发环境",其中列出了建立Silverlight开发环境的几个步骤,另外,我在过去发布过一篇"Silverlight开发工具集合&

Silverlight 资源的使用

我们在Silverlight 项目中,新加一个文件,比如一个图片文件,这个文件的属性会有下面2个选项,这两个选项决定了这个图片资源如何存储,如何使用. 先说简单的,资源文件的 Copy to OutPut Directory 属性, 这个属性有如下三个选项: 他们都是在程序编译或者部署时,判断此资源文件是否要同步用的. Do not copy 不做数据同步 Copy always 每次都会被同步过去 Copy if newer 当有新版本存在时,才会被同步过去 Build Action 属性则复

甲骨文推出全面最新的Oracle云合作伙伴计划和技术支持资源

甲骨文全球大会,2012年10月3日--甲骨文公司推出一套全面最新的Oracle云(Oracle Cloud)合作伙伴计划和技术支持资源,以帮助合作伙伴凭借新推出的云服务及解决方案加速产品上市,同时为其客户创造更多价值. Oracle云打破了传统的云及业务流程孤岛,以订购模式提供一套全面的,可以访问Oracle平台.应用及社交服务的集成服务. Oracle云以Oracle Exadata数据库云服务器和Oracle Exalogic中间件云服务器为动力,为客户和合作伙伴搭建且运行关键业务应用提供

一起谈.NET技术,案例分析:Silverlight在中国人寿的应用

笔者自2003年首次听到Macromedia公司提起RIA(富互联网应用)一词到现在整整7年了.一度被认为是互联网应用趋势的RIA经历了7年之痒,但仍然没有在互联网上得到大规模普及,特别是企业应用就更加少见.做个不恰当的比喻,传统基于Html的应用就像互联网应用中的绿叶一样,而RIA技术由于酷炫的用户体验效果就像是美丽的花朵.现在开心网和腾讯QQ等商业应用中已经运用了RIA技术在其社交网站中得到应用,但这毕竟还是少数,大多数互联网应用特别是企业级应用仍然选择传统高稳定性与高响应能力的Html应用

一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(二)纸娃娃系统

纸娃娃系统,或许大家听起来并不陌生.早在十几年前,当时不论是文字游戏"泥巴(Mud)"或是交友.社交网站,我们只能通过屏幕上的文字来传达与交互信息:随着技术不断进步,2D/3D图形技术高速崛起,通过在基础模型上由客户随意挑选.任意更换各种造型(素材),即可打造出真正属于"自我"独特风格的网络虚拟形象,QQ秀便是我们耳熟能详的代表,更贴近真实的如(RPG)游戏及虚拟现实中的换装/换肤系统同样亦得益于纸娃娃机制. 本节,我将向大家讲解如何最好的实现Silverlight

一起谈.NET技术,Silverlight开发廋身攻略(一)

相信大家在用Silverlight做应用开发时,随着项目的进展系统功能越来越多,肯定为Xap包越来越大而烦恼,Xap包的大小直接影响应用程序的加载速度,给用户造成不良的用户体验.我也曾为这个问题头痛过,经过在网上查阅资料和项目实践发现可通过以下三种方式给Silverlight应用程廋身. 1.定期检查系统项目模块的引用集,移除多余的引用库 2.图片资源文件,如果不是必须放在资源中的,可以采用按需加载 3.将系统划分成多个Silverlight项目,然后根据需要进行Xap加载 下面我将结合实例来对

一起谈.NET技术,保护您的 Silverlight 应用程序的安全

      作为一名 Microsoft 服务顾问,我定期与客户和合作伙伴一起进行应用程序安全性讨论. 在本文中,我将介绍一些在这些讨论中提出的主题. 特别是,我将重点介绍编程人员在尝试保护 Silverlight 应用程序的安全时所面临的新挑战,而且我将考虑开发团队应该将其资源集中于哪些方面. 本文提到了许多技术概念,您可以在其他位置(包括本杂志)找到这些概念的更多详细信息. 因此,我就不在技术层面更加深入地讨论这些主题. 本文的目标是"理清头绪"并介绍如何利用这些概念保护您的应用程