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