У меня есть пакетный файл, который вызывает MSBuild
и строит три Визуальные решения Студия:Невозможно определить местоположение папки Tools VS Common
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
MSBuild solution0.sln /property:Configuration=Release
MSBuild solution1.sln /property:Configuration=Release
MSBuild solution2.sln /property:Configuration=Release
Это прекрасно работает. Однако я хочу предложить пользователю выбрать версию программы для сборки. В зависимости от ввода пользователя мы создаем определенный набор решений.
Моя проблема в том, что если я изменяю переменную PATH
после вызова vcvarsall
, я больше не могу позвонить MSBuild
.
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
set /P version="Enter the version number [1] or [2]:"
IF %version% == 1 (
set PATH="%PATH%;%PATH_TO_VERSION1_LIBS%"
MSBuild solution0_v1.sln /property:Configuration=Release
MSBuild solution1_v1.sln /property:Configuration=Release
MSBuild solution2_v1.sln /property:Configuration=Release
)
IF %version% == 2 (
set PATH="%PATH%;%PATH_TO_VERSION2_LIBS%"
MSBuild solution0_v2.sln /property:Configuration=Release
MSBuild solution1_v2.sln /property:Configuration=Release
MSBuild solution2_v2.sln /property:Configuration=Release
)
Я получаю следующее сообщение об ошибке:
Setting environment for using Microsoft Visual Studio 2010 x86 tools.
ERROR: Cannot determine the location of the VS Common Tools folder.
Это озадачивает, потому что переменная окружения VS100COMNTOOLS
определена.
Избавиться от этих двойных кавычек в присвоении PATH. –
@HansPassant Я добавил двойные кавычки, потому что я на 64-битной машине. Каталоги со специальными символами, такими как 'C: \ Program Files (x86)', будут разбивать командные команды. – Derek
Он не разрушает переменную среды PATH, встроенные пространства в порядке. ; точка с запятой делает его однозначным. Вы пробовали это или вы просто считаете, что это не работает? –