Это потому, что запускаемые пакетные файлы используют Set
установить переменные среды ( C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat
это то, что запускается, когда вы бежите vcvarsall x64
).
Но Set
только устанавливает переменные для текущего сеанса командной строки. Вам нужно использовать Setx
чтобы он "держался" между сеансами командной строки.
Для получения дополнительной информации, возможно, проверьте эти другие вопросы SU и ответы:
Редактировать после комментариев:
«Но заданные команды были в скрипте по умолчанию»
VCVarsAll предназначен для запуска среды, в которой вы собираетесь выполнить отдельную сборку / действие, а не для их постоянной установки.
Visual Studio устанавливает специальные записи «командной строки» для доступа к инструментам (из вашей ссылки: «... и затем выберите одну из командных подсказок встроенного инструмента или кросс-инструмента.»), И эти специальные ярлыки командной строки запускают / пакетный файл, чтобы убедиться, что все установлено правильно, когда вы используете эти ярлыки.
Вы можете скопировать эти ярлыки с вашими собственными ...
Сделайте новый ярлык для cmd /k "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64
, который запустит пакетный файл (используя x64 в качестве параметра среды), а затем оставит окно командной строки открытым.
Затем используйте этот ярлык, чтобы открыть командную строку, когда вы хотите использовать инструменты.
set
команды были в скрипте по умолчанию ... вы имеете в виду, что мне нужно отредактировать весь скрипт, чтобы он работал (setx также имеет немного другой синтаксис, кажется)? Попытка запустить его локально также проблематична, потому что я использую FAR-менеджер, и он запускает сценарии bat в своем собственном процессе, поэтому все изменения теряются после его завершения, поэтому мне приходится использовать raw CMD для всей моей работы, что очень неудобно ,