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

Pie*_*son 21 tfsbuild tfs2010 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)' != ''" />
Run Code Online (Sandbox Code Playgroud)

根据这个页面:

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项目中使用,所以我不确定它如何能够在构建机器上正确解析.

gia*_*min 26

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

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

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

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

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

msbuild myproject.csproj /p:VisualStudioVersion=12.0
Run Code Online (Sandbox Code Playgroud)

或编辑您的构建定义:

编辑构建定义以指定<code> VisualStudioVersion </ code>属性


小智 15

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

msbuild myproject.csproj /p:VisualStudioVersion=12.0
Run Code Online (Sandbox Code Playgroud)

  • 这很容易做到.打开构建定义并转到"Process"页面.然后在"3. Advanced"组下,您有一个名为"MSBuild Arguments"的属性.使用以下语法"/p:VisualStudioVersion=12.0"将参数放在那里.当然没有引号.如果您有更多参数,请用空格而不是逗号分隔它们. (2认同)

小智 5

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

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

  • 你如何在TFS Build Agent上控制它? (3认同)

jes*_*ing 2

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

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

在此输入图像描述