错误 VSSDK1001:无法找到 Microsoft.VisualStudio.CommandTable.VSCTCompiler 类型

Error VSSDK1001: Unable to find Microsoft.VisualStudio.CommandTable.VSCTCompiler type

我正在尝试更新 Visual Studio 扩展以兼容 Visual Studio 2017 年的安装。我已按照以下每个页面(以及我搜索过的其他页面)中的步骤和说明进行操作):

我最初遇到了 中提到的一个单独问题,该问题已得到解决。现在,项目(和扩展)继续在本地成功构建,但它在我们的 TFS 构建服务器上失败并出现以下错误:

"d:\example\myproj\MyProj.csproj" (Rebuild target) (25:7) ->
  d:\example\myproj\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.9.23\tools\VSSDK\Microsoft.VisualStudio.Sdk.Common.targets(67,5): error VSSDK1001: Unable to find Microsoft.VisualStudio.CommandTable.VSCTCompiler type in 'd:\example\myproj\packages\Microsoft.VisualStudio.Sdk.BuildTasks.14.0.14.9.23\tools\VSSDK\bin\VSCT.exe' Assembly. [d:\example\myproj\MyProj.csproj]

有没有其他人遇到过这个错误,可以告诉我为什么我们的构建服务器会出现这个问题?

附加说明:我在本地计算机和相关构建服务器上都是 运行 Visual Studio 2015(更新 3)。


更新(2019 年 1 月 7 日)

问题似乎与执行的 MSBuild.exe 版本有关。

默认情况下,我们的构建服务器使用与最高安装版本 .NET 关联的 MSBuild 版本(在我们的示例中为 MSBuild 版本 4.7.3062.0)。 此版本从我原来的 post.

中抛出错误 (VSSDK1001)

如果我使用与 VS 2015 关联的 MSBuild 版本(MSBuild 版本 14.0.27522.0)手动执行构建,则错误消除并且构建成功。到目前为止,我一直无法强制 TFS 使用所需的 MSBuild.exe 版本...

Error VSSDK1001: Unable to find Microsoft.VisualStudio.CommandTable.VSCTCompiler type

在 TFS 定义中构建任务之前,您应该添加一个 nuget 恢复任务。

当你通过Visual Studio在本地构建时,Visual Studio有两个选项可以在我们构建项目时自动恢复nuget包:

但是,当您在 TFS 服务器上构建时,没有此类选项可以自动恢复那些 nuget 包。所以我们需要在构建 project/solution:

之前添加一个任务 nuget restore

添加任务,搜索nuget并将其添加到代理作业中,select在命令中恢复:

正确配置此 nuget 恢复任务并在构建任务之前设置它。

注意:您还可以向特定版本的 NuGet 添加 NuGet Tool Installer 任务。

希望对您有所帮助。

解决这个问题需要更新我们构建定义使用的构建过程模板中的 ToolPath 属性,类似于 this post 中描述的内容.

在我们的例子中,我们的构建过程模板包含 "Run TfsBuild for Configuration Folder" 步骤,我需要将 ToolPath 属性 的值更新为 "C:\Program Files (x86)\MSBuild.0\Bin"