2015-01-30 3 views
3

Верно ли, что для каждой зависимости, которую пакет имеет в какой-либо другой библиотеке, необходимо также разрешить и установить эти библиотеки?Зависимости пакета NuGet

Например, я создал пакет, который использует NLog, Postsharp и WindowsAzure.Storage:

NuGet Dependencies

ли клиенты моего пакета должны теперь установить эти пакеты, а? Почему невозможно включить эти библиотеки зависимостей в пакет?

ответ

7

Когда потребитель устанавливает ваш пакет nuget, nuget автоматически разрешит и установит зависимые пакеты.

В комплект поставки можно включить DLL, но это не рекомендуется. Потому что так или иначе им нужно будет иметь ссылки на DLL, которые им нужно использовать для вашего пакета (в данном случае NLog, PostSharp и WindowsAzure.Storage). Лучше, чтобы потребитель контролировал, какие библиотеки установлены.

Еще одно преимущество наличия зависимостей через nuget заключается в том, что потребитель может решить установить более новую версию библиотеки WindowsAzure.Storage, которую он может легко сделать, когда у вас нет DLL, введенной в пакет. В противном случае вы можете столкнуться с некоторыми беспорядочными ошибками времени сборки.

Вы контролируете, что ваш пакет содержит через файл nuspec, используемый для сборки пакета nuget.

+2

Этот ответ не очень ясен. Файл _nuspec_ должен содержать список зависимостей для вашего пакета. Когда пользователь устанавливает ваш пакет, NuGet будет смотреть на зависимости и будет устанавливать их автоматически, если они еще не присутствуют. Он также установит любые зависимости этих зависимостей и т. Д. ПРИМЕЧАНИЕ. Пользователю НЕ нужно вручную устанавливать зависимости. См. _Specifying Dependencies_ на странице http://docs.nuget.org/create/nuspec-reference. – Kiliman