Prompt de comando VS2010 dá erro: não é possível determinar o local da pasta VS Common Tools

Eu instalei o VS2010. A instalação cria o atalho para o prompt de comando do VS2010, mas quando eu abro o prompt de comando, recebo o erro:

Não é possível determinar o local da pasta VS Common Tools.

Eu verifiquei a variável de ambiente VS100COMNTOOLS e tem valor: C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\ e o registro para HKEY_local_Machine\Software\Microsoft\Visual Studio\SxS\VS7 está definido como: C:\Program Files\Microsoft Visual Studio 10.0\ .

Eu verifiquei o VSvars32.bat e tentei adicionar echo para encontrar até onde ele prossegue. Ele falha neste comando:

 @call :GetVSCommonToolsDirHelper32 HKLM > nul 2>&1 

Eu tive o mesmo problema e encontrei a resposta aqui .

O problema é que o bastão usa o comando de reg e o procura na variável de sistema PATH. De alguma forma você conseguiu “C: \ Windows \ System32” fora da variável PATH, então vá para as variables ​​do sistema (clique com o botão direito em “Meu Computador”> “Propriedades”> configuração avançada> “Variáveis ​​de Ambiente”, pesquise o PATH). variável e adicione no final separados por ” ; “: C: \ Windows \ System32

Eu tive os mesmos problemas em duas máquinas: Win8.1×64 com Visual Studio Ultimate 2013 (VS2013) e Win8x64 com VS2013 final

Problema: Atalho ” Prompt de comando de ferramentas nativas VS2012 x86 ” que aponta para o arquivo: C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 11.0 \ VC \ vcvarsall.bat que chama C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin \ vcvars32.bat tenta procurar o registro para o nome do valor “11.0”:

 reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "11.0" 

No entanto, minha máquina não tem esse valor “11.0” , em vez disso, ele tem “12.0”

Minha solução é executar C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 12.0 \ VC \ vcvarsall.bat que chama C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ vcvars32.bat que consulta corretamente o registro como o seguinte:

 reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "12.0" 

Assim, alterando / executando de C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 11.0 \ VC \ vcvarsall.bat para C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 12.0 \ VC \ vcvarsall.bat resolveu no meu caso

Esse mesmo problema apenas começou a ocorrer para mim e eu fui capaz de “corrigi-lo” atualizando o arquivo vcvars32.bat localizado na pasta C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ (por padrão) . Adicione o seguinte após a primeira linha:

 @SET VSINSTALLDIR=c:\Program Files\Microsoft Visual Studio 10.0\ @SET VCINSTALLDIR=c:\Program Files\Microsoft Visual Studio 10.0\VC\ @SET FrameworkDir32=c:\Windows\Microsoft.NET\Framework\ @SET FrameworkVersion32=v4.0.30319 @SET Framework35Version=v3.5 

Em seguida, comente as seguintes linhas:

 :: @call :GetVSCommonToolsDir :: @if "%VS100COMNTOOLS%"=="" goto error_no_VS100COMNTOOLSDIR :: @call "%VS100COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit 

Encontrei isso aqui . Observe que eu digo corrigir nas aspas porque eu não verifiquei se todas as variables ​​apropriadas estão definidas corretamente; Dito isto, em um olhar superficial, parece ser válido.

Note que você terá que editar o arquivo vcvars32.bat em um editor de texto elevado (isto é, Executar como Admin) para salvar o arquivo no Vista e no Windows 7.

O problema no meu caso foi um erro de digitação na variável PATH. Como o vsvars32.bat usa a ferramenta “reg” para consultar o registro, ele estava falhando porque a ferramenta não foi encontrada (apenas digitar reg em um prompt de comando estava falhando para mim).

Esse é um ótimo post. Antes de fazer todas as alterações no arquivo vcvarsall.bat, tente executar o prompt de comando do vs2010 como administrador. Se isso ainda não resolver o problema, tente adicionar C: \ Windows \ System32 à variável de ambiente PATH. Se tudo mais falhar, edite o arquivo de lote conforme descrito acima.

Eu não tive isso há muito tempo como resultado da edição do registro sendo bloqueada por uma política de grupo.

O problema específico é que reg é negado o access ao registro. Eu resolvi isso replicando o ‘reg.exe’ usando Microsoft.Win32.Registry em um programa c # e, em seguida, substituindo todas as chamadas para reg, com meu programa alternativo. Você precisa atualizar:

  • VCVarsQuery.bat
  • VsDevCmd.bat
  • VsVars32.bat

