2015-08-02 1 views
3

Я пытаюсь получить проекты DNX, основанные на принимающем агенте VSO.Выполнение восстановления DNU на VSO build

First вещь - установка DNX. У меня есть следующий Powershell скрипт, чтобы сделать это:

DNX-upgrade.ps1:

dnvm upgrade -r clr -arch x86 -v 1.0.0-beta6 

Он успешно устанавливает и PATH обновляется:

Добавление C: \ Users \ buildguest.dnx \ runtimes \ dnx-clr-win-x86.1.0.0-beta6 \ bin to process PATH
Добавление C: \ Users \ buildguest.dnx \ runtimes \ dnx-clr-win-x86.1.0. 0-beta6 \ Бен пользователя PATH

Затем мне нужно восстановить пакеты Решение с помощью этого сценария:

ДНУ-restore.ps1:

dnu restore 

Но я получаю следующее сообщение об ошибке при Выполнение dnu-restore.ps1:

[error] dnu: Термин 'dnu' не является распознается как имя командлета, функции, файла сценария или операционной системы . Проверьте
[ошибка] правописание от имени или если путь был включен, убедитесь, что путь правильный и повторите попытку.
[ошибка] В C: \ а \ 8ac4a4f6 \ Root \ MyProject \ Разработка \ ДНУ-restore.ps1: 1 символ: 1
[ошибка] + ДНУ восстановление
[ошибка] + ~~~
[ ошибка] + CategoryInfo: ObjectNotFound: (ДНУ: String) [], CommandNotFoundException
[ошибка] + FullyQualifiedErrorId: CommandNotFoundException

Строительные задачи:

Build tasks

Почему это происходит? Неужели dnu должен выполнить? Есть ли лучший способ восстановить пакеты проектов DNX?

+0

Можете ли вы добавить все шаги сборки в один скрипт? Я не уверен, как VSO запускает каждый шаг сборки, но может случиться так, что родительский процесс запущен до того, как переменная окружения задана dnvm, а последующие шаги сборки не поднимут изменения. –

+1

@ VictorHurdugaci: да, что-то странное происходит ... как говорится в сообщении: «Добавление C: \ Users \ buildguest.dnx \ runtimes \ dnx-clr-win-x86.1.0.0-beta6 \ bin для пользователя PATH', что означает, что он должен был быть доступен для второго скрипта ... @ davenewza: вы все еще видите эту проблему? –

+1

@KiranChalla Не обязательно. Я знаю, что некоторые серверы сборки, такие как TeamCity, запускают каждый шаг в другом процессе. Таким образом, если один процесс добавляет что-то к пути, второй не будет его подбирать, потому что у них есть тот же родительский процесс, который был запущен до того, как был установлен env var. –

ответ

2

Использование сценария Prebuild.ps1 от this MSDN article решило проблему.

Как сказал Виктор, возможно, это связано с тем, что этапы выполняются в разных процессах.