Создание решения Visual Studio 2015 с помощью MSBuild 12

Я пытаюсь создать решение на Jenkins с расширением MSBuild. Я перенес решение с VS 2013 на VS 2015. Чтобы иметь возможность восстановить пакеты NuGet в Visual Studio 2015, мне пришлось удалить папку .nuget, как рекомендовано здесь: http://docs.nuget.org/consumer/package-restore/migrating-to-automatic-package-restore.

Теперь проблема в том, что MSBuild требуется папка .nuget, чтобы иметь возможность восстанавливать пакеты nuget.

Build FAILED.

"E:\_JENKINS\workspace\Project1 - Deploy DEVELOP to BuildServer\Solution1\Build\Build.proj" (DeployTarget target) (1) ->
E:\_JENKINS\workspace\Project1 - Deploy DEVELOP to BuildServer\Solution1\Build\Build.proj(50,5): 
error MSB4019: The imported project "E:\_JENKINS\workspace\Project1 - Deploy DEVELOP to BuildServer\Solution1\.nuget\NuGet.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

0 Warning(s)
1 Error(s)

Я что-то перепутал? Я что-то делаю неправильно?
Потому что работает только одно: MSBuild или Studio Package Restore.

Итак, я либо добавляю папку пакетов в git, либо заменяю автоматическое восстановление в решении восстановлением из командной строки или восстановлением MSBuild. Но в любом случае оба решения кажутся неправильными.


person Darkglow    schedule 17.08.2015    source источник
comment
Просто удалите ссылку на этот целевой файл из файлов проекта (csproj), а затем используйте nuget restore solution.sln для восстановления пакетов перед компиляцией. В документации NuGet есть дополнительная информация о такой миграции.   -  person Lex Li    schedule 18.08.2015


Ответы (1)


Способ работы восстановления пакета NuGet изменился между Visual Studio 2013 и 2015.

Первым шагом в процессе сборки должен быть прямой вызов NuGet.exe, например:

nuget restore solution.sln

Я поместил NuGet.exe в PATH на моем компьютере сборки.

Вы должны увидеть в консоли (или в журнале шагов конвейера) восстанавливаемые пакеты.

Если нет, вам может потребоваться посмотреть настройки прокси Jenkins, в зависимости от того, где ваш Jenkins находится в сети по отношению к Интернету. Раньше мне приходилось запрашивать учетную запись службы с «привилегированным» доступом к nuget.org/*

После того, как все пакеты будут восстановлены, вы должны увидеть папку packages / как родственную вашему файлу решения в рабочей области Jenkins.

Затем вы можете вызвать MSBuild с помощью / t: Clean и / t: Rebuild по очереди и ожидать, что пройдете этап пакета NuGet.

person Andrew Gray    schedule 22.10.2017