.net - NAnt 或 MSBuild,该选择哪一个以及何时选择?

标签 .net msbuild automation nant

我知道还有其他NAntMSBuild Stack Overflow 上的相关问题,但我找不到两者之间的直接比较,所以这就是问题。

什么时候应该选择 NAnt 而不是 MSBuild?哪一个更适合做什么? NAnt 更适合家庭/开源项目,MSBuild 更适合工作项目吗?两者的体验如何?

最佳答案

本周我做了类似的调查。以下是我能够确定的:

NAnt:

  • 跨平台(支持 Linux/Mono)。例如,将网站安装到多个目标(即 Linux Apache 和 Windows IIS)可能会很方便。
  • 与 Ant 的语法有 95% 相似(当前 Ant 用户或 Java 构建者很容易掌握)
  • 与 NUnit 集成以在构建过程中运行单元测试,并与 NDoc 集成以生成文档。

MSBuild:

  • 内置于 .NET。
  • 与 Visual Studio 集成
  • 在 Visual Studio 中轻松开始使用 MSBuild - 一切都在幕后进行。如果您想更深入,可以手动编辑文件。

主观差异: (YMMV)

  • NAnt 文档更加简单一些。例如,MSBuild Task Reference列出“Csc 任务 - 描述 Csc 任务及其参数。”(感谢“帮助”?),而不是 NAnt Task Reference “csc - 编译 C# 程序。” 更新:我注意到 MSBuild documentation已经得到改进,现在好多了(可能与 NAnt 相当)。
  • 弄清楚如何直接从 Visual Studio 中编辑构建脚本源(*.*proj 文件)并不容易。使用 NAnt,我只需让 Visual Studio 将 .build 脚本视为 XML 文件。
  • 显然,在 Visual Studio 中,Web 应用程序项目默认情况下不会获取 *.*proj 文件,因此我很难弄清楚如何让 MSBuild 在我的项目上运行以创建部署脚本。
  • NAnt 不是内置于 Visual Studio 中的,必须使用加载项或作为“外部工具”进行添加。设置起来有点麻烦。
  • (编辑:)我的一位同事提出了这个问题 - 如果您想使用 CruiseControl 设置构建机器为了持续集成,CruiseControl 与 NAnt 完美集成,开箱即用。 更新: CruiseControl 还有一个 MSBuild task .
  • 请参阅下面的评论,了解有关主观差异的完整且最新的讨论。

关于.net - NAnt 或 MSBuild,该选择哪一个以及何时选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/476163/

相关文章:

ios - Xamarin.iOS - MSBUILD 不生成 IPA

vim - 将键附加到 vim 中较早的录音

linux - Ansible 主机/组结构

git - 使用 Actions 在测试通过后自动 merge ?

c# - 如何避免这个 stackoverflow 异常?

asp.net-mvc - TFS 2015 CI - 具有 Web、控制台和 WCF 项目的解决方案中不会为控制台应用程序生成构建工件

c# - .NET Web 应用程序 native 使用多少个线程?

regex - 如何在 RecursiveDir 中包含父目录?

c# - 在 winforms 中按值选择 ComboBox

.net - 无法将 MySQL 日期/时间值转换为 System.DateTime