用批处理编译*.sln工程

简介:



本文转自suifei博客园博客,原文链接:http://www.cnblogs.com/Chinasf/archive/2006/08/10/473814.html,如需转载请自行联系原作者

首先感谢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   

使用PATHINCLUDELIBPATH

 要从命令行附加调试器,请使用:

       VsJITDebugger.exe -p <pid>

 

None.gif 编写批处理
None.gif
None.gif首先确定路径和文件名称约定
:
None.gif
None.gif
# 程目录:d:\系统平台\
None.gif#工程SLN文件所在目录:d:\系统平台\infotech.activexengine\
None.gif#工程SLN文件名称:infotech.activexengine.sln
None.gif#编译日志文件名称:output.txt
None.gif#总日志文件名称(位置):d:\系统平台\Rebuilder.log

None.gif

None.gif批处理文件内容
:
None.gif
None.gif
@echo  off
None.gifecho 建立日期 
%date %    # 输出日期
None.gif
d :   # 切换驱动器
None.gif
cd d :\ 系统平台 \   # 进入目录
None.gif
echo 建立日期  %date %   >>  d :\ 系统平台 \ Rebuilder . log   # 写入日期到总日志文件
None.gif
cd d :\ 系统平台 \ infotech . activexengine \   # 进入工程目录
None.gif
" D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe "  infotech . activexengine . sln  / rebuild RELEASE  / out output . txt  # 执行命令,编译工程,以Release模式
None.gif
type output . txt  >>  d :\ 系统平台 \ Rebuilder . log   # 写入日志到总日志内
None.gif
echo 完成构建
None.gifecho 完成构建 
>>  d :\ 系统平台 \ Rebuilder . log   # 写入完成信息
None.gif
notepad d :\ 系统平台 \ Rebuilder . log   # 用写字板显示编译总日志便于查看
None.gif
pause  # 暂停
None.gif

运行该批处理文件将编译 Infotech.ActivexEngine 工程,并且显示出编译的结果到Rebuilder.log 文件中.
按这样的做法,依次将其他的工程写入,这样,每天下班的时候就运行一次,或者放到WINDOWS 的任务中自动运行,保证每个工程都被重建.在批处理文件中还可以增加其他的命令,比如通过命令行备份每次的编译结果到服务器上等等动作.

另外,象FinalBuilder 这些专业的工具还支持从一些版本控制系统中检测最新的版本,或者是生成压缩包,备份文件,刻盘...等等善后工作,有条件的还是使用这些专业软件.

附录:

开源的几个Build工具如下:
 BusyBeeBuilder   
 BusyBeeBuilder provides a powerful,easy-to-use,and extensible .NET build automation tool.

 DevBuildRunner   
 DevBuildRunner is being developed as OSI Certified Open Source Software. 

 .NET Pre-Build   
 .NET Pre-Build是一个XML驱动的预建造工具 

 BuildStudio
 多个开发人员独立地编写大量的源代码组件,这些组件最终进行编译、打包并交付给测试人员或最终用户

 CruiseControl.NET   
 CruiseControl.NET是为.NET 平台提供的一个自动连续集成服务器。

 Draco.NET   
 Draco.NET是为.NET提供的一个连续集成功能

 NAntContrib   
 这是为NAnt提供的定制任务  

 NAnt   
 它是一个基于.NET的编译(Build)工具,能够使项目的编译过程非常容易。



希望与大家分享经验:)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
Kubernetes NoSQL 网络协议
VS2017编译TarsCpp测试工程
VS2017编译TarsCpp测试工程
|
7月前
|
Windows
使用bat批处理来简化程序使用
使用bat批处理来简化程序使用
|
29天前
|
存储 Unix Shell
【简化Cmake编译过程 】编写通用的bash脚本:简化和构建cmake高效自动化任务
【简化Cmake编译过程 】编写通用的bash脚本:简化和构建cmake高效自动化任务
42 0
|
9月前
|
编译器 C语言
编译流程与预处理
编译流程与预处理
50 0
编译流程与预处理
|
分布式计算 Java Scala
Spark源码打包编译的过程
Spark源码打包编译的过程
258 0
Spark源码打包编译的过程
|
C++ 数据库
VS2010每次编译都重新编译整个工程的解决方案
在使用VS2010编译C++程序的时候,每次修改工程中的某一个文件,点击“生成-仅用于项目-仅生成**”时,往往都是整个工程都需要重新编译一遍。由于这个工程代码量太大,每次编译完成都需要将近10分钟左右的时间编译。
1398 0
|
监控 IDE 开发工具