Как создать символы для мультипроектного пакета Nuget? - PullRequest
0 голосов
/ 25 сентября 2018

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

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

TLDR: я уже видел много потенциальных решений, но до сих пор ни один не работал.

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

1 Ответ

0 голосов
/ 03 октября 2018

Шаги, которые должны работать:

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

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

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

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

...