VS2010构建脚本以将DLL打包到MSI并在GAC中注册

Dr.*_*ABT 6 .net c# deployment silverlight visual-studio-2010

我需要跨多个平台打包和发布.NET控件库,并且有关于如何通过构建脚本和VS2010配置自动化此部署(或尽可能高效)的问题.

控件库将作为Silverlight版本(SL 3.0,4.0,5.0的单独版本)和WPF版本(.NET3.5/.NET4.0的单独版本)发布.我还需要指定相同库的发行版和试用版.试用版将在代码中与预处理程序语句TRIAL区分开来.试用版和完整版都将以RELEASE模式编译.

我想知道如何以最有效的方式实现这一目标.我的VS2010解决方案目前有一个WPF(.NET 4.0)项目和一个SL(SL 4.0)项目.

  • 我是否需要为缺少的版本创建更多的csproj项目,例如.NET 3.5和SL 3.0和5.0?
  • 我希望为所有Silverlight DLL创建一个MSI,为所有WPF dll创建一个MSI.我是否需要为编译为试用的版本创建更多MSI?对于每个版本的.NET或Silverlight框架,单独的MSI怎么样?
  • 是否可以使用build.targets或构建脚本实现上述部署包装?

基本上,如果我为所有上述组合手动创建MSI并执行可以正常工作的完全重建,但在发布更新时也是一个费力的过程.我正在寻找有关如何使用构建脚本,build.targets,MSI配置或上述组合实现此目的的建议.

最后,在重新分发控制库时,理想情况下安装应该在GAC中进行注册.

欢迎提出任何意见/建议.

最好的祝福,

Dr.*_*ABT 0

为了后代的缘故,我正在记录我想出的解决方案,这要感谢有能力的_tech提供的信息非常丰富的答案。

使用 msdos 批处理文件解决如下。

  • 放弃了 #If Trial 开关的想法。相反,组件由 licx 文件许可,因此试用版本与发布版本相同。这意味着开发工作只有一种解决方案,其构建输出源自
  • 创建批处理文件以使用 MSBuild 重建 Silverlight 和 WPF 输出项目,切换工具版本以创建多个版本
  • 将 DLL 复制到 Nuget 样式目录结构,例如 Build/lib/net40、Build/lib/sl4、Build/lib/sl5 等...
  • 就地混淆构建的库
  • XCopy 示例项目到 Build/examples/
  • 使用 Powershell 编辑示例项目以引用新的混淆输出。

作为参考,请参阅以下有关删除/重新添加引用以及使用 powershell编辑项目文件的问题和解答