首页 > 编程语言 >转:在.NET FX 4.8项目中使用C# 8/9/10的新语法

转:在.NET FX 4.8项目中使用C# 8/9/10的新语法

时间:2023-11-27 16:23:54浏览次数:38  
标签:10 FX 4.8 语法 C# 版本 NET

在.NET FX 4.8项目中使用C# 8/9/10的新语法

吴冬wdhust 吴冬wdhust Innovative BIM techniques  

受到某些特殊原因的限制,有时候.NET项目被锁死在.NET Framework 4.8,而无法升级到.NET 5等更高版本,导致代码中能够使用的C#语法最高只能支持到C# 7.3,而无法使用C# 8及更高版本的语法。

C# 8及更高版本引入了不少很有实用价值的新语法,能否在.NET版本被限制在4.8的情况下使用这些新语法特性呢?答案是:可以部分实现。

C# 8及更高版本的C#所引入的新语法,大体上可以分为两大类:需要.NET运行时支持的与不需要.NET运行时支持的。

对于前一种情况,在.NET版本没有升级的情况下,很显然是无法在老版本项目中使用的;但对于第二种情况,则是有可能实现的。

实现方法:在solution文件(*.sln)所在目录下,新建一个名为“Directory.Build.props”文件,文件内容为

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
</Project>

这样就可以在.NET Framework 4.8项目中使用C# 8/9/10所引入的新语法了(但仅限于不需要新运行时支持的语法特性)。比如,可以使用:

  • using declaration
  • Static local functions
  • switch match pattern expression
  • Target-typed new expressions
  • lambda expression type inference
  • File Scoped Namespaces

其他一些语法也能够支持,但可能需要额外补充一些.NET 4.8缺失的类型,比如:

  • Init only setters
  • Index and Range

github上有个PolySharp项目,通过Source Generator自动补充新版本语法所需要的额外类型,我试了下,对于一般的C#项目是可用的,但对于包含WPF XAML代码文件的项目,编译时会报错,原因未知。此时,只能自行手动补充确实的类型的定义。

标签:10,FX,4.8,语法,C#,版本,NET
From: https://www.cnblogs.com/81/p/17859621.html

相关文章

  • Backing up and restoring BIG-IP configuration files (10.x)
    TopicThisarticleappliestoBIG-IP10.x.Forinformationaboutotherversions,refertothefollowingarticles:K13132:BackingupandrestoringBIG-IPconfigurationfiles(11.x-13.x)K3499:BackingupandrestoringBIG-IPconfigurationfiles(9.x)Thi......
  • 10个PPT制作实用小技巧
    当制作PPT时,您可以使用一些实用的小技巧来提升演示效果和工作效率。以下是10个PPT制作实用小技巧的详细描述:第一、选择合适的模板选择合适的PPT模板非常重要,因为模板可以决定整个演示的风格和视觉效果。您可以根据演示的目的和受众群体选择不同风格的模板,比如商务风格、教育风......
  • TS4210D系列多功能激光调阻机
    ·设备可实现对集成电路各项参数的精密修调,如:电阻、电压、电流、周期、频率等;·自主研发的多通道测量系统(最多96通道),精度高、速度快、稳定可靠;·适用于各种厚膜电路;·可匹配不同规格的探针板连接器,兼容各型号标准探针板;另可定制飞针式测量结构.以满足特殊的修调需求;·采用高......
  • Windows10 下 CUDA 新旧多版本共存
    前言    为了运行一个Tensorflow1.6.0的项目,CPU跑了三个多小时才完成一个epoch,还得用GPU。但这个版本的TF只能在10以下的CUDA平台,但是以前的Pytorch也要继续啊。所以需要在本地Windows下安装多个版本CUDA,其实有两种方式让CUDA共存。一种是英伟达的工具......
  • MQTT断开连接((32109) - java.io.EOFException)
    现象:首先代码没问题,一台设备测试正常,当多台设备同时使用时,会出现连接成功后,立刻断开连接。client=newMqttClient(①,②,③)①:主机名②:客户端ID,客户的唯一标识③:设置clientid保存形式,默认以内存保存例如:newMqttClient(tcp://139.196.34.00,34:20:03:0b:b9:00,newMemoryPersisten......
  • DB107S-ASEMI迷你贴片整流桥DB107S
    编辑:llDB107S-ASEMI迷你贴片整流桥DB107S型号:DB107S品牌:ASEMI封装:DBS-4特性:插件、整流圆桥正向电流:1A反向耐压:1000V恢复时间:>2000ns引脚数量:4芯片个数:4芯片尺寸:60MIL浪涌电流:50A漏电流:10ua工作温度:-55℃~150℃包装方式:500/盘;5000/箱备受欢迎的DB107S-ASEMI整流桥......
  • FlashDuty Changelog 2023-10-30 | 告警路由与 Slack 应用
    FlashDuty:一站式告警响应平台,前往此地址免费体验!告警路由什么是告警路由?FlashDuty已经与Zabbix、Prometheus等监控系统实现无缝集成,通过一个简单的webhook就可以把告警系统产生的所有告警事件推送到FlashDuty来管理。每个告警事件的重要性、紧急程度和所属团队可能不同,我们期望可以......
  • 10道不得不会的Java容器面试题
    以下都是Java容器常见面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。来看看你会做几道1.请说一下Java容器集合的分类,各自的继承结构2.Collection和Collections有什么......
  • 10道不得不会的SpringBoot面试题
    以下是SpringBoot面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。来看看你会做几道1.为什么要用springboot?2.springboot有哪些优点?3.springboot核心配置文件是什......
  • Week 10
    week10高级篇性能优化减少锁粒度在多线程编程中,如果多个线程需要访问共享资源,通常需要使用锁来保证资源的安全访问。但是,如果锁的粒度太粗,会导致线程之间的竞争过于激烈,从而影响程序的性能。以下是使用减少锁粒度进行性能优化的主要方式:细粒度锁:将共享资源的访问权限限制......