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

时间:2018-12-10 19:11:26

标签: c# visual-studio visual-studio-2017 visual-studio-extensions

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

我最初遇到this post中提到的另一个问题,该问题已解决。现在,项目(和扩展名)继续在本地成功构建,但是在我们的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)。


更新(1/7/2019)

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

默认情况下,我们的构建服务器使用与最高安装的.NET相关的MSBuild版本(在本例中为MSBuild版本4.7.3062.0)。 此版本引发我原始帖子中的错误(VSSDK1001)。

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

2 个答案:

答案 0 :(得分:0)

  

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

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

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

enter image description here

但是,当您在TFS服务器上构建时,没有这样的选项可以自动还原那些nuget软件包。因此,在构建项目/解决方案之前,我们需要添加一个任务nuget restore:

添加任务,搜索nuget并将其添加到代理作业中,在“命令”中选择“还原”:

enter image description here

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

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

希望这会有所帮助。

答案 1 :(得分:0)

要解决此问题,需要更新构建定义所使用的构建过程模板中的 ToolPath 属性,类似于this post中所述。

在我们的示例中,我们的构建过程模板包含“为配置文件夹运行TfsBuild”步骤,我需要将 ToolPath 属性更新为值"C:\Program Files (x86)\MSBuild\14.0\Bin"