仅在VS2013的TFS构建服务器上构建VS2013

时间:2013-11-15 13:46:56

标签: tfs2010 tfsbuild visual-studio-2013

我正在建立一个新的构建服务器,以支持我们的开发团队从VS2010迁移到VS2013。我们尚未迁移我们的TFS服务器,因此新的构建服务器已设置为带有2个代理的VS2010构建控制器。我还在机器上安装了VS2013(大锤方法)。

我们所有的代码都已迁移到目标.Net 4.5.1并在开发人员的工作站上编译好。

除了包含Web项目的解决方案外,我们的大多数解决方案都构建得很好。这些项目都在抱怨:

找不到导入的项目“C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets”。

导入的项目在构建过程中通过以下两行使用VisualStudioVersion变量:

<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
...
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

根据此页面:

http://msdn.microsoft.com/en-us/library/vstudio/bb383796.aspx

对于4.5和4.5.1目标,

将设置为“11.0”。但构建机器只有上述路径的12.0版本:

“C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications \ Microsoft.WebApplication.targets”

这些相同的.csproj行似乎在一个全新的VS2013项目中使用,所以我不确定如何在构建机器上正确解析。

4 个答案:

答案 0 :(得分:26)

这是由于Vs2012在csproj文件中添加了这一部分:

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>

您可以安全地删除该部分,您的解决方案将会构建。

您必须确保.proj文件以<Project ToolsVersion="12"开头,否则下次使用visual studio 2010打开项目时,它将再次添加已删除的节点。

否则,如果您需要使用webdeploy或使用构建服务器,上述解决方案将无效,但您可以在构建脚本中指定VisualStudioVersion属性:

msbuild myproject.csproj /p:VisualStudioVersion=12.0

或编辑您的构建定义:

edit build definition to specify the <code>VisualStudioVersion</code> property

答案 1 :(得分:15)

在构建服务器上运行msbuild时,您可以做的是指定 VisualStudioVersion属性

msbuild myproject.csproj /p:VisualStudioVersion=12.0

答案 2 :(得分:5)

我遇到了类似的问题......这就是原因。从VS2013开始,MSBuild作为Visual Studio的一部分而非.NET Framework提供。请参阅此msdn blog

所以要解决我的问题[正确方法],我不得不使用“C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \”而不是“C:\ Windows \ Microsoft.NET \”中的MSBuild Framework64 \ v4.0.30319 \“

答案 3 :(得分:2)

您应该可以通过编辑构建模板来修复工具版本。

打开模板.xaml文件,找到“运行项目的MsBuild”活动。在属性中,可以选择设置工具版本。如果需要,您可以创建模板级属性以使其更易于配置。

enter image description here