c# - 如何为多项目 Nuget 包创建符号?
问题描述
所以我真的很难弄清楚这一点。
我有一个包含几个项目的解决方案,比如 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 中,尽管不建议这样做。它应该适用于您的 csproj 文件中的这一行。这会将 pdb 添加到 nupkg,但仅A.pdb
添加。
否则可以/应该创建一个A.symbols.nupkg
文件。DebugSymbols
我尝试使用, DebugType
,EmbedSources
和等标签来做到这一点IncludeSymbolsInPackage
,但无济于事。
我也试过> dotnet pack A.csproj --include-symbols --include-source
, 并生成 aA.nupkg
和 a A.symbols.nupkg
,但在符号内,只有A.pdb
和不是B.pdb
and C.pdb
。
所以我想我的问题是:如何从可以调试的多项目解决方案中创建一个 nuget 包(因此包括 pdb 或符号/源,不是一个,而是来自所有引用的项目)?
TLDR:我已经看到了很多潜在的解决方案,但到目前为止,没有一个可行。
我最后的一些手段可能是:只需将 B 和 C 的所有内容添加到 A,这样就只剩下一个项目,或者创建一个 powershell 脚本来手动添加所有 pdb 到A.symbols.nupkg
. 当然,如果有的话,我想要一个更直接的解决方案。
解决方案
应该工作的步骤:
确保引用确实是项目引用,而不是直接引用构建的 DLL。
确保在构建后将所有 PDB 复制到输出文件夹。
使用您尝试过的任何一种方法(符号包或硬编码包含 .pdb 扩展名)。
如果这没有按预期工作,我建议提供其他详细信息,例如“A”的 csproj 文件和尝试的任何 nuspecs。
推荐阅读
- r - R / ggplot 用于 2 个分类特征的百分比是
- vb6 - 数据环境、真正的 DB 网格和 VB6
- python - 通过基于另一列的模式估算列值
- javascript - 如何在嵌套的 javascript 对象上使用扩展运算符?
- webflow - 我正在寻找在 Webflow 项目中做一个无限滚动循环自定义代码
- plaid - 删除 Plaid 中的项目会破坏 access_token 吗?
- .net-core - 构建错误:COMReference .NET CORE 3.0:未找到 AxImp
- javascript - Dialogflow webhook TypeError:无法读取属性“参数”
- hibernate - JPA 多对多更新记录
- java - Jersey 客户端无法反序列化 XML 输出:未找到消息正文阅读器