当前位置: 首页 > news >正文

笔记:Directory.Build.targets和Directory.Build.props的区别

一、目的:分享Directory.Build.targets和Directory.Build.props的区别

        Directory.Build.targets 和 Directory.Build.props 是 MSBuild 的两个功能,用于在特定目录及其子目录中的所有项目中应用共享的构建设置。它们的主要区别在于应用的时机和用途。


二、区别


Directory.Build.props


•    应用时机:

Directory.Build.props 文件中的配置会在项目文件(.csproj)中的配置之前应用。


•    用途:

通常用于定义全局属性和项,这些属性和项可以在项目文件中被覆盖。


Directory.Build.targets


•    应用时机:

Directory.Build.targets 文件中的配置会在项目文件(.csproj)中的配置之后应用。


•    用途:

通常用于定义全局目标和任务,这些目标和任务可以覆盖项目文件中的设置。

三、使用场景


•    Directory.Build.props:

适用于需要在项目文件之前定义的全局属性和项。例如,设置默认的输出路径、目标框架等。


•    Directory.Build.targets:

适用于需要在项目文件之后定义的全局目标和任务。例如,自定义构建目标、后处理任务等。

示例


以下是 Directory.Build.props 和 Directory.Build.targets 文件的示例,展示了它们的典型用法。

Directory.Build.props
<Project><PropertyGroup><!-- 定义全局属性 --><Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration><Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform><OutputPath>bin\$(Configuration)\</OutputPath><TargetFramework>net8.0</TargetFramework></PropertyGroup><ItemGroup><!-- 定义全局引用 --><PackageReference Include="Newtonsoft.Json" Version="13.0.1" /></ItemGroup>
</Project>
Directory.Build.targets 
<Project><Target Name="CustomTarget" AfterTargets="Build"><!-- 自定义构建目标 --><Message Text="Custom target executed after build." Importance="high" /></Target>
</Project>

结合使用


在实际项目中,Directory.Build.props 和 Directory.Build.targets 通常结合使用,以便在不同的构建阶段应用不同的配置。


示例项目结构 

/MySolution/Directory.Build.props/Directory.Build.targets/ProjectA/ProjectA.csproj/ProjectB/ProjectB.csproj

Directory.Build.props 

<Project><PropertyGroup><OutputPath>..\bin\$(Configuration)\$(MSBuildProjectName)\</OutputPath><TargetFramework>net8.0</TargetFramework></PropertyGroup>
</Project>

Directory.Build.targets 

<Project><Target Name="AfterBuild" AfterTargets="Build"><Message Text="Custom task executed after build." Importance="high" /></Target>
</Project>

四、总结


•    Directory.Build.props: 在项目文件之前应用,适用于定义全局属性和项。
•    Directory.Build.targets: 在项目文件之后应用,适用于定义全局目标和任务。
        通过结合使用 Directory.Build.props 和 Directory.Build.targets,您可以在不同的构建阶段应用不同的配置,从而更好地管理和复用构建设置。 

需要了解的知识点 

MSBuild .targets 文件 - MSBuild | Microsoft Learn

浏览 MSBuild 名称值属性 - MSBuild | Microsoft Learn

使用 MSBuild 项和项类型 - MSBuild | Microsoft Learn

了解 MSBuild 任务如何执行生成操作 - MSBuild | Microsoft Learn

MSBuild 词汇表 - MSBuild | Microsoft Learn

MSBuild 教程:安装和创建项目 - MSBuild | Microsoft Learn

使用扩展性挂钩自定义生成 - MSBuild | Microsoft Learn

使用 MSBuild XML 架构控制生成 - MSBuild | Microsoft Learn

使用 MSBuild 目标创建小型生成单元 - MSBuild | Microsoft Learn

常见的 MSBuild 项目属性 - MSBuild | Microsoft Learn

MSBuild 条件 - MSBuild | Microsoft Learn

System.Windows.Controls 命名空间 | Microsoft Learn

控件库 - WPF .NET Framework | Microsoft Learn

WPF 介绍 | Microsoft Learn

XAML概述 - WPF .NET | Microsoft Learn

Windows Presentation Foundation 简介 - WPF .NET | Microsoft Learn

使用 Visual Studio 创建新应用教程 - WPF .NET | Microsoft Learn

了解更多

适用于 .NET 8 的 WPF 的新增功能 - WPF .NET | Microsoft Learn

适用于 .NET 7 的 WPF 的新增功能 - WPF .NET | Microsoft Learn

System.Windows.Controls 命名空间 | Microsoft Learn

Reference Source

Sysinternals - Sysinternals | Microsoft Learn

Windows app development documentation - Windows apps | Microsoft Learn

欢迎使用 Expression Blend | Microsoft Learn

https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/?view=netdesktop-7.0&WT.mc_id=MVP_380318

https://github.com/HeBianGu

HeBianGu的个人空间-HeBianGu个人主页-哔哩哔哩视频

http://www.lryc.cn/news/547528.html

相关文章:

  • istio入门到精通-2
  • 第5章:vuex
  • [Python入门学习记录(小甲鱼)]第5章 列表 元组 字符串
  • Docker 学习(四)——Dockerfile 创建镜像
  • Java多线程与高并发专题——为什么 Map 桶中超过 8 个才转为红黑树?
  • LeetCode hot 100—二叉树的中序遍历
  • 代码随想录算法训练营第35天 | 01背包问题二维、01背包问题一维、416. 分割等和子集
  • 与中国联通技术共建:通过obdiag分析OceanBase DDL中的报错场景
  • IDEA 接入 Deepseek
  • 斗地主小游戏
  • 如何改变怂怂懦弱的气质(2)
  • C# OnnxRuntime部署DAMO-YOLO人头检测
  • 基于GeoTools的GIS专题图自适应边界及高宽等比例生成实践
  • 各种DCC软件使用Datasmith导入UE教程
  • 尚硅谷爬虫note15
  • 云原生系列之本地k8s环境搭建
  • 关于tomcat使用中浏览器打开index.jsp后中文显示不正常是乱码,但英文正常的问题
  • mysql foreign_key_checks
  • 开发环境搭建-06.后端环境搭建-前后端联调-Nginx反向代理和负载均衡概念
  • REST API前端请求和后端接收
  • 道可云人工智能每日资讯|《奇遇三星堆》VR沉浸探索展(淮安站)开展
  • 服务器数据恢复—raid5阵列中硬盘掉线导致上层应用不可用的数据恢复案例
  • 【Pandas】pandas Series swaplevel
  • esp32s3聊天机器人(二)
  • pyside6学习专栏(九):在PySide6中使用PySide6.QtCharts绘制6种不同的图表的示例代码
  • DVI分配器2进4出,2进8出,2进16出,120HZ
  • 迷你世界脚本文字板接口:Graphics
  • 5分钟速览深度学习经典论文 —— attention is all you need
  • Cursor + IDEA 双开极速交互
  • HDFS的设计架构