Visual Studio Command Prompt дает "\ Common в это время было неожиданным"

Мне нужно запустить MSBuild из командной строки с помощью командной строки Visual Studio (2010). Он работал нормально. Теперь, когда я открываю окно, я получаю следующее сообщение об ошибке:

\Common was unexpected at this time.

Попытка запустить команду msbuild после сбоя.

Я, естественно, предположил, что это проблема с некотируемой записью в моей переменной среды PATH, возможно, из недавней установки для изгоев. Я проверил это, но PATH кажется кошерным.

Копаясь в файловой системе, я обнаружил, что командный файл, который запускается в командной строке, - это C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat. Я отредактировал это, вставив в операторы ECHO отслеживание местоположения ошибки. Это, казалось, указывало на ошибку в этой строке:

@if not "%WindowsSdkDir%" == "" (

Если я удалю кавычки, ошибка будет иной: "Файлы в это время не ожидались".

Следующие две строки после этого:

@echo 51
@set "PATH=%WindowsSdkDir%bin\NETFX 4.0 Tools;%WindowsSdkDir%bin;%PATH%"

Я предположил, что утверждение об ошибке было второй строкой, но оператор ECHO не выводит никакого вывода, поэтому я не знаю, как это могло произойти.

Я использую 64-разрядную версию Windows 7.

Я был бы признателен за любую помощь.

Ответы

Ответ 1

Смотрите этот поток.

Я предполагаю, что ваш PATH недавно был изменен и теперь содержит некоторый путь к папке с кавычками внутри.

НТН

Ответ 2

Моя проблема заключалась в том, что внутри блока if rval присваивания переменной (% PATH% в моем случае) содержал круглые скобки, например:

set var=foo ) got ya

if 1 == 2 (
    set var2=%var%
)

Дисплеи "получилось неожиданным в это время."

Я нашел ответ здесь: Пакетная переменная файла с пробелами и круглыми скобками. Который должен использовать расширенный синтаксис set. Например:

set "var2=%var%"

Это не добавляет кавычки и не влияет на результат, хранящийся в% var2%.

Ответ 3

У меня были кавычки (") в переменной PATH, которые вызвали это, после того как я удалил их, он начал работать.