У меня запущен частный веб-канал пакетов NuGet, который я использую для совместного использования определенных функций и расширений между моими проектами. Он отлично работает в Visual Studio, но недавно я начал настраивать сборку с непрерывной интеграцией для одного из своих проектов в Visual Studio Online, и кажется, что VSO не может видеть мою частную ленту.
Я использую новый метод восстановления пакетов, который включает в себя установку флажка «Разрешить NuGet загружать отсутствующие пакеты» в параметрах VS. Я не использую параметр "Включить восстановление пакета NuGet" в контекстном меню решения, потому что на самом деле это старый способ сделать это и вызывает проблемы в другом месте.
Я также не делаю ничего, что могло бы изменить файлы моего проекта; Я использую пользовательское определение сборки (используя материал рабочего процесса XAML), чтобы я мог применить его к любому из моих проектов, просто выбрав его из раскрывающегося списка «Шаблон процесса сборки» в редакторе определения сборки. Я делаю это таким образом, потому что я добавляю множество других шагов, включая некоторые сценарии после сборки, чтобы облегчить автоматическое развертывание на хостинг-сервере; некоторые из этих шагов немного сложны, поэтому сохранение их в процессе сборки означает, что мне нужно настроить их только один раз.
Итак, не используя старое решение с контекстным меню, которое помещает nuget.exe в папку решения, и не вмешиваясь в сам проект, как я могу получить сборку VSO для восстановления пакетов из моего личного канала?
В шаблоне рабочего процесса сборки есть действие NuGetRestore, которое может принимать аргументы командной строки. Я добавил следующее:
"-source https://www.nuget.org/api/v2/ http://www.example.com/nuget"
но это, кажется, не имеет значения. В этом действии также есть поле для «указания решений, для которых требуется восстановление пакетов NuGet», и я только что установил для него переменную ProjectsToBuild
, которая задается при определении сборки. Я не получаю никаких ошибок от nuget.exe (по крайней мере, я не вижу), но сборка завершается ошибкой. Интересно, что в нем говорится, что соответствующие пространства имен не существуют, а не то, что ссылки не могут быть разрешены. Любые идеи?