原创 Silverlight开发小技巧之三:巧用VS生成事件打包XAP

2009-11-27 10:48 3578 6 6 分类: 软件与OS
在中大型Silverlight应用中我们会考虑把产品启动必要的DLL打包进XAP放在网站的ClientBin下。这部分包其实是由浏览器管理的。

我们可能会将不同模块的DLL打包到另一个XAP包并在应用启动时动态下载并装载到AppDomian。


  这样在开发阶段就会有一个问题,我们需要手工把这些其他模块的DLL进行打包。很不方便。


  此时我们可以使用VS的生成事件并配合Chiron.exe这个工具进行自动打包。Chiron.exe是DLR中针对动态语言的XAP打包工具。


如果你安装了Silverlight Dynamic Languages SDK这个工具在C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Tools\Chiron,


如果没有安装,从这里下载http://sdlsdk.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25120


  下图是我的项目结构,其中红色的项目是要打包到另外的XAP包中的DLL


 


  我将Chiron.exe和它的配置文件Chiron.exe.config一并放在网站项目下


 


  在网站项目的生成事件中写DOS脚本


  点击看大图 


 如果目录\ClientBin\temp不存在创建之  


 if not exist $(ProjectDir)ClientBin\temp md $(ProjectDir)ClientBin\temp 


 分别拷贝三个项目的DLL,及实现写好的AppManifest.xaml 文件到上面的目录
 copy $(SolutionDir)XCenter.Framework.Public.SL\Bin\Debug\XCenter.Framework.Public.SL.dll $(ProjectDir)ClientBin\temp
 copy $(SolutionDir)XCenter.Framework.Public.SL\Bin\Debug\Csla.dll $(ProjectDir)ClientBin\temp
 copy $(SolutionDir)XCenter.QueryEngine.Public.SL\Bin\Debug\XCenter.QueryEngine.Public.SL.dll $(ProjectDir)ClientBin\temp
 copy $(SolutionDir)XCenter.QueryEngine.Client\Bin\Debug\XCenter.QueryEngine.Client.dll $(ProjectDir)ClientBin\temp
 copy $(SolutionDir)XCenter.ClientUI\AppManifest.xaml $(ProjectDir)ClientBin\temp


 用Chiron.exe打包XAP文件
 $(ProjectDir)Chiron.exe /d:$(ProjectDir)ClientBin\temp /x:$(ProjectDir)ClientBin\XCenterBusinessAttach.xap


  清理


 del $(ProjectDir)ClientBin\temp\XCenter.Framework.Public.SL.dll
 del $(ProjectDir)ClientBin\temp\Csla.dll
 del $(ProjectDir)ClientBin\temp\XCenter.QueryEngine.Public.SL.dll
 del $(ProjectDir)ClientBin\temp\XCenter.QueryEngine.Client.dll
 del $(ProjectDir)ClientBin\temp\AppManifest.xaml
 rd $(ProjectDir)ClientBin\temp


 只要编译网站,上面的脚本就会执行,需要注意的是如果以上脚本执行出错那么整个项目都会编译报错


 效果见下图,已经生成了XAP包并清理了痕迹,这个包已经可供代码下载了到客户端本地了。


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条