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

摘要:
MainApp引用MainApp创建Common项目后,右键单击项目的属性--˃生成页面的输出选项,将编译的dll目录输出到统一bin目录。您需要根据项目的实际情况设置级别数。箭头“pause”表示生成器的目录地址。每台机器的环境都不同。确保已安装MSBuild版本。exe。您可以使用dir查看详细信息,例如C:˃dir/s/b/dMSBuild.Exe可以查看计算机的各种版本。pause的批处理文件执行结果如下:转到bin目录检查编译是否成功:

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

使用批处理和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">

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

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

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

 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命令编译项目第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%WindowsMicrosoft.NETFramework\%framework%MSBuild.exe" all.proj /t:Build /p:Configuration=Debug /v:m

ECHO.
ECHO   生成完成!
pause

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

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

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

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

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

免责声明:文章转载自《使用批处理和MSBuild命令编译项目》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇springcloud alibaba-sentinel流控-直接-排队等待EF基础篇-DB First下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.NET系统框架

本书是一本讲解.NET技术的书籍,目标读者群也是在.NET框架(.NET Framework)下进行开发的程序员,因此我们无法回避的问题就是:什么是.NET框架?它包含了哪些内容?为开发程序提供了哪些支持?很多朋友对这类个问题的第一反应可能是.NET框架所提供的庞大类库及编写代码所采用的C#语言,实际上远不止这些。 要描述.NET框架,自然会遇到与其相关的...

Linux程序编译链接动态库版本号的问题

不同版本号的动态库可能会不兼容,假设程序在编译时指定动态库是某个低版本号。执行是用的一个高版本号,可能会导致无法执行。 Linux上对动态库的命名採用libxxx.so.a.b.c的格式。当中a代表大版本号号。b代表小版本号号,c代表更小的版本号号。我们以Linux自带的cp程序为例,通过ldd查看其依赖的动态库 $ ldd /bin/cp...

VC++/MFC 最常用宏和指令

1、#include指令 包含指定的文件,最基本的最熟悉的指令,编程中不得不用,包含库文件用双尖括号,包含自定义头文件用双引号。 2、#define指令 预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在预处理过程就已经完成了。 对于一个频繁使用的短小函数,在C语言中用宏定义...

VC6.0设置选项解读(转)

其实软件调试还是一个技术熟练过程,得慢慢自己总结,可以去搜索引擎查找一些相关的文章看看,下边是一篇关于VC6使用的小文章,贴出来大家看看: 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这...

CSS3(七) 前端预处理技术(Less、Sass、CoffeeScript)

目录 一、Less 1.1、概要 1.2、变量 1.3、解析Less 1.3.1、在线处理 1.3.2、预处理 1.4、混入(Mixins) 1.5、嵌套    1.6、运算 1.7、函数 1.8、继承     1.9、作用域 1.10、注释 二、Sass 2.1、变量 2.2、嵌套 2.3、导入 2.4、mixin 混入 2.5、扩展/继承...

lazarus跨平台编译步骤

1.推荐用fpcupdeluxe安装lazarus,从https://github.com/newpascal/fpcupdeluxe/releases/latest 下载适合的版本 建议FPC和Lazarus选择stable   安装成功后可以安装下面2个插件,Lazarus的界面就像delphi XE一样 安装插件前的界面和D7一样:  安装插...