在没有安装 VS 的情况下在构建服务器上构建 VS 2015 扩展?

Build VS 2015 extension on build server without VS installed?

是否可以在未安装 Visual Studio 的情况下在构建服务器(TeamCity 代理)上构建 Visual Studio 2015 扩展项目?我们需要安装什么样的SDK?

目前我们收到以下错误信息:

error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\Portable\v4.6\Microsoft.Portable.CSharp.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

所以肯定是缺少某种SDK。

下载Microsoft Build Tools 2015

Microsoft.VSSDK.BuildTools

Contains targets and tools to enable the building of managed VSIX projects without VSSDK MSI installed. Only for VS 2015 and onwards

可能感兴趣的其他软件包: https://www.nuget.org/profiles/VisualStudioExtensibility

看来您必须在构建代理上安装 Portable Library Tools。您可以从 VS Gallery 下载它们并安装它们,而无需使用以下参数 /buildmachine.

在构建代理上安装 VS

使用@weir 的回答几乎成功了——项目构建成功,但最后未能生成 VSIX 容器。由于某种原因,Nuget 包没有将必要的导入添加到 .csproj 以引入 VsSDK.targets,因此 VSIX 目标丢失并且从未被执行。

以下是对我有用的步骤:

  1. 编辑 VSIX 项目 .csproj 文件,并删除 Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" />。这将在 VSToolsPath 中不存在 VSSDK 的构建服务器上失败。
  2. 在VS2015中IDE,打开项目的Nuget包管理器,安装Microsoft.VSSDK.BuildTools(我用的是v14.3.25407)
  3. 回到 .csproj 文件,找到 Nuget 包添加的导入,例如<Import Project="..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.targets" .../> 并在其下方为 VsSDK.targets 文件(在工具目录内)添加另一个,<Import Project="..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\tools\vssdk\Microsoft.VsSDK.targets" .../>