2015-03-19 98 views
0

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

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

如果项目A参考projectB.dll和项目B的参考projectC.dll南特以下顺序进行编译:项目C-项目B,项目A,如使用参考已编译项目的输出。

+0

请向我们展示代码 – 2015-03-19 11:30:44

+0

添加示例脚本。 – 2015-03-19 13:55:57

回答

0

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

通常每个项目都有一个'lib'文件夹,并且该文件夹是已知的。 从所有项目中获取源代码,编译C并将其复制到B的lib中,等等。 这确实是一个手动任务,但依赖关系不会有太大改变。

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

有,如果你谷歌了一下周围,你可以使用其他免费的图书馆,我不知道哪一个会最适合你。

+0

谢谢,“手动”解决方案应该是可能的,但除目标目录外还有编译顺序,如果您有很多项目,这将是一项非常繁重的工作。我会尝试调查第二个想法:-) – 2015-03-23 09:29:49