C# 使用MSBuild复制Nant解决方案任务依赖项解析

C# 使用MSBuild复制Nant解决方案任务依赖项解析,c#,msbuild,teamcity,cruisecontrol.net,nant,C#,Msbuild,Teamcity,Cruisecontrol.net,Nant,我试图将.NET CI从Nant移动到MSBuild以绕过Nant解决方案任务限制,但无法重现Nant程序集引用行为。 Nant解决方案任务在VS项目中查找二进制引用,如果项目包含在解决方案中,则在项目引用中转换它们。 在我的组织中,开发人员使用对基本库的二进制引用,但在夜间构建期间,我希望从源代码构建所有内容。 我可以创建一个解决方案文件,所有的项目都更改了输出目录,看起来我必须手动指定构建顺序,这是一项艰巨的工作。 有办法做这样的事还是我做错了? 我想将此脚本用于TeamCity或Cruis

我试图将.NET CI从Nant移动到MSBuild以绕过Nant解决方案任务限制,但无法重现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 reference projectB.dll和projectB reference projectC.dll Nant按照以下顺序执行生成:projectC projectB ProjectA,使用已编译项目的输出作为引用。

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

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

对于更自动化的方式,也许下面的链接可以帮助您


如果你在谷歌上搜索一下,你还可以使用其他免费库,我不知道哪一个最适合你。

请向我们展示codeAdded示例脚本。谢谢,手动解决方案应该是可能的,但除了目标目录,还有编译顺序,如果你有很多项目,这是一项非常繁重的工作。我将尝试调查第二个想法:-