前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >msbuild 项目文件常用判断条件

msbuild 项目文件常用判断条件

作者头像
林德熙
发布2020-11-23 11:14:38
6830
发布2020-11-23 11:14:38
举报
文章被收录于专栏:林德熙的博客

在写项目文件的时候,需要根据不同的条件定义或执行不同的代码,有一些比较常使用的判断,本文收藏起来,方便大家找

在 msbuild 的项目文件 cspoj 或 xx.target 等文件里面,可以使用 Condition 条件写在很多标签元素作为判断

例如在 Target 上面添加条件,只有条件满足了才会执行

代码语言:javascript
复制
  <Target Name="Lindexi" AfterTargets="CoreCompile" Condition="'$(Configuration)|$(TargetFramework)'=='DEBUG|net45'">
    <Message Text="林德熙是逗比"></Message>
  </Target>

下面将告诉大家一些常使用的判断

判断在调试下编译

请看代码

代码语言:javascript
复制
Condition="'$(Configuration)'=='Debug'"

这里 Configuration 的判断是不区分大小写的,默认写的是 DebugDEBUG 是用在条件编译里面

例如这样写

代码语言:javascript
复制
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug'">
      <MainProjectPath>blog.lindexi.com</MainProjectPath>
  </PropertyGroup>

判断在发布下编译

请看代码

代码语言:javascript
复制
Condition="'$(Configuration)'!='Debug'"

也就是上面代码反过来判断不是在调试下编译

另一个判断方法请看代码,这是不推荐的判断方法

代码语言:javascript
复制
Condition="'$(Configuration)'=='Release'"

这个不推荐的写法,一般只有调试下和非调试下,用上面的写法可能有逗比写了 Release-x 于是就判断不是发布下,此时就没有做发布的优化

判断平台

判断在 .NET Framework 4.5 运行

代码语言:javascript
复制
Condition="'$(TargetFramework)'=='net45'"

对应的判断 .NET Standard 使用如下缩写 netstandard1.0

判断 .NET Core 使用如下缩写 netcoreapp1.0

多个判断

需要同时生效有两个写法,如判断只有在 .NET Framework 4.5 同时在调试下

代码语言:javascript
复制
Condition="'$(Configuration)|$(TargetFramework)'=='DEBUG|net45'"

第二个方法是使用关键字 And 连接

代码语言:javascript
复制
Condition=" '$(TargetFramework)'=='net45' And $(Configuration)=='Debug'"

两个条件的或判断使用关键字 Or 连接

代码语言:javascript
复制
Condition=" '$(TargetFramework)'=='net45' or $(Configuration)=='Debug'"

判断宏

代码语言:javascript
复制
Condition="$(DefineConstants.Contains(NET30))"

更多判断请看

Roslyn 在项目文件使用条件判断

MSBuild 如何编写带条件的属性、集合和任务 Condition? - walterlv

Target frameworks

手把手教你写 Roslyn 修改编译


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/msbuild-%E9%A1%B9%E7%9B%AE%E6%96%87%E4%BB%B6%E5%B8%B8%E7%94%A8%E5%88%A4%E6%96%AD%E6%9D%A1%E4%BB%B6.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注我的主页

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 判断在调试下编译
  • 判断在发布下编译
  • 判断平台
  • 多个判断
  • 判断宏
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档