Na pasta %VSxxxCOMNTOOLS% (geralmente resolve algo como C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio XX.X \ Common7 \ Tools)

  static int Main(string[] args) { try { var targetRegistry = args[1].Substring(0, 4); var targetKey = args[1].Substring(5); string targetValue = null; if (args[2].ToLower() == "/v") { targetValue = args[3]; } else { return 1; } var hkey = targetRegistry == "HKLM" ? Registry.LocalMachine : Registry.CurrentUser; var key = hkey.OpenSubKey(targetKey); var result = key.GetValue(targetValue); Console.WriteLine(); Console.WriteLine(key.Name); Console.WriteLine(" {0} REG_SZ {2}", targetValue, key.GetValueKind(targetValue), result); Console.WriteLine(); Console.WriteLine(); return 0; } catch { return 1; } } 

Em casos como este, você também pode usar minha implementação alternativa de reg aqui .

Eu estava enfrentando o mesmo problema. Eu olhei em variável de ambiente para a variável ‘PATH’ eu não consegui encontrar isso. Então eu adicionei uma variável ‘Path’ com o valor “C: \ Windows \ System32”. Tudo está resolvido agora.

Direcione os caminhos para os locais corretos no seu computador. Essa configuração pressupõe que você tenha a maioria dos programas instalados em um local central (C: \ Development). Para meu uso, não eliminei assim a necessidade de DEV.

 @ECHO OFF set DEV=C:\Development set QTDIR=%DEV%\Qt set PATH=%SystemRoot%;%SystemRoot%\system32;%QTDIR%\bin echo Setting OpenSSL Env. set OPENSSL=%DEV%\OpenSSL set PATH=%OPENSSL%\bin;%PATH% set LIB=%OPENSSL%\lib set INCLUDE=%OPENSSL%\include echo Setting NASM Env. set PATH=%DEV%\NASM;%PATH% echo Setting DirectX Env. set LIB=%DEV%\DirectX SDK\Lib\x86;%LIB% set INCLUDE=%DEV%\DirectX SDK\Include;%INCLUDE% echo Setting Windows SDK Env. set WindowsSdkDir=%DEV%\Windows 7.1 SDK set PATH=%WindowsSdkDir%\Bin;%PATH% set LIB=%WindowsSdkDir%\Lib;%LIB% set INCLUDE=%WindowsSdkDir%\Include;%INCLUDE% set TARGET_CPU=x86 echo Setting MSVC2010 Env. set VSINSTALLDIR=%DEV%\MSVC set VCINSTALLDIR=%DEV%\MSVC\VC set DevEnvDir=%VSINSTALLDIR%\Common7\IDE set PATH=%VCINSTALLDIR%\bin;%VSINSTALLDIR%\Common7\Tools;%VSINSTALLDIR%\Common7\IDE;%VCINSTALLDIR%\VCPackages;%PATH% set INCLUDE=%VCINSTALLDIR%\include;%INCLUDE% set LIB=%VCINSTALLDIR%\lib;%LIB% set LIBPATH=%VCINSTALLDIR%\lib echo Setting Framework Env. set FrameworkVersion=v4.0.30319 set Framework35Version=v3.5 set FrameworkDir=%SystemRoot%\Microsoft.NET\Framework set LIBPATH=%FrameworkDir%\%FrameworkVersion%;%FrameworkDir%\%Framework35Version%;%LIBPATH% set PATH=%LIBPATH%;%PATH% echo Setting Perl Env. set PATH = C:\Perl\bin;%PATH% echo Env. ready. title Qt Framework 4.8.0 Development Kit. cd %DEV% 

Salvar arquivo como * .bat

execute o prompt de comando do Visual Studio e execute * .bat.

Isso deve corrigir todos os problemas de ambiente, então execute configure

EDIT Quase esqueci de crédito onde o crédito é devido: http://developer.qt.nokia.com/wiki/Building_Qt_Desktop_for_Windows_with_MSVC

Eu tenho o mesmo problema, mas razão diferente. Eu tinha “reg.bat” no diretório atual. Renomear isso em qualquer outra coisa resolveu o problema.

Então, eu descobri a causa raiz de todos os problemas neste segmento. Eu originalmente pensei que era específico para 2010, mas os arquivos em lote para 2013 têm o mesmo erro de syntax de análise de token. Basicamente, todos os arquivos em lote que o MS distribui com seus compiladores de 2010 para pelo menos 2013 possuem esse mesmo erro. Se você procurar todos os arquivos .bat dessa string

 "%%i" 

e substitua-o por

 "%%j" 

