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



我已经阅读了如何将调试符号包含在 .vsix 包问题和答案和 Daniel Cazzulino 的帖子中,但这些忽略了一个事实,即一个人的 VSIX 需要包含来自其他来源(如 nuget 包(的 PDB。

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

我想把这个SomeNuget.pdb包含在我的MyExtension.vsix中。

如果有答案吗?

由于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文件中密封交易。对我来说,这适用于我构建扩展的所有版本的视觉工作室:

  • 2010
  • 2015
  • 2017
  • 2019
  • 2022

最新更新