MSBuild项目与PowerShell构建过程

时间:2017-06-15 19:13:44

标签: .net powershell build msbuild

我必须完成以下任务:

  • 预建设置(下载依赖关系等)
  • 构建.net解决方案
  • 运行测试(单元测试和功能测试)
  • 生成文档
  • 生成nuget包
  • 签署输出

我能够通过创建PS构建过程(使用msbuild来编译解决方案)或带有目标的MSBuild项目(使用一些帮助PS脚本)来完成任务。 PowerShell更灵活,但MSBuild是一个构建框架,具有一些集成的构建相关功能。 我想知道什么是最好的方法。请分享想法。

2 个答案:

答案 0 :(得分:1)

开箱即用, MSBuild 专门处理任务及其依赖项。因此,当您想要执行默认情况下MSBuild无法执行的自定义操作时,您需要通过目标调用脚本/工具,或者您可以通过在项目中包含社区/自定义扩展来添加更多类型的任务。

另一方面, Powershell 是没有形式的,所以你必须按照自己的方式工作而没有内置结构,但是你可以自由地开箱即用。无需使用其他工具/语言填补空白。 对于多个项目,如果您希望保持构建系统的可维护性,则必须创建某种框架。

如果你想要两个世界 PSAKE 是一个处理Powershell模块的任务,它的行为类似于MSBuild,并且具有基于RAKE的语法,这非常简洁。简而言之,PSAKE的语法比MSBuild更轻,并且通过Powershell提供了大部分功能,因此您可以从这两个方面受益。

一般来说,这是品味和需求的问题。我赞成简短而甜蜜的语法,清楚地说明代码的哪些部分可以做什么。 MSBuild基于XML,因此有很多冗余,它没有随附的IDE,需要像Visual Studio这样的外部工具来调试它。 PSAKE是一个Powershell模块,因此您可以在创建构建脚本时生成Powershell ISE,加载模块并享受IntelliSense。

但要明白,选择什么有很多可能性,所以选择你的毒药并且不要将你的选择范围缩小到只有MSBuild和Powershell 。的 See some alternatives here.

答案 1 :(得分:0)

MSBuild(现在我们有一个使用dotnet cli的包装器)是Microsoft构建引擎,它的目标是创建一组任务来最终获取工件或程序集。 另一方面,PowerShell是一项任务自动化和配置管理。这意味着您可以为更复杂的管道创建脚本,包括调用MSBuild,NuGet CLI等(例如,调用远程模块或任何其他附加任务)。