Создание пакета Nuget, не включая ссылочные dll - PullRequest
0 голосов
/ 24 мая 2019

Я использую версию сообщества Visual Studio 2019 и консоль менеджера пакетов. Я использую .net core 2.2, и ссылки на пакеты включены. Я хочу иметь возможность создать один отдельный пакет nuget coreproj1, который также будет включать dll для Coreproj2 и coreProj3, без необходимости упаковывать CoreProj2 и CoreProj3, поскольку существует много проектов, и упаковать их все невозможно. Я посмотрел в Интернете и не могу найти четкого решения, так как не многие из них используют ссылку на пакет

  CoreProj1 references CoreProj2 and CoreProj3 
  CoreProj2 and CoreProj3 do not reference anything

Я сейчас использую

   dotnet pack "full project path" --output "outputPath" 

Когда я пытаюсь установить пакет, я получаю следующую ошибку (я получаю ту же ошибку для CoreProj3)

  Error NU1101  Unable to find package CoreProj2. No packages exist with this id in source(s): LocalPackages, Microsoft Visual Studio Offline Packages, nuget.org,  TestNuget   source\repos\TestNuget\TestNuget\TestNuget.csproj   1

1 Ответ

1 голос
/ 25 мая 2019

Включая сборки проектов, на которые ссылаются, используя цели пакета MSBuild (dotnet pack фактически просто псевдоним для dotnet msbuld -t:pack) не поддерживается . nuget.exe pack имеет аргумент IncludeReferencedProjects, который делает то, что вы хотите, но не работает правильно для проектов, использующих проекты PackageReference или SDK (которые всегда PackageReference).

Один из возможных обходных путей - это создать скрипт сборки, который сначала соберет все ваши проекты, затем скопирует все ваши сборки в макет пакета nuget и использует nuget.exe pack для упаковки этого макета каталога.

Другой обходной путь - иметь nuspec с набором <file src="..." target="lib\<tfm>\"> элементов, который говорит NuGet упаковать все сборки из их скомпилированных расположений.

Другой обходной путь - использовать расширяемость MSBuild, чтобы сообщить объектам NuGet MSBuils о сборках, которые вы хотите упаковать после сборки, но перед сборкой. В приведенной выше ветке есть несколько комментариев, в которых приведены примеры того, как это можно сделать.

...