自动编译

前言

利用MSbuild我们可以实现批处理快速编译。

注意几点事项:

1.关于msbuild编译.net 4.5及以上语法错误的解决方法:

   .net4.5以前msbuild 是在%windir%/Microsoft.NET/FrameworkXX/vXX目录下,如:C:\Windows\Microsoft.NET\Framework64\v4.0.30319,不过在使用4.5新语法后就无法编译通过,这时候就应该使用vs自带msbuild ,比如VS2017的msbuild路径为:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin

2.如果项目中有nuget引用,首先保证nuget添加的方式正确,然后可以利用VS2017里面自带的nuget.exe,也可以将nuget.exe放置到解决方案目录下,VS2017自带的nuget目录地址:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\SqlChangeAutomation\OctoPack\build

3.可以更SVN检出更新放在一起,实现一键化编译

 

@echo off
rem ---------------------------------
rem -------作 者:姜彦---------------
rem ---------------------------------
echo 【自动发布开始】
rem SVN检出代码存放地址路径,可以直接创建,不需要手动创建
set svn_home=D:\6
rem 解决方案编译生成目录
set SlnBuildPath=D:\7
rem 解决方案名称(不带.sln)
set SolutionName=AE240_Simulator
rem 设置编译模式
set Configuration=Debug
set LogLevel=normal
rem SVN工作目录
set work_work=https://jiangyan_pc/svn/Learn/Technology/COM/COM-Observer/FRFL_WiFiTransmission
rem SVN用户名
set svnUserName=*******
rem SVN用户对应密码
set svnPassword=********

set /p input="是否重新创建文件夹(y/n): "
if %input% == y (
    rd /q/s %svn_home%
    md %svn_home%
    cd %svn_home%
) else (
    cd %svn_home%
)
echo 【检出代码】
svn checkout --username %svnUserName% --password %svnPassword% -q  %work_work% %svn_home%
echo 【检出成功】 

echo 【开始编译】

rem 获取解决方案所在路径
set SolutionPath=%svn_home%
rem 获取解决方案全称
set SolutionFile=%SolutionPath%\%SolutionName%.sln
rem MSBuild路径此处为宏  使用VS2017下面的不要用windows里面的
set MSBuildFile=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild
rem 获取NuGet所在路径 默认在VS2017下面的路径中
set NugetExe=%MSBuildFile%\SqlChangeAutomation\OctoPack\build\NuGet.exe
rem 恢复nuget引用须联网环境
set NugetArgs=restore "%SolutionFile%"
rem MSBuild路径 真正路径
set MSBuildPath=%MSBuildFile%\15.0\Bin
rem MSBuild路径+MSBuild.exe
set MSBuildExe=%MSBuildPath%\MSBuild.exe

rem ********获取正在执行的批处理所在的路径***********
cd /d %~dp0
echo %date%

rem **是否编译****SVN更新版本中不启用判断语句直接编译
::set /p input="是否编译(y/n): "
::if not %input% == y (
::    pause
::    exit 0
)
rem **************************************************

rem ************获取当前年月日************************
for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
     set year=%%i
     set month=%%j
     set day=%%k
     set down=%%l rem 星期
)
set dateStr=%year%%month%%day%
rem ****************************************************

rem 编译输出路径,如果不设置,默认原来解决方案自己设置好的路径
set OUTPUT_PATH=%SlnBuildPath%\%dateStr%
rem 选择输出路径y:带日期时间的路径;n:解决方案默认路径
set /p input2="启动新路径(y/n): "
if  %input2% == y (
    set MSBuildArgs1=/t:Rebuild /p:Configuration=%Configuration%;VisualStudioVersion=15.0;encoding=utf-8;append=true;logfile=%SolutionName%_%Configuration%_Build.log;OutDir=%OUTPUT_PATH%\%Configuration% /m    
) else (
rem 这地方else之后什么也不设置也可以
    set MSBuildArgs1=/t:Rebuild /p:Configuration=%Configuration%;VisualStudioVersion=15.0;encoding=utf-8;append=true;logfile=%SolutionName%_%Configuration%_Build.log
)
set MSBuildArgs=%MSBuildArgs1%

echo Initialize build parameters completed.

echo NuGet Start ReStoreing...
"%NugetExe%" update -Self
"%NugetExe%" %NugetArgs%
echo NuGet ReStore completed.

echo MSBuild Start building...
"%MSBuildExe%" %MSBuildArgs% "%SolutionFile%"
echo MSBuild Build completed.

echo 【====编译成功====::@PAUSE

 

转载于:https://www.cnblogs.com/jiangyan219/articles/10365150.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值