HOW TO:利用VS.NET IDE批量编译解决方案

本文介绍了如何利用DOS命令行和VS.NET的devenv工具批量编译解决方案,避免手动点击编译的繁琐。通过设置环境变量和编写BAT批处理文件,可以自动化编译多个解决方案,提高开发效率。同时提到了MSBuild.exe作为替代的命令行编译工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Author:水如烟  

 

IDE可以把多个工程项目组织起来,并根据工程间的引用关系自动按先后顺序编译各个工程项目。有的时候,或者编程分工,或者工程项目内容比较多,或者有些工程项目独立性较强,我们就把这些工程项目独立到一个或多个解决方案里面。这样,当这些工程项目修改之后,引用它的项目都需要重新编译。按照通常的做法,我们需要按引用关系逐个打开解决方案进行编译。如果方案多,或者那些项目修改频繁,这个“点击编译”的工序,令人烦心。下面,介绍一种利用BAT文件批量编译的方法。


VS.NET的IDE既是一个WINDOW界面程序,也接受DOS命令行方式。IDE的应用程序名称为devenv,接受DOS命令行方式的程序为devenv.com,最终由devenv.exe解释执行。正常安装情况下,程序置于“X:/Program Files/Microsoft Visual Studio */Common7/IDE”目录。其中X表示系统所在驱动符,*表示VS.NET版本号,对于VS2008为“9.0”,VS2005为“8.0”,VS2003为“.NET 2003”。

VS.NET在安装的时候,赋予系统多个环境变量。了解系统的环境变量,你可以打开“附件”里的“DOS命令提示符”(它是Windows命令解释程序),打入命令“SET”然后回车,就可以看到所有的环境变量的名称、值。

注:有人不明白Dim cmd As String = System.Environment.GetEnvironmentVariable("ComSpec")是什么意思,它就是获取系统命令解释程序即cmd.exe的全文件名称,一般是“X:/WINDOWS/System32/cmd.exe”。在上面的命令结果中可以看到“ComSpec”值。

在列出的结果中,首先留意PATH值。可以发现,VS.NET安装时并没有把devenv所在的目录列入搜索路径里面。与VS.NET有关的环境变量,有“VS*COMNTOOLS”,*表示版本,对于VS2008为“90”,VS2005为“80”。(VS2003的我这没安装,不清楚。)以下以VS2008为例。

“VS90COMNTOOLS”的值通常为“X:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/”。由此变量,可以间接取得devenv所在目录即“%VS90COMNTOOLS%../IDE/”。

到此,可以编写BAT文件了。我的BAT文件为Build.bat,放在“桌面”上,内容如下:
SET VSCMD=%VS90COMNTOOLS%../IDE/devenv
"%VSCMD%"  "D:/正式代码/SolutionForSystem/SolutionForSystem.sln" /Rebuild
"%VSCMD%"  "D:/正式代码/SolutionForFoxPro/SolutionForFoxPro.sln" /Rebuild
"%VSCMD%"  "D:/正式代码/SolutionForWindowsForms/SolutionForWindowsForms.sln" /Rebuild
"%VSCMD%"  "D:/正式代码/SolutionForSystemData/SolutionForSystemData.sln" /Rebuild
"%VSCMD%"  "D:/正式代码/SolutionForDBaseDatabase/SolutionForDBaseDatabase.sln" /Rebuild
"%VSCMD%"  "D:/正式代码/SolutionForDatabaseUI/SolutionForDatabaseUI.sln" /Rebuild


由于目录名称和项目名称有规律,最后修改如下:
@SET VSCMD=%VS90COMNTOOLS%../IDE/devenv
@FOR %%i IN ("System", "FoxPro","WindowsForms","SystemData","DBaseDatabase","DatabaseUI") DO "%VSCMD%" "D:/正式代码/SolutionFor%%~i/SolutionFor%%~i.sln" /Rebuild

注:MSBuild.exe也可以实现命令行编译,它是直接引用Microsoft.Build.BuildEngine.Engine来实现编译功能。MSBuild.exe存于“X:/WINDOWS/Microsoft.NET/Framework/v*”目录下,其中*为Framework主版本号。

