2017-10-11 563 views
4

我收到了“开发人员命令提示符VS 2017”命令行工具的奇怪行为。通常在以前版本的Visual Studio中,这个脚本(VsDevCmd.bat)并不会从你运行它的地方搞乱当前目录。现在它似乎改变了它。一个简单的工作流程就是启动快捷方式“开发人员命令提示符VS 2017”,并且不遵守“开始”目录: enter image description hereVisual Studio 2017开发人员命令提示切换当前目录

任何人看到这个问题?它真的让我感到迷惑,因为我曾经有一个快捷方式,并在我的源代码目录中启动CMD,之后使用TFS/msbuild命令。

+0

这个新的“功能”还打破了调用vsdevcmd.bat和初始目录设置为$(ItemDir)的外部工具。最好的解决方法是从用户配置文件中删除Source文件夹。 – apr

+0

发现删除源文件夹没有帮助。每次保存文件(项目外)时,IDE都会重新创建%userprofile%\ Source \ Repos文件夹。 – apr

回答

5

您可以将VSCMD_START_DIR环境变量设置为vsdevcmd.bat在完成时更改为该目录。否则,它会检查您是否有%USERPROFILE%\source目录并更改为(这是您所看到的)。

你可以改变“目标”为“开发命令提示符的VS 2017年”,以类似下面有变化到一个特定的目录:

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

注意,路径vsdevcmd.bat需求是再加一套双引号。

或者,重命名或删除%USERPROFILE%\source目录(请注意,这似乎是某种新的“标准”目录的源),这将使vsdevcmd.bat兑现“开始”价值(即“当前目录”) 。

+0

非常感谢您的快速响应,它的工作原理:) – void

+0

另外,如果您的目标文件夹名称包含空格,例如“c:\ dev \ my folder”,那么在指定目标时不要将其包含在额外的引号中。即 %comspec%/ k“set VSCMD_START_DIR = C:\ dev \ my folder &&”C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ Tools \ VsDevCmd.bat“” – Russell

0

::一些火箭科学家在雷德蒙做了VS15 VsDevCmd.bat改变了CWD; pushd/popd修复了这个问题。 PUSHD%CD% 调用 “C:\ Program Files文件(x86)的\微软的Visual Studio \ 2017年\专业\ Common7 \工具\ VsDevCmd.bat” POPD

“C:\ Program Files文件(x86)的\ CruiseControl的.NET \服务器\ ccnet.exe”%*

1

vsdevcmd_end.bat,REM出列:

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" 
     ) 
    ) 
相关问题