Если ваши проекты "старого стиля" / не SDK / традиционного csproj, AND , если какой-либо проект использует пакет NuGet, если все эти ссылки NuGet определены с использованием packages.config
, тогда использовать вы можете используйте nuget.exe pack -IncludeReferencedProjects
. Однако если какой-либо из ваших проектов использует PackageReference
для определения ссылок на свои пакеты (новые проекты в стиле SDK могут использовать только PackageReference), то nuget.exe pack
не будет правильно создавать зависимости NuGet для этих пакетов. Для проектов с многоцелевым таргетингом в стиле SDK nuget pack
, вероятно, полностью потерпит неудачу.
Единственный поддерживаемый способ упаковать проекты, использующие PackageReference
или любой проект в стиле SDK, - это использовать цель пакета NuGet MSBuild (либо dotnet pack
или msbuild -t:pack
). Тем не менее, это не имеет эквивалента IncludeReferencedProjects
.
для nuget.exe. Если ваши проекты выполнены в стиле SDK, создавать и публиковать их не должно быть более трудным sh один пакет или много пакетов. Просто запустите dotnet pack
для своего решения, и каждый упаковываемый проект будет упакован (не забудьте пометить любой проект библиотеки классов, который вы не хотите, чтобы он был упакован как не упаковываемый). Затем используйте ваш любимый язык сценариев, чтобы найти и опубликовать sh все файлы nupkg. Например (Get-ChildItem -Recurse -Filter *.nupkg $SLN_DIR | ForEach-Object { & dotnet nuget push $_ }
, или скопируйте / переместите все nupkgs в одно место (или используйте соответствующий параметр, чтобы NuGet создавал пакеты там в первую очередь) и используйте dotnet nuget push *.nupkg
.
команда NuGet рекомендует один пакет на сборку, и инструмент автоматически создает зависимости NuGet для ссылок на проекты, поэтому все «просто работает» из коробки. Чтобы создать пакет со всеми включенными сборками, вместо зависимостей NuGet, требуется выполнить кучу работы.