Когда мы запускаем нашу сборку через MSBuild, в каком контексте работает MSBuild в/под?В каком контексте работает MSBUILD?
Причина, по которой я прошу, состоит в том, что я предварительно создал событие, которое вызывает программу командной строки (ajax minification), которая отлично работает, если проект построен через VS2010 (на том же компьютере), но не работает, когда наш (CCNet) строит его. Ошибка, которую я получаю, равна 9009, а это значит, что ее не удается найти файл. У программы командной строки есть путь к среде, установленный для ее местоположения (путь среды задается через setx, возможно, он установлен только для текущего пользователя?), Поэтому вызов только его имени отлично работает во всех случаях, когда CCNet вызывает MSBuild.
Событие предварительной сборки выполняется классом MSBuild Exec. Выполняет команды в скрытом экземпляре cmd.exe. Рабочий каталог установлен в выходной каталог проекта, исходная среда наследуется от родительского процесса. Do * not * используйте SETX, который не будет изменять среду. Используйте SET. Используйте PATH для изменения пути. –
Можете ли вы объяснить, где я должен использовать SET PATH? Я использовал SETX один раз после того, как я установил программу миниатюризации ajax. Как использовать SET PATH в событии предварительной сборки? – BlueChameleon
Просто поставьте его в событие pre-build: set path = c: \ foo \ bar;% path%. –