zoukankan      html  css  js  c++  java
  • 编译の条件编译

    在 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 的语法分析中,就是这样写的

    在 csproj 或 Target 中可以采用下面代码判断条件编译符是否包含

    Condition="$(DefineConstants.Contains(NET30))"
  • 相关阅读:
    发夹模式的使用及应用场景
    springBoot项目配置日志打印管理(log4j2)
    idea创建springBoot项目
    修改jdk注册表
    文件下载——下载Excel
    stream().filter()的用法
    文件上传——Spring MVC跨服务器
    文件上传——Spring MVC方式
    文件上传——传统方式
    Spring MVC响应数据方式
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/15023348.html
Copyright © 2011-2022 走看看