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

问题描述

我已经配置了一个 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

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

以下是用于构建解决方案任务的构建配置: 在此处输入图像描述

以下构建变量用于配置构建参数。 在此处输入图像描述

构建错误消息:

packages\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”退出。

标签: msbuildvsix

解决方案


  1. 将您的 Microsoft.VSSDK.BuildTools NuGet 包更新到最新版本 15.9.3032,以防万一问题已经解决。
  2. 发布配置还可以生成 PDB 文件(项目属性、构建选项卡、高级...按钮、输出 > 调试信息)。因此,如果发布配置适合您,您可以继续使用它,同时生成一个包含完整调试信息的 pdb 文件。
  3. 当正确编译生成的 VSIX 输出文件将部署到实验性 VS 实例的扩展文件夹时,就会发生错误,这是调试 VSIX 文件的必要步骤。对 Debug/Release 配置的不同行为的一种可能解释是,您的 .csproj 可能为 Release 配置指定了 <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 构建任务。


推荐阅读