Msbuild项目集成右键菜单编译


DS1.背景:   我们为什么要将VS2008命令行编译.sln文件集成到右键菜单呢? 原因一:VS2008很好很强大,但太费系统资源了,尤其是在虚拟机在里面装VS2008的时候更是如此。 原因二:有时用vi工具编辑了源代码后,不想开VS集成开发环境进行编译,(当然你可以打开VS2008命令行,再切换到工程所在目录进行编译,但是手动敲命令太麻烦了)。   DS2.显示效果图:
    DS3.原始注册表文件:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell]
[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\build]
@="编译(Debug)"
[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\build\command]
@="cmd /K \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe \"%1\"\""

[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildRelease]
@="编译(Release)"
[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildRelease\command]
@="cmd /K \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe \"%1\" /p:Configuration=Release\""

[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\reBuild]
@="重新编译(Debug)"
[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\reBuild\command]
@="cmd /K \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe \"%1\" /t:Rebuild\""

[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\reBuildRelease] 

@="重新编译(Release)" 

[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\reBuildRelease\command]
@="cmd /K \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe \"%1\" /t:Rebuild /p:Configuration=Release\""

  DS4.具体代码及解释: Windows Registry Editor Version 5.00   --这是注册表文件的注释文件头,其作用是声明这是一个注册表文件,便于注册表编辑器将文件内容导入注册表。

--如果 .reg 文件没有这句文件头,或者文件头书写有错漏,那么就无法成功导入注册表。

[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell]   --HKEY_CLASSES_ROOT\.sln, 右边的默认值为: VisualStudio.Launcher.sln,表示仅集成 .sln文件。 --你可以写成 .csproj 或者.vbproj ,即可以对C#和VB的项目进行右键编译。 --在  HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell 下面增加一个子项即可添加右键菜单。
[HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\build]   --build 即命令名,编译(Debug)即显示在右键菜单上的命令名。command是具体的DOS命令 @="编译(Debug)"   [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\build\command]   @="cmd /K \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe \"%1\"\"" --利用 cmd /K 命令,在执行了以上命令后保持命令行窗口不退出,以便查看编译结果。不然会窗口一闪就不见了。 --注册表集成右键菜单时,%1代表该文件名。 [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildRelease]   @="编译(Release)"   [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\buildRelease\command]   @="cmd /K \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe \"%1\" /p:Configuration=Release\"" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\reBuild]   @="重新编译(Debug)"   [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\reBuild\command]   @="cmd /K \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe \"%1\" /t:Rebuild\"" [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\reBuildRelease]   @="重新编译(Release)"   [HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\reBuildRelease\command]   @="cmd /K \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe \"%1\" /t:Rebuild /p:Configuration=Release\""     DS5.where to find Msbuild.exe ??

.NET v2.0: 
%WinDir%\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe

.NET v3.5: 
%WinDir%\Microsoft.NET\Framework\v3.5\MSBuild.exe

.NET v4.0: 
%WinDir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

eg:C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe

  DS6.下面具体分析一句代码: cmd  /k  \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\MSBuild.exe \"%1\"  /p:Configuration=Release\"" 常用参数: /t:Rebuild   重新编译 /t:Clean      清理生成,将删除所有中间文件和输出文件,仅保留项目和组件文件。 
/p:Configuration=Release  以Release模式进行编译 /p:Configuration=Debug   以Debug模式进行编译   DS7.两种模式的区别:

Debug:通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

Release:称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用(不能对其进行调试操作)。

注意:给用户使用的必须是Release版本。   事实上,编译目录下面有一个obj目录,里面也有一个Debug目录。 在Debug目录的下面,有一个TempPE目录和一个Refactor目录。 这个以后再说。。。     DS8.补充一个用命令行直接编译项目文件的方法: 用DOS命令对解决方案进行编译操作:         1、打开Visual Studio 2008 命令提示,具体打开方法如下:   2、帮助文档如下:

3、操作方法如下:

 

 2015-01-03