背景:VS2008很好很强大,但太费系统资源了,尤其是在虚拟机在里面装VS2008的时候更是如此。有时用vi编辑了源代码后,不想开VS IDE编译,但每次打开VS2008命令行,再切换到工程所在目录,然后手动敲命令太麻烦了。于是产生了集成集成VS2008命令行编译到.sln文件右键菜单的想法。


先上效果图:


1) VS2008命令行编译的命令:


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. // 编译Debug版本
  2. "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" xxx.sln "Debug|Win32"


// 编译Debug版本 "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" xxx.sln "Debug|Win32"

2) 仅集成到.sln文件

HKEY_CLASSES_ROOT\.sln, 右边的默认值为: VisualStudio.Launcher.sln

==> 在  HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell 下面增加一个子项即可添加右键菜单

3) 注册表集成右键菜单时,%1代表该文件名。


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" %1 "Debug|Win32"


"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" %1 "Debug|Win32"

但直接执行该命令的时候,cmd窗口闪一下就消失了,看不到编译结果。


4) 利用 cmd /K 命令,在执行了以上命令后保持命令行窗口不退出,以便查看编译结果。

     最终命令为:


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​

  1. cmd /K ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" %1 "Debug|Win32""


cmd /K ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" %1 "Debug|Win32""


【小结】  新建一个文本文件,将以下内容保存以下内容,然后将文件名修改为 anyname.reg ;双击导入该reg文件到注册表;杀掉explorer进程再启动explorer进程(或注销或重启机器)即可。

(VS2008的路径请自行调整)


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. Windows Registry Editor Version 5.00
  2. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell]
  3. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug]
  4. @="命令行编译(Debug)"
  5. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug\command]
  6. @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" %1 \"Debug|Win32\"\""
  7. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease]
  8. @="命令行编译(Release)"
  9. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease\command]
  10. @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" %1 \"Release|Win32\"\""


Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell] [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug] @="命令行编译(Debug)" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug\command] @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" %1 \"Debug|Win32\"\"" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease] @="命令行编译(Release)" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease\command] @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" %1 \"Release|Win32\"\""

EasyVCR update@2011.11.08

--------------------------------------------------------------------------------

上面的reg有点bug: 当.sln文件的全路径中包含空格时,会出错,修正如下:

     最终命令为:


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. cmd /K ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" "%1" "Debug|Win32""


cmd /K ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" "%1" "Debug|Win32""

reg文件:


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. Windows Registry Editor Version 5.00
  2. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell]
  3. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug]
  4. @="命令行编译(Debug)"
  5. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug\command]
  6. @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" \"%1\" \"Debug|Win32\"\""
  7. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease]
  8. @="命令行编译(Release)"
  9. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease\command]
  10. @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" \"%1\" \"Release|Win32\"\""


Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell] [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug] @="命令行编译(Debug)" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug\command] @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" \"%1\" \"Debug|Win32\"\"" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease] @="命令行编译(Release)" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease\command] @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" \"%1\" \"Release|Win32\"\""

EasyVCR update@2011.11.09

--------------------------------------------------------------------------------


背景:VS2008很好很强大,但太费系统资源了,尤其是在虚拟机在里面装VS2008的时候更是如此。有时用vi编辑了源代码后,不想开VS IDE编译,但每次打开VS2008命令行,再切换到工程所在目录,然后手动敲命令太麻烦了。于是产生了集成集成VS2008命令行编译到.sln文件右键菜单的想法。

先上效果图:


1) VS2008命令行编译的命令:


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. // 编译Debug版本
  2. "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" xxx.sln "Debug|Win32"


// 编译Debug版本 "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" xxx.sln "Debug|Win32"

2) 仅集成到.sln文件

HKEY_CLASSES_ROOT\.sln, 右边的默认值为: VisualStudio.Launcher.sln

==> 在  HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell 下面增加一个子项即可添加右键菜单

3) 注册表集成右键菜单时,%1代表该文件名。


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" %1 "Debug|Win32"


"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" %1 "Debug|Win32"

但直接执行该命令的时候,cmd窗口闪一下就消失了,看不到编译结果。


4) 利用 cmd /K 命令,在执行了以上命令后保持命令行窗口不退出,以便查看编译结果。

     最终命令为:


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. cmd /K ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" %1 "Debug|Win32""


cmd /K ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" %1 "Debug|Win32""


【小结】  新建一个文本文件,将以下内容保存以下内容,然后将文件名修改为 anyname.reg ;双击导入该reg文件到注册表;杀掉explorer进程再启动explorer进程(或注销或重启机器)即可。

(VS2008的路径请自行调整)


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. Windows Registry Editor Version 5.00
  2. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell]
  3. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug]
  4. @="命令行编译(Debug)"
  5. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug\command]
  6. @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" %1 \"Debug|Win32\"\""
  7. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease]
  8. @="命令行编译(Release)"
  9. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease\command]
  10. @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" %1 \"Release|Win32\"\""


Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell] [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug] @="命令行编译(Debug)" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug\command] @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" %1 \"Debug|Win32\"\"" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease] @="命令行编译(Release)" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease\command] @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" %1 \"Release|Win32\"\""

EasyVCR update@2011.11.08

--------------------------------------------------------------------------------

上面的reg有点bug: 当.sln文件的全路径中包含空格时,会出错,修正如下:

     最终命令为:

[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. cmd /K ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" "%1" "Debug|Win32""


cmd /K ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" "%1" "Debug|Win32""

reg文件:


[plain]​ view plain​​​ ​​​copy​​​ ​​​print​​​ ​​​?​


  1. Windows Registry Editor Version 5.00
  2. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell]
  3. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug]
  4. @="命令行编译(Debug)"
  5. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug\command]
  6. @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" \"%1\" \"Debug|Win32\"\""
  7. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease]
  8. @="命令行编译(Release)"
  9. [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease\command]
  10. @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" \"%1\" \"Release|Win32\"\""


Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell] [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug] @="命令行编译(Debug)" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildDebug\command] @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" \"%1\" \"Debug|Win32\"\"" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease] @="命令行编译(Release)" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\bulildRelease\command] @="cmd /K \"\"C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcpackages\\vcbuild.exe\" \"%1\" \"Release|Win32\"\""

EasyVCR update@2011.11.09

--------------------------------------------------------------------------------