【问题标题】:Visual Studio Extension build failing with Error VSSDK1077: Unable to locate the extensions directory. "Value cannot be nullVisual Studio 扩展构建失败并出现错误 VSSDK1077:无法找到扩展目录。 "值不能为空
【发布时间】:2019-01-06 19:14:24
【问题描述】:

我已经配置了一个 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) 包\Microsoft.VSSDK.BuildTools.15.1.192\tools\VSSDK\Microsoft.VsSDK.targets(633,5): 错误 VSSDK1077:无法找到扩展目录。 “价值 不能为空。参数名称:path1"。进程“msbuild.exe”已退出 代码为“1”。

【问题讨论】:

    标签: msbuild vsix


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

      true

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

    【讨论】:

    • 感谢您的详细回答。添加“/p:DeployExtension=false”为我解决了这个错误。但是,即使启用了调试模式,MsBuild 也不会为可扩展性项目发出 .pdb。我通过打开解决方案来尝试它是VS IDE,它也不会发出pdb。你能帮我解决这个问题吗?
    • 检查项目属性、构建选项卡、高级...按钮、输出>调试信息
    • 调试信息设置为full,所以我看了一下.csproj的xml,发现CopyOutputSymbolsToOutputDirectory = false。我将其更改为 true 并编译以查看 pdb 已复制到 bin 文件夹中。感谢您对此的支持。
    • 我也注意到了这些配置TrueTrue。我认为关闭这些也将消除添加“/p:DeployExtension=false”构建参数的要求。
    • 您的 .csproj 似乎在创建后从默认值更改了一些属性值。您甚至需要在构建服务器上创建 Vsix 容器,因为它是构建过程的重要组成部分(它的最终输出)。所以保持属性 CreateVsixContainer 为 True。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2022-01-07
    相关资源
    最近更新 更多