您可以从TFS构建定义调用2013年的早期版本的MSBuild

时间:2015-06-03 13:44:02

标签: visual-studio-2013 tfs msbuild ssas

我们公司刚刚将我们的项目从TFS 2012服务器迁移到2013 TFS服务器以及我们的构建控制器(2012服务器到2013)。我知道在VS2013中,MSBuild现在是应用程序的一部分,但我还需要引用构建我们的SSIS和SSAS项目的旧构建机器作为部署的一部分。我面临的挑战是这些项目使用Business Intelligence for 2008R2,我无法向前迁移解决方案/项目。 在我在VS2010中创作的分析解决方案中,我有以下构建命令:

 <Target Name="BeforeBuild">
    <!-- Build SSIS Package-->
    <Exec Command="&quot;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe&quot; &quot;$(MSBuildProjectDirectory)\..\AnalyticsSSAS\AnalyticsSSAS.dwproj&quot; /Build" />
  </Target>
  <PropertyGroup>
    <PostBuildEvent>xcopy "$(ProjectDir)..\AnalyticsSSAS\bin\*.*"  /y</PostBuildEvent>
  </PropertyGroup>

当我尝试使用2013定义运行构建时,构建失败并指出msbiuld taks EXEC未被识别。我可以单独打开解决方案和项目并构建它们(运行2010),没有任何问题2013年想要迁移我无法做到的解决方案。

以下是构建日志文件中生成的实际消息:

"f:\blds\26\DevCI\src\Analytics.sln" (default target) (1) ->
   "f:\blds\26\DevCI\src\Database\Dashboards\SSASBuild\SSASBuild.csproj" (default target) (2) ->
   (BeforeBuild target) -> 
     f:\blds\26\DevCI\src\Database\Dashboards\SSASBuild\SSASBuild.csproj(85,5): error MSB3073: The command ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" "f:\blds\26\DevCI\src\Database\Dashboards\SSASBuild\..\AnalyticsSSAS\AnalyticsSSAS.dwproj" /Build" exited with code 1.


   "f:\blds\26\DevCI\src\Analytics.sln" (default target) (1) ->
   "f:\blds\26\DevCI\src\Database\Dashboards\SSISBuild\SSISBuild.csproj" (default target) (3) ->
     f:\blds\26\DevCI\src\Database\Dashboards\SSISBuild\SSISBuild.csproj(84,5): error MSB3073: The command ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" "f:\blds\26\DevCI\src\Database\Dashboards\SSISBuild\..\AnalyticsSSIS\AnalyticsSSIS.dtproj" /Build" exited with code 1.

我怀疑从我所读到的VS2013中的MSBuild不允许引用较低版本的MSBuild v9.0而不将项目迁移到较新版本。

以前有没有人见过这种类型的构建有什么解决方法吗?

-cheers

1 个答案:

答案 0 :(得分:0)

我认为有很多解决方案,但基本的想法是强制使用旧的MSBuild版本。

自定义构建模板旧样式

添加MSBuild活动并将ToolPath属性设置为旧版本。您必须公开要构建为模板参数的解决方案列表。

脚本新款式

编写一个构建后(或预构建)脚本,该脚本使用解决方案的路径调用正确的MSBuild版本。