Как использовать пакеты nuget в развертывании для решения Visual Studio - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть решение, которое содержит несколько проектов C #. Некоторые из этих проектов имеют Nuget dll в качестве ссылок. По умолчанию nuget вытягивает все библиотеки в папку с именем packages в папке решения (библиотеки DLL могут зависеть от других библиотек Nuget, поэтому Nuget также вытягивает их в папку пакетов). Это нормально работает для нормальной сборки.

Теперь я хочу развернуть свое приложение, где все .dll находятся в одной папке. Каков наилучший способ собрать все библиотеки Nuget в эту папку.

Примечание : при добавлении ссылок Nuget в проект CopyLocal по умолчанию устанавливается на true, поэтому dll-файлы nuget копируются в папку bin этого проекта. Таким образом, я могу вытащить эти формы DLL там. Но я не уверен, как вытащить зависимости второго порядка (другие библиотеки Nuget, от которых зависят библиотеки Nuget, на которые я ссылаюсь), поскольку они не копируются в папку bin проекта.

1 Ответ

0 голосов
/ 30 апреля 2018

Но я не уверен, как вытащить зависимости второго порядка (другие библиотеки Nuget, от которых зависят библиотеки Nuget, на которые я ссылаюсь), поскольку они не копируются в папку bin проекта projec

Согласно документу Разрешение зависимости :

Каждый раз, когда пакет устанавливается или переустанавливается, включая установлен как часть процесса восстановления, NuGet также устанавливает любые дополнительные пакеты, от которых зависит этот первый пакет.

Эти непосредственные зависимости могут также зависеть от свои, которые могут продолжаться до произвольной глубины.

Итак, когда мы устанавливаем один пакет nuget в наш проект, NuGet добавит dll пакета nuget и его зависимости в проект. Кроме того, NuGet по умолчанию установит свойство CopyLocal в True для зависимостей. В этом случае все зависимости также будут скопированы в папку bin.

Например, когда мы устанавливаем пакет nuget Microsoft.Owin в проект приложения Asp.net, его зависимость owin также будет установлена ​​в проект по умолчанию, а свойство CopyLocal также установлено в True по умолчанию. После завершения установки зависимость owin будет скопирована в папку bin.

Итак, чтобы решить эту проблему, убедитесь, что зависимости установленного пакета nuget также добавлены в проект, и проверьте, установлено ли для свойства CopyLocal значение True.

...