Ответ 1
Ссылка на DLL непосредственно из пакета NuGet, который был загружен вручную или установлен в известном месте, может ускорить процесс восстановления и сборки, но имеет несколько опасностей.
Существует ряд вещей, которые пакет NuGet может сделать, когда ссылаются на то, что файл DLL не может. Если вы хотите сослаться на DLL из пакета, убедитесь, что пакет не выполняет одно из следующих действий /account для следующих возможностей:
- Дополнительные пакеты NuGet могут быть включены как зависимости. Если вы обновляете DLL из более нового пакета, вам нужно проверить, изменились ли зависимости, и соответственно обновить проект.
- Пакеты NuGet могут предоставлять различные ссылочные сборки и сборки реализации - например, пакет NuGet может давать dll "поверхность API" в своей папке
ref/
а затем содержать различные сборки реализации для .NET Framework.NET Core, Xamarin и другие файлы в своейlib/
. папка. Вы должны быть осторожны, чтобы выбрать правильный файл DLL для ссылки на тип проекта - в стандартной библиотеке .NET может потребоваться ссылка на сборкуref/netstandard1.4/foo.dll
(например,ref/netstandard1.4/foo.dll
во время компиляции и .NET Framework Приложение, которое использует эту библиотеку, должно ссылаться на сборку, например, изlib/net452/foo.dll
. - Пакеты NuGet могут содержать дополнительную специфику среды выполнения и/или целевой контент, который добавляется в выходные данные сборки. Это могут быть собственные библиотеки (
.dll
в Windows,.so
в Linux и т.д. - изruntime/
подпапки) или любой файл содержимого. Сделать это правильно без NuGet сложно, поскольку файл.nuspec
также может определять действия по сборке для файлов содержимого. - Логика сборки может быть включена в пакеты NuGet, которые устанавливают определенные свойства или выполняют цели во время сборки, что необходимо для правильного использования продукта. Это невозможно сделать вручную без
.csproj
редактирования файла.csproj
.
Если пакет NuGet не использует ничего из вышеперечисленного (которое необходимо проверить вручную), вы, как правило, можете ссылаться на DLL. Тем не менее, обновление DLL и ее зависимостей - это большая работа, которую проще сделать с NuGet.
Кроме того, вы упомянули, что ссылаетесь непосредственно на резервную папку nuget из инструментария .NET Core. Эта папка не обязательно содержит определенные версии DLL в других установках (в зависимости от установленных версий SDK) и может даже быть установлена в другом месте на разных компьютерах, что делает файл проекта непригодным для других людей, работающих над ним (также как сборка на неоконных машинах).