首先感谢 DUDU 百忙之中帮我恢复了 BLOG 的密码 . 大家还是把口令设置强一点 . 免得麻烦 DUDU 了。
最近半年一直到开发公司的 MES 开发平台工具 , 自己要维护 10 多个工程 , 其中一些公共库更新的也比较频繁 , 每日的 Build 相当的消耗时间 , 因为 Release 到不同的目录 , 存在一些 DLL 版本的问题 ; 为了解决这个问题 , 首先想到了 FinalBuilder , 但是公司不会买这些玩意 , 而自己也只找到了一些 2.x 的破解版本 , 所以算了 . 又看了下 opensource 的几个项目 , 要不就是比较难用,要不就是功能很简单 , 我只是想把工程都编译一次罢了,与其这样还不如自己写个批处理得了 .
批处理是直接调用 Microsoft Visual Studio 8/Common7/IDE/ 目录内的 devenv.exe , 它启动后就是 IDE, 提供的参数如下 :
用法 :
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 |
要从命令行附加调试器,请使用 :
VsJITDebugger.exe -p <pid>
编写批处理
首先确定路径和文件名称约定 :
# 工 程目 录 : d:/ 系统平台 /
# 工程 SLN 文件所在目录 : d:/ 系统平台 /infotech.activexengine/
# 工程 SLN 文件名称 : infotech.activexengine.sln
# 编译日志文件名称 : output.txt
# 总日志文件名称 ( 位置 ): d:/ 系统平台 /Rebuilder.log
批处理文件内容 :
@echo off
echo 建立日期 %date % # 输出日期
d : # 切换驱动器
cd d :/ 系统平台 / # 进入目录
echo 建立日期 %date % >> d:/ 系统平台 /Rebuilder. log # 写入日期到总日志文件
cd d :/ 系统平台 /infotech.activexengine/ # 进入工程目录
" D:/Program Files/Microsoft Visual Studio 8/Common7/IDE/devenv.exe" infotech.activexengine.sln /rebuild RELEASE /out output.txt # 执行命令 , 编译工程 , 以 Release 模式
type output .txt >> d:/ 系统平台 /Rebuilder. log # 写入日志到总日志内
echo 完成构建
echo 完成构建 >> d:/ 系统平台 /Rebuilder. log # 写入完成信息
notepad d :/ 系统平台 /Rebuilder. log # 用写字板显示编译总日志便于查看
pause # 暂停
运行该批处理文件将编译 Infotech.ActivexEngine 工程 ,并且显示出编译的结果到 Rebuilder.log 文件中 .
按这样的做法 , 依次将其他的工程写入 , 这样 , 每天下班的时候就运行一次,或者放到 WINDOWS 的任务中自动运行 , 保证每个工程都被重建 . 在批处理文件中还可以增加其他的命令,比如通过命令行备份每次的编译结果到服务器上等等动作 .
另外 , 象 FinalBuilder 这些专业的工具还支持从一些版本控制系统中检测最新的版本 , 或者是生成压缩包 , 备份文件 , 刻盘 ... 等等善后工作 , 有条件的还是使用这些专业软件 .
附录 :
开源的几个 Build 工具如下 :
BusyBeeBuilder provides a powerful,easy-to-use,and extensible .NET build automation tool.
DevBuildRunner is being developed as OSI Certified Open Source Software.
.NET Pre-Build
.NET Pre-Build 是一个 XML 驱动的预建造工具
多个开发人员独立地编写大量的源代码组件,这些组件最终进行编译、打包并交付给测试人员或最终用户
CruiseControl.NET 是为 .NET 平台提供的一个自动连续集成服务器。
Draco.NET 是为 .NET 提供的一个连续集成功能
这是为 NAnt 提供的定制任务
它是一个基于 .NET 的编译( Build )工具,能够使项目的编译过程非常容易。
希望与大家分享经验 :)