我已经阅读了许多关于使用TFS构建执行NAnt脚本的文章和帖子,但没有一篇满足我的需求。
我有一个NAnt脚本,多年来一直在开发,用于自动构建,测试和部署我们的网站到内部升级和外部演示环境。
通常,团队规模太小,以至于构建都是手动过程。目的一直是将此脚本集成到CI环境中。
最近,我们将源代码控制切换到TFS 2012,目的是在现有的NAnt脚本中使用TFS构建。
从目前为止我可以看到,可以使用TFS构建执行NAnt脚本,但是在创建新的构建定义时,不可能不为TFS构建指定.sln文件来构建。
理想情况下,我希望NAnt能够控制整个构建/测试/部署过程,并希望TFS Build能够完全控制并只使用TFS提供的Checkin触发器来触发NAnt构建。
我玩过写自己的TFS checkin拦截器的想法。还有其他人已经解决了这个问题吗?
非常感谢
任何人都可以通过建议替代(支付或不支付)CI工具(例如CCNet或TeamCity)来解决所提出的具体问题,而不是偏离。
干杯
答案 0 :(得分:2)
以下是如何做到这一点:
1)从http://sourceforge.net/projects/nant/files/下载Nant.exe并签入包含Nant.exe的bin目录。
2)使用以下代码(更改路径)创建一个msbuild文件(比如msbuild.proj)并签入该文件。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="RunNant">
<Exec Command="bin\nant.exe; -buildfile:master.build build"/>
</Target>
</Project>
3)转到构建定义中的Process选项卡,然后转到“要构建的项目” - &gt; “要建立的项目” - &gt;选择(右侧图标) - &gt;添加 - &gt;将“类型的项目”更改为“MSBuild项目文件”,然后选择您签入的.proj文件。
4)运行你的构建,它应该工作。请参阅下面的日志,该日志显示它运行了Nant构建文件。
Build started 12/31/2013 4:55:20 AM.
Project "C:\a\src\F\Test Projects\TestProject\msbuild.proj" on node 1 (default targets).
RunNant:
bin\nant.exe; -buildfile:master.build build
NAnt 0.92 (Build 0.92.4543.0; release; 6/9/2012)
Copyright (C) 2001-2012 Gerry Shaw
http://nant.sourceforge.net
Buildfile: file:///C:/a/src/F/Test Projects/TestProject/master.build
Target framework: Microsoft .NET Framework 4.0
Target(s) specified: ; build
[solution] Starting solution build.
答案 1 :(得分:0)
我们遇到了类似的问题。对于我们的一个项目,我们只想为构建运行DOS命令。我所做的是创建一个只运行DOS命令的自定义构建模板。该模板具有应用程序运行,应用程序参数和应用程序工作目录的参数。
以下是整个模板在设计器中的样子。
以下是我们的参数列表
我之前没有使用过NAnt,但我猜你可以从DOS命令运行它。 您应该能够将.sln作为DOS命令的参数之一传递。