zoukankan      html  css  js  c++  java
  • 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

    在 Roslyn 分析语法树时添加条件编译符号的支持 - walterlv

    Target frameworks

  • 相关阅读:
    ECharts
    JavaScript实现数组去重方法
    面试题1
    Vue中的8种组件通信方式
    渐进式web应用 (PWA)
    单元测试(Jest 和 Mocha)
    axios
    Vue Router
    Vuex
    hash 模式与 history 模式小记
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085730.html
Copyright © 2011-2022 走看看