Зависимость NuGet не устанавливается

Чего я хочу достичь: у нас есть решение на C #, в котором нужно создать множество сборок. Я хочу создать пакет NuGet, включающий все сборки, созданные решением (вы могли бы назвать его пакетом «всего решения»). Пакет также должен установить все зависимости содержащихся сборок.

Что я сделал до сих пор: я сам создал * .nuspec-файл (так как я не мог использовать * .csproj-подход, потому что пакет должен содержать все сборки из полного решения) . Он содержит все зависимости (сокращенный пример - группа зависимостей не используется):

<dependencies>
    ...
    <dependency id=Insight.Itk.x64" version="2.4.8.0" />
    <dependency id=Intel.Ipp.x64" version="6.1.2.041" />
    ...
</dependencies>

Я создал пакет с помощью NuGet 2.8.1 и опубликовал его на нашем локальном NuGet-сервере. Все пакеты NuGet с зависимостями в файле * .nuspec также были опубликованы на этом сервере.

В чем проблема? Теперь, когда я устанавливаю пакет, я ожидал, что сборки моего пакета NuGet будут установлены и сборки из зависимостей пакета. Сначала все идет гладко, но пакет зависимостей не установлен. Я пробовал установить с помощью команды

nuget.exe install packages.config -source http://path-to-nuget-server -o C:\install_path

где packages.config включает только мой опубликованный пакет.

Когда я пытаюсь установить зависимые сборки, используя ту же команду, что и файл packages.config, содержащий все из них как пакеты, он устанавливает их с нашего NuGet-сервера без каких-либо сообщений об ошибке.

То, что я уже пробовал с целью некоторого исследования (безуспешно), это:

  • Вызывается "nuget pack" со всеми * .nupkg-файлами зависимостей в той же папке, что и мой * .nuspec-файл.
  • Создал файл NuGet.config с packageSources-Items для нашего локального NuGet-сервера

Может быть, кто-нибудь подскажет мне правильное решение? Просто кажется, что мне что-то не хватает при упаковке, или, может быть, NuGet не может разрешить зависимости при установке.


person Michael Beck    schedule 02.12.2016    source источник


Ответы (1)


Команда nuget.exe install packages.config не обновляет файл packages.config. Все, что делает эта команда, - загружает пакеты NuGet, определенные в файле packages.config, в каталог. Он не будет загружать какие-либо зависимости, если они явно не указаны в файле packages.config.

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

person Matt Ward    schedule 03.12.2016
comment
Понял. Неправильные ожидания. Как дополнительная информация: мы хотим использовать этот пакет в процессе сборки, а не непосредственно в Visual Studio. Но добавление всех зависимостей в packages.config, конечно, решило эту проблему. - person Michael Beck; 04.12.2016