É porque os arquivos em lotes que ele executa estão usando Set
para definir as variáveis de ambiente ( C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat
é o que é executado quando você executa vcvarsall x64
).
Mas Set
apenas define variáveis para a sessão da linha de comando atual. Você precisa usar Setx
para que ele "fique" entre as sessões de linha de comando.
Para mais informações, verifique essas outras perguntas e respostas:
- O que são PATH e outras variáveis de ambiente e como posso defini-las ou usá-las?
- Variável de ambiente não aderida
- Defina as variáveis de ambiente a partir da linha de comando - e fazê-los ficar globalmente
- Qual é o diferença entre SETX e SET em variáveis de ambiente nas janelas
Editar após comentários:
"But the set commands were in the default script"
O VCVarsAll deve ser executado para configurar o ambiente para a única construção / ação que você está prestes a executar, não para defini-los permanentemente.
O Visual Studio instala entradas específicas de "prompt de comando" para acessar as ferramentas (em seu link: "... e escolha um dos prompts de comando da ferramenta nativa ou da ferramenta cruzada.") e os atalhos de prompt de comando especiais executar um / o arquivo em lotes para garantir que as coisas estão corretas quando você usa esses atalhos.
Você pode replicar esses atalhos com seus próprios ...
Crie um novo atalho para cmd /k "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64
, que executará o arquivo em lote (usando x64 como a opção de ambiente) e mantenha a janela da linha de comando aberta.
Em seguida, use esse atalho para abrir o prompt de comando quando quiser usar as ferramentas.