• 使用批处理和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)..srcFoundationCommonMainApp.CommonMainApp.Common.sln" />
          
          <ProjectToBuild Include="$(Root)..srcMainAppMainApp.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 Studio2019EnterpriseMSBuildCurrentBinMSBuild.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%WindowsMicrosoft.NETFramework\%framework%MSBuild.exe" all.proj /t:Build /p:Configuration=Debug /v:m
    
    ECHO.
    ECHO   生成完成!
    pause

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

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

     

  • 相关阅读:
    Ubuntu18下解决和IDEA快捷键冲突
    SM.SM图床踩坑记录
    springboot热部署
    springboot创建项目报错
    三次握手,四次挥手(转载)
    slf4j和log4j2整合报错,绑定失败
    Linux终端光标消失解决
    ssh免密登录
    Spring中编写单元测试
    用js模拟查询方法 hide() filter(":contains('"
  • 原文地址:https://www.cnblogs.com/wgx0428/p/12297544.html
Copyright © 2020-2023  润新知