如何为多项目Nuget包创建符号?

ste*_*ong 10 c# debug-symbols nuget nuget-package

所以我真的很想弄明白这一点.

我有一个项目的解决方案,比如A,B和C.参考并使用B和C(两个项目参考).我想从A创建一个Nuget包,我成功了,虽然我不得不跳几个圈,使用这样的东西:

<ProjectReference Include="..." PrivateAssets="All" />
...
<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
  <ItemGroup>
    <BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')->WithMetadataValue('PrivateAssets', 'All'))" />
  </ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)

但是,我想通过我的Nuget包调试,所以我发现了一些技巧.一种是将pdb复制到nupkg中,尽管不建议这样做.它应该适用于你的csproj文件中的这一.这会将pdb添加到nupkg中,但只会A.pdb添加.

否则,可以/应该创建一个A.symbols.nupkg文件.我想这样做,使用标签,如DebugSymbols,DebugType,EmbedSources,和IncludeSymbolsInPackage,但无济于事.

我也试过了> dotnet pack A.csproj --include-symbols --include-source,它产生了一个A.nupkg和一个A.symbols.nupkg,但在符号内,只有A.pdb而不是B.pdbC.pdb.

所以我想我的问题是:如何从可以调试的多项目解决方案中创建一个nuget包(所以包括pdb或符号/来源,不是一个,而是来自所有引用的项目)?

TLDR:我已经看到了很多潜在的解决方案,但到目前为止,还没有成功.

我的一些最后一个度假村可能是:只是将B和C的所有内容添加到A,这样只剩下一个项目,或者创建一个PowerShell脚本来手动添加所有pdb A.symbols.nupkg.当然,如果有的话,我想要一个更直接的解决方案.

And*_*lon 0

应该有效的步骤:

  1. 确保引用确实是项目引用,而不是直接引用构建的 DLL。

  2. 确保构建后所有 PDB 都被复制到输出文件夹。

  3. 使用您尝试过的任何一种方法(符号包或硬编码包含 .pdb 扩展名)。

如果这没有按预期工作,我建议提供其他详细信息,例如“A”的 csproj 文件以及尝试过的任何 nuspec。