使用批处理和MSBuild命令编译项目

第一步:先创建一个目录列表如图所示

使用批处理和MSBuild命令编译项目_第1张图片

bin:所有项目最终编译后DLL的输出目录

build:存放生成项目的bat批处理文件

src:存放项目源文件

第二部:src目录分别创建一个主项目和类库项目

 使用批处理和MSBuild命令编译项目_第2张图片使用批处理和MSBuild命令编译项目_第3张图片

 

 使用批处理和MSBuild命令编译项目_第4张图片

 

 创建多个解决方案的目的是针对大型项目使用减法及模块化的思想进行拆分。

示例:WPF主项目MainApp,类库项目MainApp.Common。MainApp引用MainApp.Common

项目创建好后分别项目右键属性-->生成页面的输出选项将编译的dll目录输出到统一的bin目录下,具体需要根据自己项目实际情况设置..\层级需要几个。

使用批处理和MSBuild命令编译项目_第5张图片

 

 

第三步:build下分别创建一个批处理文件和一个批处理引用文件

使用批处理和MSBuild命令编译项目_第6张图片

 

 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">

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

红框所示,分别引用了两个解决方案,注意引用顺序

   使用批处理和MSBuild命令编译项目_第7张图片

 

 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命令编译项目_第8张图片

 

 箭头所指方向是生成器所在目录地址,每个机器环境不一样,确认你本机已经安装了那个版本的MSBuild.exe程序,具体的可以使用dir查看,如:C:\>dir /s /b /d  MSBuild.exe 可以查看本机各个版本。下面箭头所指方向是我本机vs2019环境的

使用批处理和MSBuild命令编译项目_第9张图片

 

 如果你是.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

 执行批处理文件结果如下:

使用批处理和MSBuild命令编译项目_第10张图片

 

 到bin目录下查看是否编译成功:

使用批处理和MSBuild命令编译项目_第11张图片

 

 使用批处理和MSBuild命令编译项目_第12张图片

 

你可能感兴趣的:(使用批处理和MSBuild命令编译项目)