所以我真的很想找出答案。
我有一个包含几个项目的解决方案,例如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
文件。我尝试使用DebugSymbols
,DebugType
,EmbedSources
和IncludeSymbolsInPackage
之类的标签来执行此操作,但无济于事。
我也尝试了> dotnet pack A.csproj --include-symbols --include-source
,并生成了A.nupkg
和A.symbols.nupkg
,但是在符号内,只有A.pdb
而不是B.pdb
和{{ 1}}。
所以我想我的问题是:如何从可以调试到的多项目解决方案中创建一个nuget包(因此包括pdb或符号/源,不是一个,而是来自所有引用的项目)?
TLDR:我已经看到了很多潜在的解决方案,但是到目前为止,没有一个可行。
我最后的求助方法可能是:仅将B和C的所有内容添加到A,以便只剩下一个项目,或者创建一个powershell脚本以手动添加C.pdb
中的所有pdb。当然,如果有的话,我想要一个更简单的解决方案。
答案 0 :(得分:0)
应该起作用的步骤:
确保引用确实是 project 引用,并且不直接引用内置的DLL。
确保在构建后将所有PDB复制到输出文件夹。
使用您尝试过的任何一种方法(符号包或对.pdb扩展名的包含进行硬编码)。
如果这不能按预期工作,我建议提供其他详细信息,例如'A'的csproj文件以及尝试的任何nuspecs。