tudo funcionará corretamente. Basicamente, eles estão tentando consultar o registro para inputs de versão diferentes para obter os caminhos corretos a serem usados. Eles criam um loop for que itera os tokens de cada linha que a consulta obtém. Existem três tokens que devem voltar. Eles usam %% i para o primeiro, que seria REG_SZ, para ver se algo foi encontrado. Em seguida, eles usam o mesmo para comparar com uma string de versão. Eles devem estar usando %% j para obter o segundo token, que seria 8.0 ou 10.0 ou 12.0 e, na verdade, renderia uma boa comparação. Então eles usam corretamente %% k para obter o caminho associado à versão.

Novamente, faça a pesquisa simples e substitua todos os arquivos que possuem um padrão como este:

 @for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "12.0"') DO ( @if "%%i"=="12.0" ( @SET "VS120COMNTOOLS=%%k" ) ) 

e fazer com que pareça assim:

 @for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "12.0"') DO ( @if "%%j"=="12.0" ( @SET "VS120COMNTOOLS=%%k" ) ) 

alterando a segunda ocorrência de %% i, que está entre aspas, para %% j.

Espero que isto ajude!

O mesmo problema ocorreu para mim quando eu estava instalando uma biblioteca python e disse incapaz de encontrar o caminho do Visual Studio 2008/10. Eu mudei o PATH de variables ​​ambientais. Então, para mudá-lo, o seguinte processo pode ser adotado: Start => Computer => Properties => Advance System Settings => Variáveis ​​de Ambiente => Variáveis ​​do Sistema. Aqui você encontrará a variável de caminho. Se algum caminho já estiver definido, você pode usar ponto-e-vírgula (;) para adicionar o caminho ” C: \ Windows \ System32 “, caso contrário, adicione o mesmo.

Eu estava recebendo o mesmo erro ao tentar executar um processo de publicação através do PowerShell na minha máquina de compilation.

Minha máquina de compilation tem apenas o Windows SDK instalado e não o Visual Studio e, como tal, parece que estou faltando alguns arquivos comuns e valores do Registro que normalmente estão presentes quando o Visual Studio está instalado. Depois de olhar em vsvars32.bat um pouco mais com cuidado, notei que era onde o erro “Não é possível determinar a localização do VS Common Tools pasta” estava sendo relatado localizado sob o label GetVSCommonToolsDir. Parece que nesse arquivo em lote que, como a subchave VS7 não existe na minha máquina, ela apaga a variável de ambiente% VS100COMNTOOLS% e relata o erro especificado.

No meu caso, parece que esse erro está acontecendo para mim porque eu não tenho o Visual Studio ou alguns outros componentes necessários instalados na minha máquina de compilation e, portanto, a chave do registro não existe. Talvez seu erro seja devido a algo semelhante, como registro de 32 bits vs 64 bits ou prompt de comando VS de 64 bits vs 64 bits? Testar a linha de código que está falhando diretamente no lote no prompt de comando deve fornecer uma pista sobre o motivo pelo qual o registro ou o caminho do arquivo não está sendo resolvido corretamente.

Eu tive esse problema quando eu instalei algo que criou uma variável PATH do ambiente de usuário. Meu agente de compilation do TeamCity estava sendo executado como um serviço sob o meu próprio nome de usuário e ele encontrou a variável PATH do usuário em vez da variável PATH da máquina. Com a variável do caminho errado, não foi possível encontrar muita coisa e deu esse erro.

Para mim, isso foi causado pela variável de ambiente PATH sendo definida para um valor vazio para o meu perfil de usuário . A variável do sistema foi definida corretamente, então eu apaguei a variável PATH em branco do meu perfil e tudo funcionou novamente.

Eu tenho um animal gnarly trabalhando apenas com o arquivo de lote Microsoft Windows SDK v7.1 SetEnv.Cmd – ou seja: eu não tenho Visual Studio v instalado e não tem que usar qualquer um dos prompts cmd especialmente preparados (onde vsvars32.bat et al levantam suas cabeças feias). Eu apenas tenho o Microsoft Windows SDK para Windows 7 (7.1) instalado com seus compiladores C / C ++. Na minha checkbox Xp64, esta é a sequência que eu usei para poder compilar uma das amostras do DirectX SDK Audio de junho de 2010:

 REM open a regular old cmd.exe and run these 3 REM this builds the Win32 (ie: x86) version of the exe cd "C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\XACT\Tutorials\Tut02_Stream" "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /debug /x86 /xp "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" Tut02_Stream_2010.sln /p:Configuration=Debug /p:Platform=Win32 

