Yor*_*lov 159 .net msbuild nant automation
我知道Stack Overflow上还有其他与NAnt和MSBuild相关的问题,但是我找不到两者之间的直接比较,所以这就是问题所在.
什么时候应该选择NAnt而不是MSBuild?哪个更适合什么?NAnt更适合家庭/开源项目和MSBuild工作项目吗?这两个中的任何一个有什么经验?
Ogr*_*m33 96
我本周做了类似的调查.这是我能够确定的:
楠:
的MSBuild:
主观差异: (YMMV)
Mil*_*ian 77
对我来说,MSBuild的主要吸引力之一(在Windows平台上)是它本身就是.NET的一部分.这意味着任何与Windows Update一起更新的Windows计算机都将具有MSBuild.除此之外,C#编译器也是.NET本身的一部分,你有一个可以在干净的机器上构建项目的平台.无需安装Visual Studio庞然大物.另一方面,必须在触发构建之前显式安装NAnt.
仅仅为了记录,我在过去的非平凡构建中使用了NMake,Make,Ant,Rake,NAnt和MSBuild(按此顺序).我最喜欢的是MSBuild,请放手(我不喜欢它,因为"这就是Visual Studio使用的").恕我直言,这是一个非常不受重视的构建工具.
我会比较NAnt和MSBuild对程序和函数编程之间的区别.NAnt非常简单,你可以看到你所看到的.另一方面,MSBuild需要更多的思考.学习曲线更陡峭.但是一旦你"得到它",你就可以用它做一些惊人的事情.
所以我建议你看看MSBuild,如果你也倾向于功能或逻辑风格的编程 - 如果你愿意在看到实际结果之前投入一点时间和精力(当然,我也坚信投资最终会得到回报而你可以更有效地做更强大的事情).
Jon*_*eet 45
就个人而言,我同时使用两个 - 用于同一个项目.
MSBuild非常擅长构建Visual Studio解决方案和项目 - 这就是它的用途.
在我看来,NAnt更容易手工编辑 - 特别是如果你已经知道Ant了.NAnt可以使用NAntContrib轻松调用MSBuild.因此,我手工制作一个NAnt脚本来执行复制构建文件,清理等操作 - 并调用MSBuild来实际执行"将我的C#源代码转换为程序集"部分.
如果您想要一个示例,请查看我的Protocol Buffers构建文件.(我不会声称它是一个神话般的NAnt脚本,但它完成了这项工作.)
Kon*_*kus 20
NAnt具有更多开箱即用的功能,但MSBuild具有更好的基本结构(项目元数据),这使得构建可重用的MSBuild脚本变得更加容易.
MSBuild需要一段时间来理解,但是一旦你做到这一点非常好.
学习资料:
Cle*_*man 14
有一件事我注意到有几个海报提到要编辑.csproj(或.vbproj等)文件.
MSBuild允许通过使用.user文件自定义这些.*proj文件.如果我有一个名为MyCreativelyNamedProject.csproj的项目并想要自定义其中的MSBuild任务,我可以创建一个名为MyCreativelyNamedProject.csproj.user的文件,并使用CustomBeforeMicrosoftCommonTargets和CustomAfterMicrosoftCommonTargets来自定义这些文件.
此外,NAnt和MSBuild都可以通过自定义MSBuild任务和NantContrib扩展来定制心脏内容.
所以,使用NAnt或MSBuild真的归结为熟悉:
值得一提的是,MSBuild几乎可以保证在发布后立即与所有新版本的.NET和Visual Studio一起使用,而NAnt可能会有一些滞后.
小智 10
我使用两者都是因为我的NAnt脚本调用了MSBuild.我和NAnt待在一起的主要原因是隔离.让我解释为什么我觉得这很重要:
向项目添加依赖项.NAnt构建文件与Visual Studio不同(在我的情况下,我认为这是专业人员)因此Visual Studio不会尝试对它做任何事情.MSBuild任务是嵌入式解决方案的一部分,可以引用其他MSBuild任务.我收到了其他人的源代码,但发现我无法构建,因为没有安装MSBuild社区任务.我觉得特别令人沮丧的是,Visual Studio不会构建并抛出一堆错误,这些错误使我无法进行调试.尽管事实上所请求的构建可以继续(例如作为调试构建)而没有MSBuild任务的一些额外内容.简而言之:如果我可以避免,我不喜欢在我的项目中添加依赖项.
我不相信Visual Studio,因为我可以抛弃它的开发团队.这可以追溯到Visual Studio的早期阶段,当时它会屠杀我的HTML.我仍然没有使用设计师(最近在一次会议上我发现同事也这样做了).我发现Visual Studio可以搞砸DLL文件中的依赖项和版本号(我不能复制它,但它确实在一个项目中发生并且引起了很多的悲伤并且浪费了时间).我已经使用了一个构建过程,该过程使用Visual Studio仅在调试模式下构建.为了制作,我使用NAnt以便我在外部控制所有内容.如果我使用NAnt构建,Visual Studio就不能再干涉了.
PS:我是一名Web开发人员,不做Windows Forms开发.
虽然我对MsBuild不太熟悉,但我的印象是双方的一些关键差异可以通过增加补充:
我最近不得不在Nant建立一个Silverlight项目.我发现如果我只是使用MsBuild来生活会更容易 - 我最终在Nant脚本中调用了一个MsBuild任务,所以我认为混合和匹配两者并不是太常见.
除此之外,我想这将是一个个人偏好的问题 - 显然你可以在Visual Studio中管理MsBuild的一些/大部分功能,如果这是你的事情.如果您喜欢手工编写脚本,Nant似乎更灵活,更适合,如果您来自Java世界,那么您可能会在家中使用它.
| 归档时间: |
|
| 查看次数: |
30539 次 |
| 最近记录: |