我们可能会将不同模块的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包并清理了痕迹,这个包已经可供代码下载了到客户端本地了。
文章评论(0条评论)
登录后参与讨论