2017-10-11 10 views
4

Je reçois un comportement bizarre de l'outil de ligne de commande "Developer Command Prompt for VS 2017". Normalement, dans les versions précédentes de Visual Studio, ce script (VsDevCmd.bat) ne déconnait pas le répertoire courant d'où vous l'avez exécuté. Maintenant, il semble que ça change. Un flux de travail simple serait juste pour démarrer le raccourci « Invite de commandes Developer pour VS 2017 » et il ne respecte pas le « Démarrer dans » répertoire: enter image description hereVisual Studio 2017 Invite de commandes du développeur bascule le répertoire en cours

En tout quelqu'un hasard vu ce problème? Cela me dérange vraiment parce que j'avais l'habitude d'avoir un raccourci avec celui-ci et de démarrer CMD dans mon répertoire source, utilisez ensuite les commandes TFS/msbuild.

+0

Cette nouvelle "fonctionnalité" brise également les outils externes qui appellent vsdevcmd.bat et le répertoire initial défini sur $ (ItemDir). La meilleure solution consiste à supprimer le dossier Source du profil utilisateur. – apr

+0

Trouvé que la suppression du dossier source n'aide pas. Chaque fois que vous enregistrez un fichier (en dehors d'un projet), l'EDI recrée le dossier% userprofile% \ Source \ Repos. – apr

Répondre

5

Vous pouvez définir la variable d'environnement VSCMD_START_DIR pour que vsdevcmd.bat soit modifié pour ce répertoire lorsqu'il se termine. Sinon, il va vérifier si vous avez un répertoire %USERPROFILE%\source et changer pour cela (ce qui est ce que vous voyez).

Vous pouvez changer la « cible » pour la « Invite de commandes du développeur pour VS 2017 » à quelque chose comme ce qui suit pour avoir le changement dans un répertoire particulier:

%comspec% /k "set VSCMD_START_DIR=C:\temp && "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"" 

Notez que le chemin de vsdevcmd.bat a besoin d'être mettre dans un ensemble supplémentaire de guillemets doubles. Vous pouvez également renommer ou supprimer le répertoire %USERPROFILE%\source (Notez que cela semble être une sorte de nouveau répertoire "standard" pour les sources), qui fera vsdevcmd.bat honorer la valeur "Start In" (ie "répertoire courant") .

+0

Merci beaucoup pour une réponse rapide, cela fonctionne :) – void

+0

En outre, si le nom de votre dossier cible contient des espaces, par exemple "c: \ dev \ mon dossier" alors ne pas envelopper dans des guillemets supplémentaires lors de la spécification de la cible. c'est-à-dire % comspec%/k "set VSCMD_START_DIR = C: \ dev \ mon dossier &&" C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ Tools \ VsDevCmd.bat "" – Russell

0

:: Un spécialiste des fusées de Redmond a fait modifier le cwd VS15 VsDevCmd.bat; le pushd/popd corrige ça. pushd% CD% appel "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ Tools \ VsDevCmd.bat" popd

« C: \ Program Files (x86) \ CruiseControl .NET \ server \ ccnet.exe » % *

1

vsdevcmd_end.bat, REM la ligne:

cd /d "%USERPROFILE%\Source" 
@REM Set the current directory that users will be set after the script completes 
    @REM in the following order: 
    @REM 1. [VSCMD_START_DIR] will be used if specified in the user environment 
    @REM 2. [USERPROFILE]\source if it exists 
    @REM 3. current directory 
    if "%VSCMD_START_DIR%" NEQ "" (
     cd /d "%VSCMD_START_DIR%" 
    ) else (
     if EXIST "%USERPROFILE%\Source" (
      cd /d "%USERPROFILE%\Source" 
     ) 
    )