Что является основным различием между публикацией dotnet и пакетом dotnet
В чем основное различие между dotnet pack
и publish
?
Из описания Microsoft я понимаю, что pack
создает пакет, а publish
создает пакет + DLL.
Это верно?
Если так, то почему бы просто не всегда использовать publish
и не использовать файл DLL, если он не нужен.
Ответы
Ответ 1
dotnet pack
- Создает NuGet-пакет вашего кода.
В этом ключевое отличие - это позволит публиковать на http://nuget.org или на сервере Nuget, который может быть удален другими разработчиками, или даже для использования с Octopus Deploy.
dotnet publish
- Публикация .NET-зависимого или автономного приложения.
Ключевое слово - "автономный", возможно, установщик, или папка, которая может быть развернута путем копирования/вставки между хостами.
Ответ 2
Добавление к ответу @t0mm13b:
dotnet pack
: выход представляет собой пакет, который предназначен для повторного использования другими проектами.
dotnet publish
: вывод является средним для развертывания/ "отгрузки" - это не один "пакетный файл", а каталог со всем выходом проекта.
Ответ 3
По сути, когда мы используем команду pack
, она создает пакет, а когда мы используем команду publish
, она создает папку, которую можно скопировать и выполнить в любом месте из нее. Но что делает команду pack
уникальной, так это то, что пакет обновляется на сервере nuget без загрузки его зависимостей. Его зависимости обновляются в проекте, который выбирает пакет, когда мы запускаем команду dotnet restore
, и это не относится к случаю dotnet publish
, поскольку он содержит сторонние зависимости, упакованные в пакет.