您现在的位置是:首页 >技术交流 >VS自动编译脚本网站首页技术交流
VS自动编译脚本
VS自动编译脚本
1:新建一个Build.bat脚本文件
2:在脚本文件中输入:
rem ************************************************
rem * Script to compile the solutions of IdealOEye*
rem * Created by: zhaohu *
rem * Created 2017.05.15 *
rem ************************************************
rem set environment variables:
set _devenv="%VS100COMNTOOLS%....Common7IDEdevenv.com"
rem set compile log
set _log="%~dp0compileResults.log"
echo [%DATE% %Time%] Start compile sequence >%_log%
echo Used compile configuration is %buildAnyCPU% >>%_log%
rem Start compile************************************************
set _solution_file="%~dp0samples_vs2010.sln"
%_devenv% %_solution_file% /build "Release|Win32" /Out %_log%
if not %errorlevel% == 0 echo %_solution_file%failed! Error: %errorlevel% >>%_log%
if %errorlevel% == 0 echo %_solution_file% compiled successful >>%_log%
rem If compile failed stop processing:
if not %errorlevel% == 0 pause
echo [%DATE% %Time%] Finished compile sequence >>%_log%
pause
3:将其放在sln解决方案目录下,运行即可自动编译。
附:devenv的命令行帮助
Microsoft (R) Visual Studio Version 8.0.50727.762.
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.
Use:
devenv [solutionfile | projectfile | anyfile.ext] [switches]
The first argument for devenv is usually a solution file or project file.
You can also use any other file as the first argument if you want to have the
file open automatically in an editor. When you enter a project file, the IDE
looks for an .sln file with the same base name as the project file in the
parent directory for the project file. If no such .sln file exists, then the
IDE looks for a single .sln file that references the project. If no such single
.sln file exists, then the IDE creates an unsaved solution with a default .sln
file name that has the same base name as the project file.
Command line builds:
devenv solutionfile.sln /build solutionconfig [ /project projectnameorfile [ /projectconfig name ] ]
Available command line switches:
/Build Builds the solution or project with the specified solution
configuration. For example "Debug". If multiple platforms
are possible, the configuration name must be enclosed in quotes
and contain platform name. For example: "Debug|Win32".
/Clean Deletes build outputs.
/Command Starts the IDE and executes the command.
/Deploy Builds and then deploys the specified build configuration.
/Edit Opens the specified files in a running instance of this
application. If there are no running instances, it will
start a new instance with a simplified window layout.
/LCID Sets the default language in the IDE for the UI.
/Log Logs IDE activity to the specified file for troubleshooting.
/NoVSIP Disables the VSIP developer's license key for VSIP testing.
/Out Appends the build log to a specified file.
/Project Specifies the project to build, clean, or deploy.
Must be used with /Build, /Rebuild, /Clean, or /Deploy.
/ProjectConfig Overrides the project configuration specified in the solution
configuration. For example "Debug". If multiple platforms are
possible, the configuration name must be enclosed in quotes
and contain platform name. For example: "Debug|Win32".
Must be used with /Project.
/Rebuild Cleans and then builds the solution or project with the
specified configuration.
/ResetAddin Removes commands and command UI associated with the specified Add-in.
/ResetSettings Restores the IDE's default settings, optionally resets to
the specified VSSettings file.
/ResetSkipPkgs Clears all SkipLoading tags added to VSPackages.
/Run Compiles and runs the specified solution.
/RunExit Compiles and runs the specified solution then closes the IDE.
/SafeMode Launches the IDE in safe mode loading minimal windows.
/Upgrade Upgrades the project or the solution and all projects in it.
A backup of these files will be created as appropriate. Please
see Help on 'Visual Studio Conversion Wizard' for more
information on the backup process.
Product-specific switches:
/debugexe Open the specified executable to be debugged. The
remainder of the command line is passed to this
executable as its arguments.
/useenv Use PATH, INCLUDE, LIBPATH, and LIB environment variables
instead of IDE paths for VC++ builds.
To attach the debugger from the command line, use:
VsJITDebugger.exe -p <pid>
附:
vs2005 devenv.exe命令行帮助中文:
用法:
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
Setting environment for using Microsoft Visual Studio 2010 x64 tools.
C:Program Files (x86)Microsoft Visual Studio 10.0VC>C:>dir /s /b /d MSBuild
.exe
'C:' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
C:Program Files (x86)Microsoft Visual Studio 10.0VC>msbuild
Microsoft(R) 生成引擎版本 4.7.2053.0
[Microsoft .NET Framework 版本 4.0.30319.42000]
版权所有 (C) Microsoft Corporation。保留所有权利。
MSBUILD : error MSB1003: 请指定项目或解决方案文件。当前工作目录中未包含项目或解
决方案文件。
C:Program Files (x86)Microsoft Visual Studio 10.0VC>msbuild
Microsoft(R) 生成引擎版本 4.7.2053.0
[Microsoft .NET Framework 版本 4.0.30319.42000]
版权所有 (C) Microsoft Corporation。保留所有权利。
MSBUILD : error MSB1003: 请指定项目或解决方案文件。当前工作目录中未包含项目或解
决方案文件。
C:Program Files (x86)Microsoft Visual Studio 10.0VC>cd D:API3.0_VS_Pycharm_
常用操作示例代码&开发环境 1multiVersionARXDBGplus
系统找不到指定的路径。
系统找不到指定的路径。
C:Program Files (x86)Microsoft Visual Studio 10.0VC>cd D: 1multiVersionARXDB
Gplus
C:Program Files (x86)Microsoft Visual Studio 10.0VC>msbuild
Microsoft(R) 生成引擎版本 4.7.2053.0
[Microsoft .NET Framework 版本 4.0.30319.42000]
版权所有 (C) Microsoft Corporation。保留所有权利。
MSBUILD : error MSB1003: 请指定项目或解决方案文件。当前工作目录中未包含项目或解
决方案文件。
C:Program Files (x86)Microsoft Visual Studio 10.0VC>MSBUILD /HELP
Microsoft(R) 生成引擎版本 4.7.2053.0
[Microsoft .NET Framework 版本 4.0.30319.42000]
版权所有 (C) Microsoft Corporation。保留所有权利。
语法: MSBuild.exe [选项] [项目文件]
描述: 在项目文件中生成指定的目标。如果
未指定项目文件,MSBuild 将搜索
当前工作目录来查找文件扩展名
以“proj”结尾的文件并使用该文件。
开关:
/target:<targets> 在此项目中生成这些目标。使用
分号或逗号分隔多个目标,或者分别指定
每个目标。(缩写: /t)
示例:
/target:Resources;Compile
/property:<n>=<v> 设置或重写这些项目级属性。<n> 是
属性名,<v> 为属性值。请使用
分号或逗号分隔多个属性,或者
分别指定每个属性。(缩写: /p)
示例:
/property:WarningLevel=2;OutDir=binDebug
/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 -- 不将文本与控制台缓冲区的大小
匹配。
DisableConsoleColor -- 将默认控制台颜色
用于所有记录消息。
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:LoggersMyLogger.dll;OutputAsHTML
/validate 依据默认架构验证项目。(缩写:
/val)
/validate:<schema> 依据指定的架构验证项目。 (缩写:
/val)
示例:
/validate:MyExtendedBuildSchema.xsd
/ignoreprojectextensions:<扩展名>
确定要生成的项目文件时要忽略的
扩展名的列表。使用分号或逗号来分隔
多个扩展名。
(缩写: /ignore)
示例:
/ignoreprojectextensions:.sln
/nodeReuse:<parameters>
允许或禁止重复使用 MSBuild 节点。
参数包括:
True -- 生成完成后节点将保留,
并且将由后面的生成重复使用(默认)
False -- 生成完成后节点将不会保留
(缩写: /nr)
示例:
/nr:true
/preprocess[:file]
通过嵌入将在生成过程中导入的
所有文件并标记其边界,
创建一个聚合的项目文件。这对于
了解导入什么文件、从何处导入以及
这些文件在生成中的构成
非常有用。默认情况下,输出将写入
控制台窗口。如果提供输出文件的路径,
则将改用该路径。
(缩写: /pp)
示例:
/pp:out.txt
/detailedsummary
在生成的结尾显示有关
所生成的配置以及如何向节点安排
这些配置的详细信息。
(缩写: /ds)
@<file> 从文本文件插入命令行设置。若要指定
多个响应文件,请分别指定每个响应
文件。
自动从以下位置使用任何
名为“msbuild.rsp”的响应文件:
(1) msbuild.exe 的目录
(2) 生成的第一个项目或解决方案的目录
/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
C:Program Files (x86)Microsoft Visual Studio 10.0VC>
下面是经过修正过的代码
@echo off
REM mode con lines=20 cols=60
REM %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
REM cd /d "%~dp0"
ECHO 设置 Visual Studio environment...
CALL "C:Program Files (x86)Microsoft Visual Studio 10.0VCvcvarsall.bat" amd64
title Command Prompt (MSVC++ 2010) x64
color 2e
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,5) do (
set a=%%i
echo !a!
)
pause
@echo OFF
set Msbuild=C:Program Files (x86)Microsoft Visual Studio 10.0VC
set ObjCurrent0=D: 1multiVersionARXDBGplusmultiVersionArxDbg.vcxproj
REM D: 1multiVersionARXDBGplus
set arxpath =D: 1multiVersionARXDBGplusARXDBG2008ReleaseArxComLibWin32ArxComLib.arx
set Arxpath32=D: 1multiVersionARXDBGplusReleasemultiVersionArxDbg.Release.Win32.arx
REM Set Arrpath64=D:workhuizuhaoDwgCommonLibAry05mLibArxComLibx64ArxConLib.arx CommonLib.Arx
Set Arxpath64=D: 1multiVersionARXDBGplusx64multiVersionArxDbg.Release.x64.arx
REM set Arrpath32=D: 1multiVersionARXDBGplusReleaseCommonLib.Arx
REM Set Arrpath64=D:workhuizuhaoDwgCommonLibAry05mLibArxComLibx64ArxConLib.arx CommonLib.Arx
REM Set Arrpath64=D: 1multiVersionARXDBGplusx64ArxConLib.arx
setlocal enabledelayedexpansion
for /l %%i in (0,1,0) do (
echo !ObjCurrent%%i!
)
REM Msbuild %ObjCurrent0% /t:build /p:Configuration=Release /p:Platform=Win32 /p:PlatformToolset=v80 /p:PrecompiledHeader=NotUsing /m
REM Msbuild %ObjCurrent0% /t:build /p:Configuration=Release /p:Platform=x64 /p:PlatformToolset=v90 /p:PrecompiledHeader=NotUsing /m
setlocal enabledelayedexpansion
for /l %%i in (0,1,0) do (
echo !ObjCurrent%%i!
del %ArxPath32%
rem Msbuild !ObjCurrent%%i! /t:build /p:Configuration=Release /p:Platform=Win32 /p:PlatformToolset=v80 /p:PrecompiledHeader=NotUsing /m
echo %ArxPath32%
REM IF NOT EXIST %ArxPath32%
rem IF EXIST %ArxPath32%
(
echo %ArxPath32%
Msbuild !ObjCurrent%%i! /t:build /p:Configuration=Release /p:Platform=Win32 /p:PlatformToolset=v80 /p:PrecompiledHeader=NotUsing /m
rem IF EXIST %ArxPath32%
(
Msbuild !ObjCurrent%%i! /t:clean
Msbuild !ObjCurrent%%i! /t:rebuild /p:Configuration=Release /p:Platform=Win32 /p:PlatformToolset=v80 /p:PrecompiledHeader=NotUsing /m
)
rem IF EXIST %ArxPath32%
(
echo v80
Pause
)
)
)
echo.
echo. 请按任意键退出。
Pause
@Pause>nul