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

    我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

    如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

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

  • 相关阅读:
    vue基础04计算属性
    vue基础01条件渲染
    vue基础14vuex
    其他03动态拼接地址,使用本地的图片不显示
    其他05vue中ref
    HTML基础02CSS
    其他12es6...运算符
    其他11依赖注入
    其他07插槽
    其他06js类型判断
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086765.html
Copyright © 2011-2022 走看看