Во-первых, описанное вами поведение «менеджера пакетов с открытым исходным кодом» на самом деле не является «менеджером пакетов с открытым исходным кодом». Это реализация некоторых менеджеров пакетов. Например, Java Maven (mvn
) делает то же самое, что и .NET Core, и вы не можете утверждать, что maven является закрытым исходным кодом.
Во-вторых, некоторые менеджеры пакетов, такие как npm
, копируют всезависимости в каталог пакета (например, node_modules
), потому что они используют источники, а не двоичные файлы, и потому что они захватывают транзитивные источники и несколько зависимостей с одинаковыми именами, но разными версиями. NuGet этого не делает. Он использует только двоичные файлы и не поддерживает несколько версий. NuGet разрешает только одну версию для каждой зависимости в вашем проекте. Для получения дополнительной информации см. Этот пост stackoverflow . Точная версия, разрешенная и использованная, записывается в файл .deps.json
в вашем каталоге компоновки.
В-третьих, автономные развертывания .NET Core - которые предназначены для выполнения / распространения без каких-либо дополнительных зависимостей -не используйте кеш пакета. Когда вы публикуете свое приложение (dotnet publish
в командной строке), все зависимости копируются в каталог публикации. Версия заключается в том, что в файле deps.json
, как я уже говорил выше.
Таким образом, основной кэш пакетов nuget, который используется в вашей системе совместно с другими проектами, представляет собой простой кэш двоичных файлов для .NET Core. ,Нет причины, по которой ваш проект должен быть уникальным для копирования в каталог вашего проекта.