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

时间:2018-06-29 10:31:01

标签: visual-studio visual-studio-2015 msbuild visual-studio-extensions vsix

我已经阅读了How to include debugging symbols to .vsix package问答和Daniel Cazzulino's post,但那些人忽略了一个事实,即VSIX需要包含来自其他来源(例如nuget软件包)的PDB。

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

我想将SomeNuget.pdb包含到MyExtension.vsix中。

是否有答案?

1 个答案:

答案 0 :(得分:1)

多亏了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