BuildActivity 忽略 ToolsVersion
BuildActivity ignores ToolsVersion
我在 BuildAgent 上有一个持续集成构建 运行,但我无法正常工作。我最近将我们的代码库更改为 C# 6.0,并将项目更改为 ToolsVersion 14。
我确实在生成服务器 (TFS 2012) 上安装了 Visual Studio 2015。如果我现在检查 C# 6.0 代码,第一个项目的构建会失败(“$”是意外的或其他东西)
构建模板是 "DefaultTemplate.11.1"
如果我检查日志文件,构建会调用错误的 csc.exe (C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Csc.exe)
如果我在没有任何开关的情况下启动 MSBuild/14.0/Bin/MSBuild 可执行文件,则构建成功。为什么 TFS BuildAgent 不使用 ToolsVersion 以及如何获取 TFS 2012 来构建我的 Visual Studio 2015 解决方案
如果我添加 MSBuildArgument /tv:14.0,它仍然失败。因为它调用了 MSBuild 的第 12 版,它是 Visual Studio 2015.
附带的 .NET 4.6 RC Framework 的一部分
更改 MSBuild Activity 的 ToolsPath 确实可以使 Build 正常工作,但如果我尝试 运行 我的单元测试,就会出现问题。我得到一个 Missing dlls "Microsoft.VisualStudio.TestPlatform.Utilities.dll" 异常。 (VS2012 也安装在构建服务器上)。
更新:
我的单元测试现在确实遇到了不同的错误:
TF900548: An error occurred publishing the Visual Studio test results.
Details: 'Method not found:
'System.Collections.Generic.IEnumerable<System.String>
Microsoft.VisualStudio.TestPlatform.Utilities.InferSettingsHelper.MergeRunSettingsAndFindCompatibleSources(Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
ByRef,
Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion
ByRef, System.String, System.String,
System.Collections.Generic.IDictionary`2<System.String,System.Collections.Generic.KeyValuePair`2<Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture,Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion>>,
System.Xml.XPath.IXPathNavigable, System.String ByRef)'.'
使用 msbuild 参数 /p:VisualStudioVersion=14.0
编辑模板将 msbuild activity ToolPath 更改为 "MSBuild/14.0/Bin/MSBuild"
对于我们这些不是每天都生活在构建模板中的人来说,这里是让它为我工作的步骤:
首先找到与您的构建关联的模板(如果您已经知道在哪里可以找到它,请跳过几个步骤)。
只需右键单击构建定义,然后 select Edit build definition
Select Process
选项卡,您将看到模板的名称(如果您尚未自定义,很可能是 DefaultTemplate)。在最右侧单击 Show details
以查看模板的路径。
- 转到团队资源管理器下的
Home
选项卡,然后单击 Source control explorer
- 找到模板文件,双击编辑。它应该出现在这样的图形视图中。滚动直到找到
Run MSBuild for Project
- 单击此项将立即显示属性
点击右边的小图标 - 不要尝试输入它,因为它可能会爆炸并崩溃 Visual Studio。
在引号中输入以下内容 "C:\Program Files (x86)\MSBuild.0\bin"
现在是最重要的部分
对我来说 Run MSBuild for Project
在两个地方。
所以我只是在两个地方重复了上述步骤,然后在我签入 .xaml
文件后,我的构建最终运行良好。
您可能需要从 TFS 工具中回收代理/控制器。
查看答案 。
使用 TfvcTemplate.12.xaml 构建过程模板和 /tv:14.0 构建参数对我有用。
我在 BuildAgent 上有一个持续集成构建 运行,但我无法正常工作。我最近将我们的代码库更改为 C# 6.0,并将项目更改为 ToolsVersion 14。
我确实在生成服务器 (TFS 2012) 上安装了 Visual Studio 2015。如果我现在检查 C# 6.0 代码,第一个项目的构建会失败(“$”是意外的或其他东西)
构建模板是 "DefaultTemplate.11.1" 如果我检查日志文件,构建会调用错误的 csc.exe (C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Csc.exe)
如果我在没有任何开关的情况下启动 MSBuild/14.0/Bin/MSBuild 可执行文件,则构建成功。为什么 TFS BuildAgent 不使用 ToolsVersion 以及如何获取 TFS 2012 来构建我的 Visual Studio 2015 解决方案
如果我添加 MSBuildArgument /tv:14.0,它仍然失败。因为它调用了 MSBuild 的第 12 版,它是 Visual Studio 2015.
附带的 .NET 4.6 RC Framework 的一部分更改 MSBuild Activity 的 ToolsPath 确实可以使 Build 正常工作,但如果我尝试 运行 我的单元测试,就会出现问题。我得到一个 Missing dlls "Microsoft.VisualStudio.TestPlatform.Utilities.dll" 异常。 (VS2012 也安装在构建服务器上)。
更新: 我的单元测试现在确实遇到了不同的错误:
TF900548: An error occurred publishing the Visual Studio test results.
Details: 'Method not found:
'System.Collections.Generic.IEnumerable<System.String>
Microsoft.VisualStudio.TestPlatform.Utilities.InferSettingsHelper.MergeRunSettingsAndFindCompatibleSources(Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture
ByRef,
Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion
ByRef, System.String, System.String,
System.Collections.Generic.IDictionary`2<System.String,System.Collections.Generic.KeyValuePair`2<Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture,Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion>>,
System.Xml.XPath.IXPathNavigable, System.String ByRef)'.'
使用 msbuild 参数 /p:VisualStudioVersion=14.0
编辑模板将 msbuild activity ToolPath 更改为 "MSBuild/14.0/Bin/MSBuild"
对于我们这些不是每天都生活在构建模板中的人来说,这里是让它为我工作的步骤:
首先找到与您的构建关联的模板(如果您已经知道在哪里可以找到它,请跳过几个步骤)。
只需右键单击构建定义,然后 select
Edit build definition
Select
Process
选项卡,您将看到模板的名称(如果您尚未自定义,很可能是 DefaultTemplate)。在最右侧单击Show details
以查看模板的路径。
- 转到团队资源管理器下的
Home
选项卡,然后单击Source control explorer
- 找到模板文件,双击编辑。它应该出现在这样的图形视图中。滚动直到找到
Run MSBuild for Project
- 单击此项将立即显示属性
点击右边的小图标 - 不要尝试输入它,因为它可能会爆炸并崩溃 Visual Studio。
在引号中输入以下内容
"C:\Program Files (x86)\MSBuild.0\bin"
现在是最重要的部分
对我来说 Run MSBuild for Project
在两个地方。
所以我只是在两个地方重复了上述步骤,然后在我签入 .xaml
文件后,我的构建最终运行良好。
您可能需要从 TFS 工具中回收代理/控制器。
查看答案
使用 TfvcTemplate.12.xaml 构建过程模板和 /tv:14.0 构建参数对我有用。