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

标签 c# nuget nuget-package debug-symbols

所以我真的很难弄明白。

我有几个项目的解决方案,比如 A、B 和 C。A 引用并使用 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>

但是,我还想通过我的 Nuget 包进行调试,所以我找到了一些技巧来进行调试。一种方法是将 pdb 复制到 nupkg 中,尽管不推荐这样做。它应该与这个 line in your csproj file 一起使用.这会将 pdb 添加到 nupkg,但只会添加 A.pdb

否则可以/应该创建一个 A.symbols.nupkg 文件。我尝试使用 DebugSymbolsDebugTypeEmbedSourcesIncludeSymbolsInPackage 等标签来执行此操作,但无济于事。

我还尝试了 > 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 脚本来手动添加 A.symbols 中的所有 pdb .nu​​pkg。当然,如果有的话,我想要一个更直接的解决方案。

最佳答案

应该工作的步骤:

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

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

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

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

关于c# - 如何为多项目 Nuget 包创建符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52492282/

相关文章:

c# - 使用 C# 中的 odp.net 和 OCI 连接到 Oracle

c# - 开始调用错误

npm - 包管理器控制台卡在 npm init 上

nuget - 使用 IncludeReferencedProjects 时为 Nuget 包依赖项设置确切版本

nuget-package - 如何在巧克力nuspec版本中使用此版本: 10. 1.3.10-1545tr103f5d格式

visual-studio-2012 - 无法解析远程名称 'www.nuget.org'

c# - Visual Studio Code 运行单个 .cs 文件

c# - Xamarin.Forms:在饼图布局中放置标签

NuGet 包管理器控制台默认项目下拉列表为空

c# - 将 pdb 文件包含到我的 nuget (nupkg) 文件中