2019-8-31-dotnet-新项目格式与对应框架预定义的宏
| title | author | date | CreateTime | categories | 
|---|---|---|---|---|
| dotnet 新项目格式与对应框架预定义的宏 | lindexi | 2019-08-31 16:55:58 +0800 | 2019-07-12 09:30:24 +0800 | dotnet | 
在 sdk style 的项目格式支持使用多框架开发,此时需要在代码里面通过宏判断,在编译的时候执行不同的代码。本文告诉大家在框架里面对应的预定义的条件编译符有哪些
在让一个 csproj 项目指定多个开发框架 - walterlv告诉大家如何在 sdk style 项目格式如何定义多框架开发,在使用多框架开发的时候,有时会使用到特定的平台框架提供的方法,此时就需要使用预定义的宏通过条件判断编译符号的方法,在不同的框架编译不同的代码
例如下面代码根据在不同的平台输出不同的代码
static void Main()
{
#if NET40
Console.WriteLine("Target framework: .NET Framework 4.0");
#elif NET45
Console.WriteLine("Target framework: .NET Framework 4.5");
#else
Console.WriteLine("Target framework: .NET Standard 2.0");
#endif
}
以上写法是通过条件编译符,将会在不同条件满足的时候编译出不同的 IL 代码,关于条件编译符请看官方文档#if 预处理器指令
此时需要知道在 sdk style 的项目文件里面给不同的平台添加了哪些条件编译符可以使用
以下是预定义的宏
.NET Framework
所有 .NET Framework 都定义 NETFRAMEWORK 宏,此外对应不同的版本使用不同的宏
- NET20
- NET35
- NET40
- NET45
- NET451
- NET452
- NET46
- NET461
- NET462
- NET47
- NET471
- NET472
- NET48
.NET Standard
所有 .NET Standard 都定义 NETSTANDARD 宏,此外对应不同的版本使用不同的宏
- NETSTANDARD1_0
- NETSTANDARD1_1
- NETSTANDARD1_2
- NETSTANDARD1_3
- NETSTANDARD1_4
- NETSTANDARD1_5
- NETSTANDARD1_6
- NETSTANDARD2_0
.NET Core
所有 .NET Core 都定义 NETCOREAPP 宏,此外对应不同的版本使用不同的宏
- NETCOREAPP1_0
- NETCOREAPP1_1
- NETCOREAPP2_0
- NETCOREAPP2_1
- NETCOREAPP2_2
本文说到的宏是古老的词汇,在官方用语里面叫条件编译符,也叫预处理符号(preprocessor symbols) 在 Roslyn 的语法分析中,就是这样写的
.NET/C# 项目如何优雅地设置条件编译符号? - walterlv
2019-8-31-dotnet-新项目格式与对应框架预定义的宏的更多相关文章
- dotnet 新项目格式与对应框架预定义的宏
		在 sdk style 的项目格式支持使用多框架开发,此时需要在代码里面通过宏判断,在编译的时候执行不同的代码.本文告诉大家在框架里面对应的预定义的条件编译符有哪些 在让一个 csproj 项目指定多 ... 
- 2019-11-29-VisualStudio-使用新项目格式快速打出-Nuget-包
		title author date CreateTime categories VisualStudio 使用新项目格式快速打出 Nuget 包 lindexi 2019-11-29 10:15:25 ... 
- 2018-12-17-VisualStudio-使用新项目格式快速打出-Nuget-包
		title author date CreateTime categories VisualStudio 使用新项目格式快速打出 Nuget 包 lindexi 2018-12-17 14:11:50 ... 
- 从以前的项目格式迁移到 VS2017 新项目格式
		以前的项目格式使用的是 csproj 的格式,但是 .net core 支持使用 project.json 格式的项目文件,后来还是决定不使用这个格式. VS2017 的项目格式更好读.更简单而且减少 ... 
- 2019-10-15-从以前的项目格式迁移到-VS2017-新项目格式
		title author date CreateTime categories 从以前的项目格式迁移到 VS2017 新项目格式 lindexi 2019-10-15 14:9:27 +0800 20 ... 
- dotnet core 项目脚手架这种小事嘛...
		dotnet core脚手架批处理.bat @echo 请修改批处理文件名后,如:Example.Core ,注释掉goto end,再执行脚本 pause goto end ::goto end s ... 
- 如何向Openstack社区提交一个新项目
		前几天有个朋友问我:自己有一个idea不错的项目,也把基本的框架写好了,想贡献到Openstack社区,却不知道应该怎么做.正好之前我有过类似的经历,那么来分享一下我是如何向Openstack社区提交 ... 
- What?VS2019创建新项目居然没有.NET Core3.0的模板?Bug?
		今天是个值得欢喜的日子,因为VS2019在今天正式发布了.作为微软粉,我已经用了一段时间的VS2019 RC版本了.但是,今天有很多小伙伴在我的<ASP.NET Core 3.0 上的gRPC服 ... 
- 2019年1月份A项目面试纪要
		2019年1月份A项目面试纪要 本周二(1月22号),笔者接到了A项目的电话面试.这个面试来自A项目的客户,客户的后勤模块的几个顾问组成阵容强大的面试官团队.参加这个面试,让笔者感触良多,自己虽然在S ... 
随机推荐
- springcloud系列14 bus的使用
			首先springcloud_bus原理: (1)完整流程:发送端(endpoint)构造事件event,将其publish到context上下文中(spring cloud bus有一个父上下文,bo ... 
- 封装一个C#日志类Loger
			public class Loger { /// <summary> /// 写入日志 /// </summary> /// <param name="cont ... 
- 执行sql查询,并查看语句执行花费时间
			declare @d datetimeset @d=getdate() select * from A PRINT '[语句执行花费时间(毫秒)]'+LTRIM(datediff(ms,@d,getd ... 
- LeetCode 21. 合并两个有序链表(Python)
			题目: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-&g ... 
- Halt- Linux必学的60个命令
			1.作用 halt命令的作用是关闭系统,它的使用权限是超级用户. 2.格式 halt [-n] [-w] [-d] [-f] [-i] [-p] 3.主要参数说明 -n:防止sync系统调用,它用在用 ... 
- U-BOOT 对 Nand Flash 命令的支持
			U-BOOT 对 Nand Flash 命令的支持 在 UBOOT 下对 Nand Flash 的支持主要是在命令行下实现对 nand flash 的操作.对 nand flash 实现的命令 为: ... 
- https://webpack.js.org/plugins/
			有问题还是看源码 ,看官方文档吧,整一晚上终于整明白了 
- React的PropTYpes
			React的PropTYpes和获取真实DOM 组件的属性可以接受任意值,字符串,对象,函数等等都可以.有时,我们需要一种机制,验证别人使用组件时,提供的参数是否符合要求. 组件类的PropsType ... 
- PAT甲级——A1099 Build A Binary Search Tree
			A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ... 
- Java对象的存活判断
			Java对象的回收是有依据的,普通的方式是计算法,比如被引用,对象计数器➕1,不被引用,➖1,回收的时候,发现是0则清除,但是不能解决两个对象互相被引用的情况,Java采用可达性分析,通过某个对象作为 ... 