Observe que o uso da versão Framework64 do MSBuild.exe me impede de criar a versão X64 (devido a destinos?), Mas a versão X86 do MSBuild construiu com êxito a versão X64 do mesmo tutorial exe:

 REM open a regular old cmd.exe and run these 3 REM this builds the X64 version of the exe cd "C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\XACT\Tutorials\Tut02_Stream" "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /debug /x64 /2003 "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" Tut02_Stream_2010.sln /p:Configuration=Debug /p:Platform=X64 

Eu também enfrentei o mesmo problema. Inicialmente tentei modificar o PATH do Sistema que não funcionou. Mais tarde, resolveu instalar o Micro Visual Studio Express.

Eu me deparei com esse mesmo problema ao fazer uma compilation em nosso sistema de compilation do Windows 7. Eu estava preenchendo a ausência do nosso engenheiro de construção, e foi a primeira vez que fiz isso desde que migramos do Windows XP para o Windows 7 de 32 bits. Os requisitos de TI para o nosso sistema de compilation têm bloqueado as permissions para onde é muito difícil fazer as operações mais rotineiras. Acontece que o problema se deveu à falta de privilégios elevados. Ao fechar o Visual Studio 2010 e reabri-lo com direitos de administrador (Executar como Administrador), o problema foi corrigido.

Então, isso é provavelmente waaaaaay tarde para a festa, mas o problema real é um erro ou melhor, a repetição do mesmo erro em três arquivos de lote.

C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ Tools \ VCVarsQueryRegistry.bat

C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ Tools \ vsvars32.bat

C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ vcvars32.bat

O padrão do erro é em todo lugar que um loop for é usado para percorrer os valores do registro. Se parece com isso:

 @for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO ( @if "%%i"=="10.0" ( @SET "VS100COMNTOOLS=%%k" ) ) 

O problema é a segunda ocorrência de %% i. A maneira como a construção de loop funciona é a primeira variável %% é o primeiro token, o próximo é o segundo e assim por diante. Portanto, o segundo %% i deve ser %% j (ou o que você quiser) para que aponte para o valor que possivelmente seria um “10.0”. Você pode dizer ao desenvolvedor que quer usar i, j, k como os valores porque no @SET fechado no if, eles usam %% k. Qual seria o caminho.

Então, em resumo, percorra todos esses tipos de loops nos três arquivos acima e mude a segunda ocorrência de %% i para %% k e tudo funcionará como deveria. Então deve ficar assim:

 @for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO ( @if "%%j"=="10.0" ( @SET "VS100COMNTOOLS=%%k" ) ) 

Espero que isto ajude. Não tenho certeza se isso se aplica a todas as versões. Eu só sei que isso se aplica ao VS 2010 (SP1).

Nenhuma das opções acima resolveu meu problema.

Eu adicionei “C: / Windows / System32” à variável de ambiente ‘Path’ ou ‘PATH’. Eu poderia usar o reg /? comando. Eu também executei o arquivo ‘vcvarsall.bat’ sem nenhuma mensagem de erro.

Meu erro é que eu estava executando VS2012 Cross Tools Command Prompt em vez de VS2013 Cross Tools Command Prompt .

A razão é a estrutura do arquivo no menu Iniciar. 2010 e 2012 estão em ‘Microsoft Visual Studio YEAR ‘ e 2013 está em ‘Visual Studio YEAR ‘. Eu apenas não percebi isso. : /

Espero que isso ajude alguém.

No meu caso, eu instalaria o VS.Net 2015 update 2 e deixaria a checkbox do Windows 8.1 SDK desmarcada (já que agora estou usando o Windows 10 e não achei necessário). No entanto, isso parece ter resultado em algumas configurações de registro necessárias serem omitidas.

Fazer uma modificação do VS.Net 2015 a partir do painel de controle e verificar a checkbox 8.1 SDK corrigiu o problema.

Outra causa pode ser a Atualização da Comunidade VS 2013 5, instalando os ATALHOS ERRADOS; Ele instala os atalhos do VS 2012 para o VS 2013.

Para corrigi-lo, edite os atalhos. Renomeie-os de 2012 a 2013 e altere ’11’ para ’12’ no caminho para vcvarsall.

Veja este post social da microsoft .

Eu tive o mesmo problema com o Visual Studio 2010 no Windows XP. Apenas remova todas as construções:

 > nul 2>&1 

dos arquivos:

 \Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat \Microsoft Visual Studio 10.0\Common7\Tools\VCVarsQueryRegistry.bat