NuGet, Packages.config, .csproj и ссылки

У меня есть вопрос, чтобы я мог лучше понять NuGet пакеты, packages.config и .csproj файл.

Насколько я понимаю, настройка в диспетчере пакетов NuGet >> Общие для формата управления пакетами по умолчанию определяет, использует ли ваш проект packages.config или .csproj файл для разрешения и восстановления пакетов. В моем проекте мы выбрали Packages.config.

Нет проблем, он компилируется и запускается. Поэтому я решил проверить, будет ли он работать без ссылки на dll в .csproj файл, как я понимаю, он не использует или не нуждается в этом. Это неверное предположение, как будто пакет находится в packages.config файл, когда я удалил ссылку в .csproj В моем проекте произошла ошибка, и проект не будет скомпилирован.

Я также заметил, что если dll не в ссылках в Solution Explorer что он не компилируется, а я (я предполагаю, что это .csproj Рекомендации).

Так что мне не ясно, роль .csproj файл для Packages.config Формат управления для NuGet пакеты и ссылки в Solution Explorer,

2 ответа

Разница заключается в том, как вы управляете своими ссылками NuGet.

До VS2017 информация о том, какие пакеты NuGet будут использоваться во время сборки, хранилась в файлах packages.config.

Начиная с VS2017 появилась новая опция, называемая ссылками на пакеты, которая хранит эту информацию в файле проекта (.csproj).

https://devblogs.microsoft.com/nuget/migrate-packages-config-to-package-reference/

До VS2017 и .NET Core NuGet не был глубоко интегрирован в MSBuild, поэтому требовался отдельный механизм для перечисления зависимостей в проекте: packages.configили же project.json

Используя Visual Studio, разработчик вручную интегрирует MSBuild с NuGet, используя ссылки на восстановленные пакеты в общей папке решения, управляемой NuGet.

Начиная с VS2017 и .NET Core, NuGet становится первоклассным гражданином в MSBuild. Зависимости пакетов NuGet теперь перечислены как PackageReference в .csproj

Другие вопросы по тегам