Visual Studio 扩展构建失败并出现错误 VSSDK1077:无法找到扩展目录。"值不能为空

Ban*_*ara 3 msbuild vsix

我已经配置了一个 TFS(2017) 构建管道来编译一个带有调试模式的 VS 扩展,以满足需要 .pdb 文件的特定要求。对于“调试”配置,构建解决方案任务失败并出现以下错误,但相同的管道适用于发布配置。我也尝试了以下讨论中提到的方法,但是它不能解决我的问题。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/fd220999-5761-475a-bf86-98dff6b35218/unable-to-compile-vsix-project-that-is-a-part-of- my-solution-using-amd64-msbuild-from-vs2015?forum=msbuild

感谢有人可以帮助我解决这个问题。

以下是用于构建解决方案任务的构建配置: 在此处输入图片说明

以下构建变量用于配置构建参数。 在此处输入图片说明

构建错误消息:

包\Microsoft.VSSDK.BuildTools.15.1.192\tools\VSSDK\Microsoft.VsSDK.targets (633, 5) packages\Microsoft.VSSDK.BuildTools.15.1.192\tools\VSSDK\Microsoft.VsSDK.targets(633, 5): 错误 VSSDK1077: 无法定位扩展目录。“值不能为空。参数名称:path1”。进程“msbuild.exe”以代码“1”退出。

Car*_*ero 6

  1. 将您的 Microsoft.VSSDK.BuildTools NuGet 包更新到最新版本 15.9.3032,以防万一它已经解决了问题。
  2. 发布配置还可以生成 PDB 文件(项目属性、构建选项卡、高级...按钮、输出 > 调试信息)。因此,如果 Release 配置适合您,您可以继续使用它,同时生成包含完整调试信息的 pdb 文件。
  3. 当正确编译后,生成的 VSIX 输出文件将部署到实验 VS 实例的扩展文件夹时,会发生错误,这是调试 VSIX 文件的必需步骤。调试/发布配置的不同行为的一个可能解释是,您的 .csproj 可能为发布配置指定了 <DeployExtension>False</DeployExtension>。默认情况下,如果未设置,则该属性在 Microsoft.VsSDK.targets 文件中设置为 true:

    <DeployExtension Condition="'$(DeployExtension)' == ''">true</DeployExtension>

由于在构建服务器上构建时您可能不需要将 VSIX 部署到 VS 实验实例(因为您不打算调试它),您可以将该属性设置为 False 以跳过部署。这可以通过第三个构建配置(例如:“DebugBuildServer”)来完成,您可以在 .csproj 文件中将 DeployExtension 指定为 False,或者坚持两个构建配置但在 MSBuild 参数中传递 /p:DeployExtension=false构建管道的 Visual Studio 构建任务。