如何将引用的 nuget 调试符号 (PDB) 包含到 .vsix 包中

How to include referenced nuget debugging symbols (PDBs) into .vsix package

我已经阅读了 How to include debugging symbols to .vsix package question and answer and Daniel Cazzulino's post,但是那些忽略了一个事实,即一个人的 VSIX 需要包括来自其他来源的 PDB,例如 nuget 包。

例如: 我有一个 VSIX 项目,将其命名为 MyExtension.vsix。它引用了一个 nuget 包,将其命名为 SomeNuget,它又由 SomeNuget.dll 和 SomeNuget.pdb 组成。

我想将 SomeNuget.pdb 添加到我的 MyExtension.vsix 中。

如果有答案?

感谢 nuget 打包工作流程中的confirmed problem,我得到了一个解决方法:

追加:

  <PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>  
    <IncludeAssemblyInVSIXContainer>true</IncludeAssemblyInVSIXContainer>
    <IncludeDebugSymbolsInVSIXContainer>true</IncludeDebugSymbolsInVSIXContainer>
    <IncludeDebugSymbolsInLocalVSIXDeployment>true</IncludeDebugSymbolsInLocalVSIXDeployment>
  </PropertyGroup>
  <Target Name="_ResolveCopyLocalNuGetPackagePdbs" 
          Condition="$(CopyLocalLockFileAssemblies) == true" 
          AfterTargets="ResolveReferences"
          BeforeTargets="GetVsixSourceItems">
    <ItemGroup>
      <VSIXCopyLocalReferenceSourceItem 
        Include="@(ReferenceCopyLocalPaths->'%(RootDir)%(Directory)%(Filename).pdb')" 
        Condition="Exists('%(RootDir)%(Directory)%(Filename).pdb')" />
    </ItemGroup>
  </Target>

进入 vsix.csproj 文件完成交易。对我来说,这适用于 visual studio 的所有版本我为:

构建了扩展
  • 2010
  • 2015
  • 2017
  • 2019
  • 2022