1、相关语法链接:
1: MSBuild 命令行参考.
2: Nuget 命令行参考.
3: Bat 语法参考.
4: Dotfuscator 的功能.
2、完整示例
@echo off
:: 设置操作 Build 编译;Clean清理;Rebuild 重新编译详见(https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2019)
:: 解决方案名称
set slnName = "XXX.sln"
:: MSBuild.exe程序
set ms="D:\VisualStudio2019\Community\MSBuild\Current\Bin\MSBuild.exe"
::设置日志等级
::Diagnostic 4 诊断详细级别,它显示所有错误、警告、消息,状态事件以及生成摘要。
::Detailed 3 详情详细级别,它显示 错误、警告、MessageImportance 值为 High 或 Normal 的消息、所有状态事件以及生成摘要。
::Normal 2 普通详细级别,它显示 错误、警告、MessageImportance 值为 High 的消息、一些状态事件以及生成摘要。
::Minimal 1 最小详细级别,它显示 错误、警告、MessageImportance 值为 High 的消息以及生成摘要。
::Quiet 0 静默详细级别,它显示生成摘要。
:: 加密方式
set dot="D:\VisualStudio2019\Community\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe"
:: 加密方式
set nuget_Key = "oy2hgcurfrlvay3bpcaqwohcg3f6tnmubahd457jhecqme"
set nuget_url = "https://api.nuget.org/v3/index.json"
@ECHO.
ECHO 当前VS的版本对应的MSBuild.exe程序路径:D:\VisualStudio2019\Community\MSBuild\Current\Bin\MSBuild.exe
color 2
@ECHO.
echo 你是否使用这个版本的MSBuild.exe来编译当前程序?如果不需要编译,请关闭此窗口。
echo,&&echo 1:Debug编译项目
echo,&&echo 2:Release编译项目
echo,&&echo 3:不编译,Debug发布项目
echo,&&echo 4:不编译,Release发布项目
echo,&&echo 5:清理解决方案
echo,&&echo 6:清理Nuget
echo,&&echo 7:退出
echo;
set /p buildType= 输入任务编号 :
color
IF /I "%buildType%"=="1" GOTO BuildDebug
IF /I "%buildType%"=="2" GOTO BuildRelease
IF /I "%buildType%"=="3" GOTO EncryptionDebug
IF /I "%buildType%"=="4" GOTO EncryptionRelease
IF /I "%buildType%"=="5" GOTO Clean
IF /I "%buildType%"=="6" GOTO Clean
IF /I "%buildType%"=="7" GOTO End
:Clean
@ECHO.
echo 正在清理 %slnName% ......
%ms% %slnName% /t:Clean || GOTO ER
echo 清理完成
@ECHO.
GOTO EncryptionDebug
:BuildDebug
@ECHO.
echo 正在启动Debug模式编译 %slnName% ......
%ms% %slnName% /t:Build -p:Configuration="Debug" -fileLoggerParameters:FileLogger,Microsoft.Build;logfile=MyLog.Debug.log;append -verbosity:Minimal || GOTO ER
echo 编译完成
@ECHO.
GOTO EncryptionDebug
:BuildRelease
@ECHO.
echo 正在启动Release模式编译 %slnName% ......
%ms% %slnName% /t:Build -p:Configuration="Release" -fileLoggerParameters:FileLogger,Microsoft.Build;logfile=MyLog.Release.log;append -verbosity:Minimal || GOTO ER
echo 编译完成
@ECHO.
GOTO EncryptionRelease
:EncryptionDebug
@ECHO.
echo 正在对%slnName% 项目dll进行加密 ......
%dot% .\XXX.Debug.Dotfuscator.xml || goto :error
xcopy .\Dotfuscated\*.dll .\bin\Debug\ /Y || goto :error
xcopy .\Dotfuscated\*.pdb .\bin\Debug\ /Y || goto :error
echo 加密完成
@ECHO.
GOTO CleanNuget
:EncryptionRelease
@ECHO.
echo 正在对%slnName% dll进行加密 ......
%dot% .\XXX.Release.Dotfuscator.xml || goto :error
xcopy .\Dotfuscated\*.dll .\bin\Release\ /Y || goto :error
xcopy .\Dotfuscated\*.pdb .\bin\Release\ /Y || goto :error
echo 加密完成
@ECHO.
GOTO CleanNuget
:CleanNuget
@ECHO.
echo 正在删除缓存...
del /Q .\Nupkgs\*.*
echo 删除缓存完成
@ECHO.
GOTO Nuget
:Nuget
@ECHO.
echo 正在进行打包...
nuget pack .\路径.csproj -OutputDirectory .\Nupkgs || GOTO ER
nuget pack .\路径.csproj -OutputDirectory .\Nupkgs || GOTO ER
nuget pack .\路径.csproj -OutputDirectory .\Nupkgs || GOTO ER
echo 打包完成
@ECHO.
GOTO Publish
:Publish
@ECHO.
echo 正在进行发布...
nuget push .\Nupkgs\*.nupkg %nuget_Key% -Source %nuget_url% || GOTO ER
echo 发布完成
@ECHO.
GOTO End
:ER
@ECHO.
ECHO MSBuild.exe Command-Line Build Tool v1.0
GOTO End
:End
@ECHO.
PAUSE
@ECHO ON