L'invite de commande VS2010 génère une erreur: ne permet pas de déterminer l'emplacement du dossier VS Common Tools

j'ai installé VS2010. L'installation crée le raccourci pour VS2010 invite de commande, mais quand j'ouvre l'invite de commande j'obtiens l'erreur:

ne peut pas déterminer l'emplacement du dossier VS Common Tools.

j'ai vérifié la variable d'environnement VS100COMNTOOLS et elle a une valeur: C:Program FilesMicrosoft Visual Studio 10.0Common7Tools et le Registre pour HKEY_local_MachineSoftwareMicrosoftVisual StudioSxSVS7 est défini à: C:Program FilesMicrosoft Visual Studio 10.0 .

j'ai vérifié VSvars32.bat et essayé d'ajouter echo pour trouver jusqu'à où il va. Il échoue à cette commande:

@call :GetVSCommonToolsDirHelper32 HKLM > nul 2>&1
65
demandé sur Cœur 2010-08-11 21:46:23

23 réponses

j'ai eu le même problème et trouvé la réponse ici .

le problème est que la bat utilise la commande de reg et qu'elle cherche cela dans la variable de système de chemin. D'une façon ou d'une autre vous avez réussi à obtenir "C:\Windows\System32" hors de la variable PATH, alors allez simplement aux variables système (clic droit sur "mon ordinateur" > "propriétés" > configuration avancée > "Variables D'environnement", rechercher la variable PATH et ajouter à la fin séparée par " ; " : C:\Windows\System32

55
répondu kzfabi 2012-03-15 17:32:21

j'ai eu les mêmes problèmes dans deux machines: Win8.1x64 avec Visual Studio Ultimate 2013 (VS2013) et Win8x64 avec VS2013 ultimate

