Так что я действительно изо всех сил пытаюсь понять это.
У меня есть решение с несколькими проектами, скажем, A, B и C. A ссылается и использует B и C (обе ссылки на проекты). Я хотел создать пакет Nuget из A, и я сделал это успешно, хотя мне пришлось перепрыгнуть через несколько шагов, используя такие вещи:
<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
, и он генерирует A.nupkg
и A.symbols.nupkg
, но внутри символов только A.pdb
, а не B.pdb
и C.pdb
.
Итак, я предполагаю, что мой вопрос: Как создать пакет nuget из многопроектного решения, в котором вы можете отлаживать (включая либо pdb, либо символы / источники, не один, а из всех упомянутых проектов)? Strong >
TL; DR: я уже видел много потенциальных решений, но пока ни одно из них не помогло.
- Тема выпуска Nuget git
- поток StackExchange
- В блоге на GeekLearning.io
- И многое другое ...
Некоторые из моих последних мер: просто добавление всего содержимого B и C в A, чтобы остался только один проект, или создание сценария PowerShell для ручного добавления всех pdb в A.symbols.nupkg
. Конечно, хотелось бы более простого решения, если оно есть.