自动编译

前言

利用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

 

posted @ 2019-01-12 14:52  <--青青子衿-->  阅读(418)  评论(0编辑  收藏  举报
// /**/ // 在页脚Html代码 引入 // function btn_donateClick() { var DivPopup = document.getElementById('Div_popup'); var DivMasklayer = document.getElementById('div_masklayer'); DivMasklayer.style.display = 'block'; DivPopup.style.display = 'block'; var h = Div_popup.clientHeight; with (Div_popup.style) { marginTop = -h / 2 + 'px'; } } function MasklayerClick() { var masklayer = document.getElementById('div_masklayer'); var divImg = document.getElementById("Div_popup"); masklayer.style.display = "none"; divImg.style.display = "none"; } setTimeout( function () { document.getElementById('div_masklayer').onclick = MasklayerClick; document.getElementById('btn_donate').onclick = btn_donateClick; var a_gzw = document.getElementById("guanzhuwo"); a_gzw.href = "javascript:void(0);"; $("#guanzhuwo").attr("onclick","follow('33513f9f-ba13-e011-ac81-842b2b196315');"); }, 900);