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 ...
随机推荐
- SGLTE/SVLTE、CSFB、SRVCC概念
SGLTE:Simultaneous GSM and LTE,手机可以同时驻留在GSM和LTE网络中,打电话通过GSM网络进行,数据业务通过LTE网络进行. SVLTE:Simultaneous V ...
- SQL语句的四种连接
SQL的四种连接查询 内连接 inner join 或者 join 外连接 左连接 left join 或者 left outer join 右连接 right join 或者 right ou ...
- thinkone无法重新创建数据库的问题 newsy
错误描述: 无法加载数据库驱动: Think\Db\Driver\ 前后装了OneThink1.0和OneThink1.1都没成功,都是卡在了安装页面的三个step,读者们你们也遇到一样的情况吗 ...
- opencv-识别手写数字
首先拆分图片得到数据 #include "stdafx.h" #include <iostream> #include "opencv2/opencv.hpp ...
- pure-Python PDF library
# -*- coding: utf-8 -*- # # vim: sw=4:expandtab:foldmethod=marker # # Copyright (c) 2006, Mathieu Fe ...
- leetcode--81-搜索旋转排序数组②
题目描述: 33题 方法一: class Solution: def search(self, nums: List[int], target: int) -> bool: l, r = 0, ...
- JS 计算时间范围,最近一周、一个月
//最近一周 getDay(-7) 返回的是距离当前日期的一周后的时间//一月 getDay(-30)//一年 getDay(-365) function getDay(day){ var today ...
- malloc在函数内分配内存问题
malloc函数用法可参考:C语言中 malloc函数用法 及 malloc函数 代码: void fun(char * p) { p=(); } void main() { char *p; fun ...
- 安装vmware和装虚拟机
今日任务 .Linux发行版的选择 .vmware创建一个虚拟机(centos) .安装配置centos7 .xshell配置连接虚拟机(centos) 选择性 pc可以选择 -纯系统 Linux/w ...
- NopCommerce3.9安装
除非另外说明,否则本分类所有博文的NopCommerce都基于3.9版本. 用vs2015打开,其他版本的vs没试过. 首先打开解决方案,然后设置Nop.web为启动项目. 启动项目,项目即可自动编译 ...