使用批处理和MSBuild命令编译项目
第一步:先创建一个目录列表如图所示
bin:所有项目最终编译后DLL的输出目录
build:存放生成项目的bat批处理文件
src:存放项目源文件
第二部:src目录分别创建一个主项目和类库项目
创建多个解决方案的目的是针对大型项目使用减法及模块化的思想进行拆分。
示例:WPF主项目MainApp,类库项目MainApp.Common。MainApp引用MainApp.Common
项目创建好后分别项目右键属性-->生成页面的输出选项将编译的dll目录输出到统一的bin目录下,具体需要根据自己项目实际情况设置..\层级需要几个。
第三步:build下分别创建一个批处理文件和一个批处理引用文件
all.proj 文件内容:
<?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Root>$(MSBuildStartupDirectory)</Root> </PropertyGroup> <Target Name="Build"> <!-- Compile --> <ItemGroup> <ProjectToBuild Include="$(Root)\..\src\Foundation\Common\MainApp.Common\MainApp.Common.sln" /> <ProjectToBuild Include="$(Root)\..\src\MainApp\MainApp.sln" /> </ItemGroup> <MSBuild Projects="@(ProjectToBuild)" Targets="Build" Properties="Configuration=Debug;"> <Output TaskParameter="TargetOutputs" ItemName="AssembliesBuiltByChildProjects" /> </MSBuild> </Target> </Project>
红框所示,分别引用了两个解决方案,注意引用顺序。
all.bat 文件:
@ECHO OFF
SET framework=v4.0.30319
"c:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" all.proj /t:Build /p:Configuration=Debug /v:m
ECHO.
ECHO 生成完成!
pause
箭头所指方向是生成器所在目录地址,每个机器环境不一样,确认你本机已经安装了那个版本的MSBuild.exe程序,具体的可以使用dir查看,如:C:\>dir /s /b /d MSBuild.exe 可以查看本机各个版本。下面箭头所指方向是我本机vs2019环境的
如果你是.net framework 4.0的程序,默认下面这种更合理,不用来回改,系统会动态读取环境变量值。
@ECHO OFF
SET framework=v4.0.30319
"%SystemDrive%\Windows\Microsoft.NET\Framework\%framework%\MSBuild.exe" all.proj /t:Build /p:Configuration=Debug /v:m
ECHO.
ECHO 生成完成!
pause
执行批处理文件结果如下:
到bin目录下查看是否编译成功:
作者:江宁织造
博客:http://www.cnblogs.com/wgx0428/
博客:http://www.cnblogs.com/wgx0428/