problème: raccourci " VS2012 x86 invite de commande D'outils natifs " qui pointe vers le fichier: C:\Program fichiers (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat qui appelle C:\Program fichiers (x86)\Microsoft Visual Studio 11.0\VC\bin\vcvars32.bat tente de rechercher registre pour valeur le nom de "11.0":

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

cependant ma machine n'a pas cette valeur "11.0" , au lieu de cela, il a "12.0"

ma solution est de lancer C:\Program fichiers (x86)\ Microsoft Visual Studio 12.0 \VC\vcvarsall.bat qui appelle C:\Program fichiers (x86)\ Microsoft Visual Studio 12.0 \VC\bin\vcvars32.bat qui interrogent correctement le Registre comme suit:

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

ainsi changeant / courant de C:\Program fichiers (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.MTD à C:\Program fichiers (x86)\ Microsoft Visual Studio 12.0 \VC\vcvarsall.MTD résolu dans mon cas

40
répondu Khaled 2014-09-10 03:39:40

ce même problème vient de se produire pour moi et j'ai pu le" corriger " en mettant à jour le vcvars32.fichier bat situé dans le C:\Program fichiers (x86)\Microsoft Visual Studio 10.0\VC\bin\ folder (par défaut). Ajouter ce qui suit après la première ligne:

@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

puis commentez les lignes suivantes:

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

a trouvé ce ici . Notez que je dis fixer entre guillemets parce que je n'ai pas vérifié pour s'assurer que que toutes les variables appropriées soient correctement définies; cela dit, d'un coup d'oeil rapide, cela semble être valable.

Notez que vous devrez éditer le vcvars32.fichier bat dans un éditeur de texte surélevé (c.-à-d., exécuter en tant qu'administrateur) pour être en mesure de sauvegarder le fichier dans Vista et Windows 7.

29
répondu akmad 2014-02-07 12:12:52

la question en litige dans mon cas était une erreur typographique dans la variable PATH. Depuis vsvars32.bat utilise l'outil" reg "pour interroger le registre, il échouait parce que l'outil n'a pas été trouvé (taper reg sur une invite de commande était un échec pour moi).

10
répondu javs 2011-04-30 19:05:23

C'est un grand poste. Avant d'effectuer tous les changements à vcvarsall.bat file, essayez d'exécuter la commande VS2010 command prompt en tant qu'administrateur. Si cela ne règle toujours pas le problème, essayez d'ajouter C:\Windows\System32 à la variable D'environnement PATH. Si tout le reste échoue, éditez le fichier batch comme décrit ci-dessus.

6
répondu Madhuri 2013-05-23 12:41:38

j'ai eu cela il n'y a pas si longtemps en raison de l'édition de registre étant bloqué par une politique de groupe.

le problème spécifique est que reg se voit refuser l'accès au registre. J'ai résolu ça en répliquant le reg.exe 'en utilisant Microsoft.Win32.Registry dans un programme C#, et en remplaçant tous les appels à reg, avec mon programme alternatif. Vous devez mettre à jour:

  • VCVarsQuery.MTD
  • VsDevCmd.MTD
  • VsVars32.MTD

dans le dossier %VSxxxCOMNTOOLS% (se résout habituellement à quelque chose comme C:\Program fichiers (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;
        }
    }

dans des cas comme celui-ci, vous pouvez également utiliser mon alternative reg implémentation ici .

2
répondu Geoff 2015-10-21 05:38:43

je faisais face à la même question. J'ai cherché dans la variable d'environnement pour la variable' PATH ' Je n'ai pas pu trouver ceci. Puis j'ai ajouté une variable 'Path' avec "C:\Windows\System32" valeur. Tout est résolu maintenant.

1
répondu Amit Jain 2011-05-28 05:53:05

dirigez les chemins vers les bons endroits sur votre ordinateur. Cette configuration suppose que vous avez la plupart des programmes installés dans un emplacement central(C:\Development). Pour mon usage, Je n'ai pas éliminé ainsi le besoin 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%

Enregistrer le fichier sous un *.chauve-souris

lance L'invite de commande Visual Studio puis exécute *.chauve.

cela devrait corriger tous les problèmes D'environnement, alors lancez configure

EDIT Presque oublié le crédit où le crédit est dû: http://developer.qt.nokia.com/wiki/Building_Qt_Desktop_for_Windows_with_MSVC

1
répondu Michael Stramel 2011-12-19 20:55:44

j'ai eu le même problème mais pour une raison différente. J'ai eu " reg.bat" dans le répertoire courant. Renommer en quelque chose d'autre a résolu le problème.

1
répondu maliger 2012-10-24 17:06:19

donc, j'ai trouvé la cause fondamentale de tous les problèmes dans ce fil. J'ai d'abord pensé qu'il était spécifique à 2010, mais les fichiers batch pour 2013 ont la même erreur de syntaxe de parsing token. Fondamentalement, tous les fichiers de lot que MS distribue avec leurs compilateurs de 2010 à au moins 2013 ont cette même erreur. Si vous recherchez tous .Fichiers bat pour cette chaîne

"%%i"

et le remplacer par

"%%j"

tout va fonctionner correctement. Fondamentalement, ils essaient d'interroger le Registre pour différentes entrées de version pour obtenir les chemins corrects à utiliser. Ils créent une boucle for qui va itérer sur les jetons de chaque ligne tirée par la requête. Il y a trois jetons qui devrait revenir. Ils utilisent % % % i pour le premier qui serait REG_SZ, pour voir si quelque chose a été trouvé. Puis ils utilisent le même pour comparer avec une chaîne de version. Ils devraient utiliser % % j pour obtenir le second jeton qui serait 8.0 ou 10.0 ou 12,0 et produirait en fait une bonne comparaison. Ensuite, ils utilisent correctement % % k pour obtenir le chemin associé à la version.

encore une fois, faire la recherche simple et remplacer dans tous les fichiers qui ont un modèle comme celui-ci:

@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"
    )
)

et faites-le ressembler à ceci:

@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"
    )
)

en changeant la deuxième occurrence de %%i, qui est entre guillemets, de %%j.

Espérons que cette aide!

1
répondu user3633780 2014-05-15 20:05:22

