.net 使用TeamCity从msbuild 2脚本生成目标为msbuild 4的项目

.net 使用TeamCity从msbuild 2脚本生成目标为msbuild 4的项目,.net,msbuild,teamcity,.net,Msbuild,Teamcity,我有一个msbuild脚本,它使用TeamCity构建多个项目。它构建了几个C++ Builder 2010项目,以及一些C项目。它还为它们创建一个安装程序,并将其全部打包。现在我想添加一个新项目,但问题是它是使用.Net Framework 4构建的,而其他旧项目以及构建脚本本身都以.Net Framework 2为目标 在TeamCity的设置中,选择使用msbuild 2进行构建并将其更改为4(希望它向后兼容)只会导致大量错误 我想知道是否有一种很好的方法可以使用msbuild 4来构建特

我有一个msbuild脚本,它使用TeamCity构建多个项目。它构建了几个C++ Builder 2010项目,以及一些C项目。它还为它们创建一个安装程序,并将其全部打包。现在我想添加一个新项目,但问题是它是使用.Net Framework 4构建的,而其他旧项目以及构建脚本本身都以.Net Framework 2为目标

在TeamCity的设置中,选择使用msbuild 2进行构建并将其更改为4(希望它向后兼容)只会导致大量错误

我想知道是否有一种很好的方法可以使用msbuild 4来构建特定的项目,而不必在TeamCity中创建新的构建步骤

我尝试使用exec命令从msbuild 2调用msbuild 4,效果很好。但也许有一些“更好”的方法

“有效”的示例



更新:我设法使用msbuild和.Net Framework 4编译了所有旧的东西。因此,这不再是一个真正的问题。

我用“正确”的方法解决了它。确保所有旧的东西都可以使用较新的msbuild构建,并以它们预期的.Net框架为目标。使用exec的方法也很有效,但总感觉像是一种黑客行为。

只是一个问题,为什么不在单独的配置中分离构建?因为我希望构建能够从cmd从a点到B点轻松运行,如果用户希望这样做,而不必记得先运行特定的步骤。您可以使用单独的cmd文件来完成为每个projectTrue调用small-one,但这有点像使用exec命令调用特定版本的msbuild的新实例。无论如何,使用新版本的msbuild实际编译旧东西的解决方案似乎是正确的做法;)这不适用于黑莓。如果您使用较新的工具构建应用程序,它将不会在较旧的设备上运行。但我希望在桌面世界里它会更好。祝你一切顺利!
<Exec Command="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild /t:FooBar /p:Configuration=Debug ..\FooBar\FooBar.sln"/>