代码之家  ›  专栏  ›  技术社区  ›  Zverev Evgeniy

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

  •  1
  • Zverev Evgeniy  · 技术社区  · 6 年前

    我读过 How to include debugging symbols to .vsix package 问答和 Daniel Cazzulino's post 但这些人忽略了这样一个事实,即一个人的vsix需要包括来自其他来源的PDB,比如nuget包。

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

    我想在myextension.vsix中加入somenuget.pdb。

    如果有答案的话?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Zverev Evgeniy    6 年前

    多亏了 confirmed problem 在Nuget包装工作流程中,我为自己提供了一个解决方案:

    附加:

      <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年