该批处理的初衷是为了让公司非程序员可以不通过VC工程,直接运行批处理文件而编译运行程序。
一,其实很简单,首先需要安装VC,没有正式版,安装免费的Express版本也行。
然后写个批处理,内容如下。
REM VC目录中2008是9.0,2005是8,其他的自己到C:/Program Files去找下VC安装路径
CALL "C:/Program Files/Microsoft Visual Studio 9.0/VC/vcvarsall.bat"
REM “/xxx.vcproj” 是工程名字,包含路径,或者可能是.sln
REM “defaultbuild_d|Win32”是工程的配置名字,用文本方式打开.sln或者.vcproj就肯看到
VCbuild "/xxx.vcproj" "defaultbuild_d|Win32"
REM "../bin/win32/defaultbuild_d"是exe文件所在目录
CD "../bin/win32/defaultbuild_d"
REM CALL "xxx.exe"是你的exe文件
CALL "xxx.exe"
以上内容做成一个批处理放在桌面上,就能直接编译运行工程了。
二,从msdn里找的VCBUILD帮助
VCBUILD 具有下列选项:
<!-- -->
三,网上找的一个哥们整理的多工程在一个项目里的批处理编译,不过自己也没试验过,哈哈
来源网址:
http://blog.csdn.net/lzmtw/archive/2008/12/15/3514889.aspx
内容
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> 在此项目中生成这些目标。使用
分号或逗号分隔多个目标,或者分别指定
每个目标。(缩写: /t)
示例:
/target:Resources;Compile
/property:<n>=<v> 设置或重写这些项目级属性。<n> 是
属性名,<v> 为属性值。请使用
分号或逗号分隔多个属性,或者
分别指定每个属性。(缩写: /p)
示例:
/property:WarningLevel=2;OutDir=bin/Debug/
/maxcpucount[:n] 指定用于生成的最大
并发进程数。如果未使用开关,则使用的默认值
为 1。如果使用开关时不带值,
MSBuild 将最多使用计算机上的
处理器数。(缩写: /m[:n])
/toolsversion:<version>
要在生成过程中使用的 MSBuild 工具集
(任务、目标等) 的版本。此版本将重写
个别项目指定的版本。(缩写:
/tv)
示例:
/toolsversion:3.5
/verbosity:<level> 在事件日志中显示此级别的信息量。
可用的详细级别有: q[uiet]、 m[inimal]、
n[ormal]、d[etailed] 和 diag[nostic]。(缩写: /v)
示例:
/verbosity:quiet
/consoleloggerparameters:<parameters>
控制台记录器的参数。(缩写: /clp)
可用的参数有:
PerformanceSummary -- 显示在任务、目标和项目上
花费的时间。
Summary -- 结束时显示错误和警告的摘要。
NoSummary -- 结束时不显示错误和警告
的摘要。
ErrorsOnly -- 仅显示错误。
WarningsOnly -- 仅显示警告。
NoItemAndPropertyList -- 在开始生成每个项目时不显示
项和属性的列表。
ShowCommandLine -- 显示 TaskCommandLineEvent 消息
ShowTimestamp -- 将时间戳作为所有消息的前缀
显示。
ShowEventId -- 显示已开始事件、已完成事件和消息
的事件 ID。
ForceNoAlign -- 不将文本与控制台缓冲区的大小
匹配。
DisableMPLogging -- 在非多处理器
模式下运行时,禁用输出的多处理器
日志记录样式。
EnableMPLogging -- 即使在非多处理器
模式下运行,也启用多处理器
日志记录样式。默认情况下启用此日志记录样式。
Verbosity -- 重写此记录器的 /verbosity
设置。
示例:
/consoleloggerparameters:PerformanceSummary;NoSummary;
Verbosity=minimal
/noconsolelogger 禁用默认控制台记录器,并且不将事件
记录到控制台。(缩写: /noconlog)
/fileLogger[n] 将生成输出记录到文件中。默认情况下,
该文件在当前目录中,名称为
“msbuild[n].log”。所有节点中的事件合并到
单个日志中。fileLogger 的文件和
其他参数的位置可以通过添加
“/fileLoggerParameters[n]”开关来指定。
“n”(如果存在)可以为 1-9 的数字,允许最多附加
10 个文件记录器。(缩写: /fl[n])
/fileloggerparameters[n]:<parameters>
为文件记录器提供任何额外的参数。
存在此开关意味着
存在对应的 /filelogger[n] 开关。
“n”(如果存在)可以为 1-9 的数字。
任何分布式文件记录器也可以使用
/fileloggerparameters,具体可参阅 /distributedFileLogger 的说明。
(缩写: /flp[n])
为控制台记录器列出的相同参数
可用。某些其他可用参数有:
LogFile -- 生成日志将写入其中的
日志文件的路径。
Append -- 确定是将生成日志附加到日志文件,
还是覆盖日志文件。如果设置此
开关,则会将生成日志附加到日志文件;
如果不设置此开关,则会覆盖
现有日志文件的内容。
默认值为不附加到日志文件。
Encoding -- 指定文件的编码,
例如,UTF-8、Unicode 或 ASCII
默认的详细级别为 Detailed。
示例:
/fileLoggerParameters:LogFile=MyLog.log;Append;
Verbosity=diagnostic;Encoding=UTF-8
/flp:Summary;Verbosity=minimal;LogFile=msbuild.sum
/flp1:warningsonly;logfile=msbuild.wrn
/flp2:errorsonly;logfile=msbuild.err
/distributedlogger:<central logger>*<forwarding logger>
使用此记录器来记录 MSBuild 中的事件,向每个节点
附加不同的记录器实例。若要指定
多个记录器,请分别指定每个记录器。
(缩写 /dl)
<logger> 语法为:
[<logger class>,]<logger assembly>[;<logger parameters>]
<logger class> 语法为:
[<partial or full namespace>.]<logger class name>
<logger assembly> 语法为:
{<assembly name>[,<strong name>] | <assembly file>}
<logger parameters> 是可选的,并且按键入的
形式原样传递给记录器。(缩写: /l)
示例:
/dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral
/dl:MyLogger,C:/My.dll*ForwardingLogger,C:/Logger.dll
/distributedFileLogger
将生成输出记录到多个日志文件,每个 MSBuild 节点
一个日志文件。这些文件的初始位置为
当前目录。默认情况下,这些文件名为
“MSBuild<nodeid>.log”。可通过添加
“/fileLoggerParameters”开关来指定
这些文件的位置和 fileLogger 的其他参数。
如果日志文件名是通过 fileLoggerParameters
开关设置的,分布式记录器将使用 fileName 作为
模板并将节点 ID 附加到此 fileName
以便为每个节点创建一个日志文件。
/logger:<logger> 使用此记录器来记录 MSBuild 中的事件。若要指定
多个记录器,请分别指定每个记录器。
<logger> 语法为:
[<logger class>,]<logger assembly>[;<logger parameters>]
<logger class> 语法为:
[<partial or full namespace>.]<logger class name>
<logger assembly> 语法为:
{<assembly name>[,<strong name>] | <assembly file>}
<logger parameters> 是可选的,并按键入的
形式原样传递给记录器。(缩写: /l)
示例:
/logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral
/logger:XMLLogger,C:/Loggers/MyLogger.dll;OutputAsHTML
/validate 依据默认架构验证项目。(缩写:
/val)
/validate:<schema> 依据指定的架构验证项目。 (缩写:
/val)
示例:
/validate:MyExtendedBuildSchema.xsd
/ignoreprojectextensions:<extensions>
确定要生成哪个项目文件时要忽略的
扩展名的列表。使用分号或逗号来分隔
多个扩展名。
(缩写: /ignore)
示例:
/ignoreprojectextensions:.vcproj,.sln
/nodeReuse:<parameters>
允许或禁止重复使用 MSBuild 节点。
参数包括:
True -- 生成完成后节点将保留,
并且将由后面的生成重复使用(默认)
False -- 生成完成后节点将不会保留
(缩写: /nr)
示例:
/nr:true
@<file> 从文本文件插入命令行设置。若要指定
多个响应文件,请分别指定每个响应
文件。
/noautoresponse 不自动包括 MSBuild.rsp 文件。(缩写:
/noautorsp)
/nologo 不显示启动版权标志和版权消息。
/version 仅显示版本信息。(缩写: /ver)
/help 显示此用法消息。(缩写: /? 或 /h)
示例:
MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release
MSBuild MyApp.csproj /t:Clean
/p:Configuration=Debug;TargetFrameworkVersion=v3.5
分享到:
相关推荐
通过执行该批处理,直接对.net2003的工程文件进行自动编译!比较方便
linux 0.00内核 VC工程 用VC编译 linux 0.00 VC工程 linux 0.00内核 VC工程 用VC编译 linux 0.00 VC工程 linux 0.00内核 VC工程 用VC编译 linux 0.00 VC工程 linux 0.00内核 VC工程 用VC编译 linux 0.00 VC工程
批处理编译工具 批处理编译工具 批处理编译工具
ios openssl 编译批处理 需自行下载openssl 源码包,详见 http://blog.csdn.net/piao_polar/article/details/8615002
AIR 未编译用批处理bat调用 adl 打开 批处理AIR 未编译用批处理bat调用 adl 打开 批处理AIR 未编译用批处理bat调用 adl 打开 批处理AIR 未编译用批处理bat调用 adl 打开 批处理AIR 未编译用批处理bat调用 adl 打开 ...
通过Bat文件一次可以反编译多个 apk文件,已经内置apktool readme.txt 1、安装好jdk 1.6并配置好java环境 ; 2、将要反编译的APK 放到apk 文件夹中; 3、双击 反编译apk.bat; 4、反编译后的apk就会显示在newapk文件夹下...
C#助手,大家都知道csc hello.cs 是一条编译C#文件的命令,其实用批处理可以更好的做到,这个软件就是把这一切用批处理给实现。广西的陈广教授在教程中用到的就是和这个软件类似的,本人做出来的和他的功能一模一样...
里面带完整的VC工程,直接使用VC打开工程文件就可以编译通过,编译生成出来的是Linux下面ELF格式的Linux文件,不是PE格式的文件。编译出来的Linux可以正常运行,包含所有linux的功能,总之,和在linux下编译的是一摸...
批处理编译工具_Quick Batch File Compiler V3.1.6.0绿色版.rar
Client.bat文件写的一个java工程自动编译脚本,可供参考写其它Java工程批处理文件。
编译VC2008程序时,vc90.pdb不能更新 error C2471: cannot update program database "vc90.pdb
vc2008工程转为vc6工具,将.sln转为.dsw, 没有安装vs2008的,没有安装vs2008的朋友可以用这个工具转换为vc6工程,然后直接打开.dsw文件,用vc6编译
如何用批处理文件实现自动编译Keil工程和C# Visual Studio工程 写个Bat 批处理文件,现自动编译Keil工程和C# Visual Studio工程。这样可以结合Python 实现复杂的操作。
Quick Batch File Compiler 能将批处理(*.bat)编译可执行文件(*.exe)
包括VC++2008和GCC 3.4.5两个版本的编译批处理。关于Windows XP,Vista下MinGW的安装与配置,编译顺序,VC++2008中创建wxWidgets 项目时的路径配置均有说明文件。编译前请先修改env.bat文件中的变量设置,指向你的...
适合EmEditor和Editplus文本编辑器配置一键编译运行java的批处理文件
无法设置java_home的时候使用这个bat来启动eclipse吧。 <br>不要关闭那个命令行窗口,关闭它的话会连eclipse一起关掉。 <br>@echo off @echo 使用指定的jdk启动eclipse.. @echo 使用前先修改这个脚本指定...
TinyXML 编译与使用的例子工程(VC2008)
使用批处理删除VC编译时产生的临时文件和其它不必要的文件,减少占用的硬盘空间,可用于VC6-VC2010。 使用时把该批处理文件放到要清理的文件夹下,运行后会把该文件夹及其子文件夹下所有符合扩展名的文件都删除掉。...
易语言vc6_vc7_vc8_vc9_vc2010到vc2022静态编译12个版本,截止2022年所以vc++版本都完美支持!文件放在易语言根目录。