le même problème s'est produit pour moi quand iI installait une bibliothèque python et il a dit incapable de trouver le chemin de Visual Studio 2008/10. J'ai changé le chemin des variables environnementales. Donc, pour changer, vous le processus suivant peut être adopté: Démarrer=> Ordinateur=>Propriétés=>Avance Paramètres De Système=>Variables D'Environnement=>Les Variables Du Système. Ici vous trouverez la variable path. Si certains ont déjà un chemin défini, vous pouvez utiliser le point-virgule (;) pour ajouter le chemin donné " C:\Windows\System32 " ajouter directement la même chose.

1
répondu Piyush 2015-06-05 12:04:31

j'ai eu la même erreur en essayant d'exécuter un processus de publication par powershell sur ma machine de construction.

ma machine de compilation n'a que le SDK de Windows installé et non Visual Studio et comme tel il semble que je manque quelques fichiers communs et les valeurs de Registre qui sont normalement présents lorsque Visual Studio est installé. Après avoir examiné vsvars32.bat un peu plus attentivement, j'ai remarqué que c'était là où le " ne peut pas déterminer l'emplacement des outils communs VS l'erreur" folder " était signalée sous L'étiquette GetVSCommonToolsDir. Il semble que dans ce fichier batch, puisque la sous-clé VS7 n'existe pas sur ma machine, il efface la variable d'environnement %VS100COMNTOOLS% et signale l'erreur spécifiée.

dans mon cas, il semble que cette erreur se produise pour moi parce que je n'ai pas Visual Studio ou d'autres composants nécessaires installés sur ma machine de compilation et donc la clé de registre n'existe pas. Peut-être votre erreur est due à quelque chose de similaire, telles que les versions 32 bits vs registre 64 bits ou 32-bits vs 64 bits VS invite de commande? Tester la ligne de code qui échoue du lot directement dans l'invite de commande devrait vous donner un indice sur la raison pour laquelle le registre ou le chemin de fichier n'est pas résolu correctement.

0
répondu jpierson 2011-01-25 16:03:28

j'ai eu ce problème quand j'ai installé quelque chose qui a créé une variable de chemin d'environnement utilisateur. Mon Agent TeamCity build fonctionnait comme un service sous mon propre nom d'utilisateur et il a trouvé la variable user PATH au lieu de la variable machine PATH. Avec la mauvaise variable path, il n'a pas pu trouver grand chose et a donné cette erreur.

0
répondu NathanX 2012-06-25 19:40:25

pour moi, cela a été causé par le fait que la variable D'environnement PATH a été définie à une valeur vide pour mon profil d'utilisateur . La variable système était réglée correctement, donc j'ai supprimé la variable chemin vierge de mon profil et tout a fonctionné à nouveau.

0
répondu kenchilada 2013-04-11 19:17:24

j'ai eu une bête gnarly travailler avec seulement le Microsoft Windows SDK v7.1 fichier de lots SetEnv.Cmd -- c.-à-d.: Je n'ai pas Visual Studio vAny installé et n'ai pas eu à utiliser les guides cmd spécialement préparés (où vsvars32.bat et al. Je viens d'avoir le Microsoft Windows SDK pour Windows 7 (7.1) installé avec leurs compilateurs C/C++. Sur ma boîte Xp64, c'est la séquence que j'ai utilisée capable de compiler L'un des échantillons audio du SDK DirectX de juin 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

notez que L'utilisation de la version Framework 64 de MSBuild.exe m'empêche de construire la version X64 (à cause de cibles?), mais la version x86 de MSBuild a réussi à construire la version X64 du même tutoriel 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
0
répondu execNext 2013-05-16 09:16:03

j'ai également fait face à la même question. Initialement essayé de modifier le chemin du système qui ne fonctionne pas. Résolu par la suite en installant Micro Visual Studio express.

0
répondu user3360528 2014-02-28 05:27:16

