使用MSBuild复制Nant Solution任务依赖项解析

时间:2015-03-19 11:23:12

标签: c# msbuild teamcity cruisecontrol.net nant

我正在尝试将.NET CI从Nant移到MSBuild以绕过Nant Solution任务限制,但我无法重现Nant程序集引用行为。 Nant解决方案任务在VS项目中查找二进制引用,如果项目包含在解决方案中,则在项目引用中转换它们。 在我的组织中,开发人员使用对基本库的二进制引用,但在夜间构建期间,我想从源代码构建所有内容。 我可以创建一个解决方案文件,所有项目都在改变输出目录,似乎我必须手动指定构建顺序,这是一项大工作。 有办法做这样的事情,或者我做错了什么? 我想将此脚本与TeamCity或CruiseControl.Net一起使用

<solution configuration="release" outputdir="C:\output\bin">
  <projects>
    <include name="ProjectA.csproj" />
    <include name="ProjectB.csproj" />
    <include name="ProjectC.csproj" />
  </projects>
</solution>

如果ProjectA引用projectB.dll和ProjectB引用projectC.dll Nant按以下顺序执行构建:ProjectC-ProjectB-ProjectA,使用已编译项目的输出作为参考。

1 个答案:

答案 0 :(得分:0)

我会坚持使用Nant,并且在nant中调用msbuild来编译你的解决方案。 只需使用exec任务调用msbuild即可完全控制所有参数。从nant变为msbuild需要进行思维转换:-)

通常每个项目都有一个&#lib;&#39;文件夹,该文件夹已知。 从所有项目获取源代码,编译C并将其复制到B的lib,依此类推。 这确实是一个手动任务,但依赖关系不会发生太大变化。

对于更自动化的方式,也许以下链接可以帮助您 http://blog.dantup.com/2012/05/free-dependency-graph-generation-using-powershell-and-yuml/

如果你稍微谷歌,你可以使用其他免费图书馆,我不知道哪一个最适合你。