注:在DOS界面下,cd 到命令所在目录,命令 /?可以看到运行命令所需的参数及用法。可以通过管道重定义结果输出。比如看devenv.com的用法:
devenv /? > c:/HelpForDevenv.txt
执行后打开HelpForDevenv.txt文件,内容如下:


Microsoft (R) Visual Studio 9.0.30729.1 版。
版权所有(C) Microsoft Corp。保留所有权利。

用法:
devenv  [solutionfile | projectfile | anyfile.ext]  [switches]

devenv 的第一个参数通常是一个解决方案文件或项目文件。
如果您希望在编辑器中自动打开文件,
也可以使用任何其他文件作为第一个参数。当您输入项目文件时,IDE
会在项目文件的父目录中查找与该项目文件具有相同
基名称的 .sln 文件。如果不存在这样的 .sln 文件,
IDE 将查找引用该项目的单个 .sln 文件。如果不存在这样的单个
.sln 文件,则 IDE 将创建一个具有默认 .sln 文件名的未保存
的解决方案,其基名称与项目文件的基名称相同。

命令行生成:
devenv solutionfile.sln /build [ solutionconfig ] [ /project projectnameorfile [ /projectconfig name ] ]
可用的命令行开关:

/Build  使用指定的解决方案配置生成解决方案或
  项目。例如“Debug”。如果可能存在多个平台,
  则配置名称必须用引号括起来
  并且包含平台名称。例如“Debug|Win32”。
/Clean  删除生成结果。
/Command 启动 IDE 并执行该命令。
/Deploy  生成并部署指定的生成配置。
/Edit  在此应用程序的运行实例中打开
  指定文件。如果没有正在运行的实例,
  则启动一个具有简化窗口布局的新实例。
/LCID  设置 IDE 中用于用户界面的默认语言。
/Log  将 IDE 活动记录到指定的文件以用于故障排除。
/NoVSIP  禁用用于 VSIP 测试的 VSIP 开发人员许可证密钥。
/Out  将生成日志追加到指定的文件中。
/Project 指定生成、清理或部署的项目。
  必须和 /Build、/Rebuild、/Clean 或 /Deploy 一起使用。
/ProjectConfig 重写解决方案
  配置中指定的项目配置。例如“Debug”。如果可能存在
  多个平台,则配置名称必须用引号括起来
  并包含平台名称。例如“Debug|Win32”。
  必须和 /Project 一起使用。
/Rebuild 先清理,然后使用指定配置生成
  解决方案或项目。
/ResetAddin 移除与特定外接程序关联的命令和命令用户界面。
/ResetSettings 恢复 IDE 的默认设置,还可以重置为
  指定的 VSSettings 文件。
/ResetSkipPkgs 清除所有添加到 VSPackages 的 SkipLoading 标记。
/Run  编译并运行指定的解决方案。
/RunExit 编译并运行指定的解决方案然后关闭 IDE。
/SafeMode 以安全模式启动 IDE,加载最少数量的窗口。
/Upgrade 升级项目或解决方案以及其中的所有项目。
  并相应地创建这些文件的备份。有关备份
  过程的更多信息,请参见
  “Visual Studio 转换向导”上的帮助。

产品特定的开关:

/debugexe       打开要调试的指定可执行文件。
                命令行的其余部分作为它的参数
                传递到此执行文件。
/useenv  使用 PATH、INCLUDE、LIBPATH 和 LIB 环境变量
  而不是使用 VC++ 生成的 IDE 路径。

要从命令行附加调试器,请使用:
 VsJITDebugger.exe -p <pid>


了解MsBuild的用法:
执行MSBuild /? > c:/HelpForMSBuild.txt
HelpForMSBuild.txt内容如下:


Microsoft (R) 生成引擎版本 3.5.30729.1
[Microsoft .NET Framework 版本 2.0.50727.3053]
版权所有(C) Microsoft Corporation 2007。保留所有权利。

语法:              MSBuild.exe [选项] [项目文件]

描述:          在项目文件中生成指定的目标。如果
                     未指定项目文件,MSBuild 将搜索
                     当前工作目录来查找文件扩展名
                     以“proj”结尾的文件并使用该文件。

开关:

  /target:<targets>  在此项目中生成这些目标。使用
                     分号或逗号分隔多个目标,或者分别指定
                     每个目标。(缩写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值