j'ai rencontré ce même problème en faisant un build sur notre système de construction Windows 7. Je remplissais l'absence de notre ingénieur de construction, et c'était la première fois que je le faisais depuis que nous avons migré de Windows XP à Windows 7 32-bit. Les exigences informatiques de notre système de construction ont verrouillé les permissions là où il est très difficile de faire les opérations les plus routinières. Il s'avère que le problème était dû à un manque d'élévation de privilèges. En fermant Visual Studio 2010 et en ré-ouvrant avec les droits d'administrateur (Exécuter en tant qu'Administrateur), le problème a été résolu.

0
répondu Matt Davis 2014-05-01 17:15:54

donc c'est probablement waaaaaaay en retard à la partie, mais le problème réel est une erreur ou plutôt la répétition de la même erreur dans trois fichiers batch.

C:\Program fichiers (x86)\Microsoft Visual Studio 10.0\Common7\Tools\VCVarsQueryRegistry.MTD

C:\Program fichiers (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.MTD

C:\Program fichiers (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.MTD

le motif de l'erreur est partout a pour boucle est utilisé pour boucle à travers les valeurs de registre. Il ressemble à ceci:

@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"
    )
)

le problème est la deuxième occurrence de % % I. La façon dont la construction de boucle fonctionne est la première variable %% est le premier jeton, le suivant est le deuxième et ainsi de suite. Donc le second % % je devrais être un % % j (ou ce que vous voulez) de sorte qu'il pointe à la valeur qui pourrait être un "10.0". Vous pouvez dire que le développeur a voulu utiliser i,j,k les valeurs parce que dans l'encadré @SET dans le si, ils utilisent % % k. Ce qui serait le chemin.

donc, en bref, passer par tous ces types de boucles dans les trois fichiers ci-dessus et de changer la deuxième occurrence de %%i à %% % k et tout va fonctionner comme il est prévu. Il devrait donc ressembler à ceci:

@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"
    )
)

Espérons que cette aide. Je ne sais pas si cela s'applique à toutes les versions. Je sais seulement qu'il s'applique à VS 2010 (SP1).

0
répondu user3633780 2014-05-13 19:12:14

Aucun résolu mon problème.

j'ai ajouté "C:/Windows/System32" à la variable d'environnement' Path 'ou' PATH'. Je pourrais utiliser la commande reg /? . J'ai aussi dirigé le vcvarsall.bat' fichier avec aucun message d'erreur.

mon erreur est que j'ai lancé L'invite de commande VS2012 Cross Tools au lieu de VS2013 Cross Tools .

la raison étant le dossier structure dans le menu démarrer. 2010 et 2012 sont sous "Microsoft Visual Studio année " et 2013 est sous "Visual Studio année ". Je n'ai tout simplement pas s'en rendre compte. : /

j'espère que cela aidera quelqu'un.

0
répondu christo8989 2015-07-06 17:42:18

dans mon cas j'installerais VS.Net 2015 mise à jour 2 et a laissé la boîte SDK Windows 8.1 non vérifié (puisque je suis maintenant en utilisant Windows 10 et ne l'a pas jugé nécessaire). Toutefois, cela semble avoir conduit à l'omission de certains paramètres de Registre requis.

faire une modification de VS.Net 2015 à partir du panneau de configuration et en cochant la case 8.1 SDK a résolu le problème.

0
répondu sipwiz 2016-06-22 09:58:51

une autre cause peut être VS 2013 Community Update 5 Installer les mauvais raccourcis; il installe VS 2012 raccourcis pour VS 2013.

pour le corriger, Éditez les raccourcis. Renommez-les de 2012 à 2013, et changez " 11 " en " 12 " dans le chemin vers vcvarsall.

Voir ce microsoft sociale post .

0
répondu Craig Ringer 2016-06-24 04:48:56

j'ai eu le même problème avec Visual Studio 2010 sur Windows XP. Il suffit de supprimer toutes les constructions:

> nul 2>&1

à partir de fichiers:

\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat
\Microsoft Visual Studio 10.0\Common7\Tools\VCVarsQueryRegistry.bat
0
répondu Geograph 2016-09-20 21:22:00

Une solution simple pour résoudre ce problème à la fois dans vs développeur invite de commande cmd est d'ajouter la ligne suivante

C:\Windows\System32

dans la trajectoire du système comme suit:

Mon Pc-->propriétés-->Avancé-->variables d'Environnement-->variables système espérons qu'il résout le problème.

0
répondu Khan 2018-09-30 12:33:38