Как создать символы для многопроектного пакета Nuget?

Так что я действительно изо всех сил пытаюсь понять это.

У меня есть решение с несколькими проектами, скажем, 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, либо символы / источники, не один, а из всех упомянутых проектов)?

TL; DR: я уже видел много потенциальных решений, но пока ни одно из них не помогло.

Некоторые из моих последних мер: просто добавление всего содержимого B и C в A, чтобы остался только один проект, или создание сценария PowerShell для ручного добавления всех pdb в A.symbols.nupkg. Конечно, хотелось бы более простого решения, если оно есть.


person stealthjong    schedule 25.09.2018    source источник
comment
Что такое B и C? Пакеты Nuget, ссылки на проекты или двоичные ссылки   -  person Troopers    schedule 25.09.2018
comment
Ссылки на проекты @Troopers   -  person stealthjong    schedule 25.09.2018
comment
Вы можете попробовать с пакетами Nuget (A ссылается на B и C как на пакеты Nuget) и сгенерировать пакеты с символами для A, B и C   -  person Troopers    schedule 25.09.2018
comment
Какой у вас проект? .NET Core? Какая версия?   -  person Rui Jarimba    schedule 03.10.2018


Ответы (1)


Действия, которые должны работать:

  1. Убедитесь, что ссылки действительно являются ссылками на проект и не ссылаются напрямую на встроенные библиотеки DLL.

  2. Убедитесь, что все PDB копируются в выходную папку после сборки.

  3. Используйте любой из методов, которые вы пробовали (пакет символов или жесткое кодирование с включением расширения .pdb).

Если это не работает должным образом, я бы рекомендовал предоставить дополнительные сведения, такие как файл csproj для 'A' и любые опробованные спецификации nuspec.

person Andrew Hanlon    schedule 03.10.2018