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