.NET 6 中的隐式命名空间引用

.NET 6 中的隐式命名空间引用

Intro

之前写过一篇隐式命名空间引用的大概介绍,在一些小的测试项目中也有在用,一直没作为示例给大家分享,主要原因在于之前看到了一个关于隐式命名空间引用的 Github issue 提到会有一些破坏性的变更,现在 .NET 6 RC 1 版本已经发布,RC 版本的发布也就意味着新功能的开发已经基本结束,正式版发布之前会专注于各种测试和 BUG 修复。

Changes

.NET 6 Preview 7 时微软已经开始引入隐式命名空间引用的功能,可以参考之前的文章 .NET 6 即将到来的新特性 — 隐式命名空间引用

Preview 7 的时候这个功能默认是启用的,如果需要禁用需要配置 DisableImplicitNamespaceImports 来禁用,而在 .NET 6 RC 1 版本中默认是禁用的,需要显式的通过 ImplicitUsings 来启用,微软的 ASP.NET Core RC 1 的博客文章中有所提及,但是很简略,一带而过了。

在 Preview 7 中如果想要使用新加一个 namespace 引用,可以在项目文件中配置 <Import Inclde="Microsoft.Extensions.Logging"/> 来增加一个全局的命名空间,在 RC1 中将变成 <Using Include="Microsoft.Extensions.Logging"/>

类似地,如果要移除某一个命名空间的引用,之前是 <Import Remove="Microsoft.Extensions.Logging"/> 而现在是 <Using Remove="Microsoft.Extensions.Logging"/>

New Template

使用 .NET 6 RC 1 SDK 创建应用之后,项目文件是这样的

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net6.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup></Project>

相比 .NET 6 Preview 7 多了一个 ImplicitUsings 的属性,这个就是前面提到的用于启用隐式命名空间引用的配置属性,可以配置为 enable 或者 true 来启用这个特性

More usage

来看下面的这个示例:

MyFile.Exists("");WriteLine("Hello, World!");InvokeHelper.TryInvoke(() => WriteLine("ImplicitUsingSample"));

项目文件中自定义的命名空间引用

<ItemGroup><Using Include="System.Console" Static="true" /> <!-- Global using static --><Using Include="WeihanLi.Common.Helpers" /> <!-- Global using --><Using Include="System.IO.File" Alias="MyFile" /> <!-- Global using alias --><Using Remove="System" /> <!-- Remove namespace using -->
</ItemGroup>

自动生成的 Global Using 文件内容如下(自动生成文件位置在 obj/Debug/$(TargetFramework)/*.GlobalUsings.g.cs):

// <auto-generated/>
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::WeihanLi.Common.Helpers;
global using MyFile = global::System.IO.File;
global using static global::System.Console;

7cc045f9bcb9ea9c2a62c40abd8a4451.png

默认的命名空间引用和所使用的 SDK 有关系,目前确定的如下:

380fd85a37eaa8b60ed47b5db30b0e71.png

More

个人觉得这是一个好的变更,如果默认启用的话,有很多项目在升级的时候可能就会有冲突导致无法正常的编译,而默认禁用,升级的时候就能避免这种 breaking change,升级可以更加平滑,只是对于 Preview 7 升级过来的用户来说可能会有些难受,不过因为还是 preview 的功能有一些破坏性的变更也是可以接受的。

有了 Global using 之后,之前很多做不到的事情,现在就变得可能,比如使用类型别名

使用起来可能会发现有一些 BUG ==,发现 BUG 在 Github 上提 issue 就好了

如果没有体验过 .NET 6 的 Preview 版本,非常推荐尝试一下 .NET 6 RC 1,新功能已经基本确定了,进行更多的测试来努力让 .NET 6 成为一个高质量的 Release

References

  • https://github.com/dotnet/sdk/issues/19521

  • https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-rc-1/#implicit-usings

  • https://docs.microsoft.com/en-us/dotnet/core/compatibility/sdk/6.0/implicit-namespaces-rc1?WT.mc_id=DT-MVP-5004222

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode函数跳转插件_人生苦短,我们为 Cocos Creator 开发的插件和工具

在使用 Cocos Creator 开发项目的过程中&#xff0c;为了提高开发效率我们开发了很多扩展插件&#xff0c;本文介绍常用的几款&#xff0c;抛砖引玉&#xff0c;希望给大家带来帮助。腾讯开心鼠英语网页扩展&#xff1a;运行时查看场景节点树Cocos Creator 本地项目通常会在 Ch…

SQLSERVER 日志收缩

SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化&#xff0c;所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消&#xff1a;(SQL2005)BackupLog DNName with no_loggodumptransaction DNName with no_loggoUSE DNName DBCC SHRINKFILE (2)Go---------------…

压缩JS和CSS常用的工具

前些时候在发现将 JS和CSS压缩一下&#xff0c;的确有好处。在网上找了一下&#xff0c;发现下面的两款工具比较不错。 经过资源&#xff08;比如 CSS 和 JavaScrip 文件&#xff09;压缩测试了。 其中一个工具就是 YUI Compressor&#xff0c;一个来自Yahoo! Developer Networ…

php+转义实体字符,PHP针对HTML实体字符的转义函数

htmlspecialchars()转义特别的字符为HTML实体&#xff1b;& (ampersand) becomes & " (double quote) becomes " when ENT_NOQUOTES is not set. (single quote) becomes only when ENT_QUOTES is set. (greater than) becomes >htmlspeci…

解决win7“该文件没有与之关联的程序来执行该操作”

机器装好了win7系统。右击“计算机”管理的时候&#xff0c;出现“该文件没有与之关联的程序来执行该操作”能是因为删除了start menu下的某个文件,经过分析,找到了如下的解决方法:定位到注册表HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\c…

绝不能放进微波炉的10样东西,最后一个太意外

全世界只有3.14 % 的人关注了爆炸吧知识前一阵&#xff0c;网上有一段用微波炉加热葡萄的视频&#xff0c;成了新闻热点。研究员在实验中发现&#xff0c;两颗葡萄放进微波炉后&#xff0c;竟然会产生电弧。图片来源网络之前小编加热汉堡的时候&#xff0c;本来想大快朵颐一顿&…

在 .NET 6 中使用 DATEONLY 和 TIMEONLY

在 .NET 6 中使用 DATEONLY 和 TIMEONLY在 即将发布的.NET 6中&#xff0c;引入了两种期待已久的类型作为核心库的一部分。DateOnly和TimeOnly允许开发人员表示 DateTime 的日期或时间部分。这两种新类型是结构体&#xff08;值类型&#xff09;&#xff0c;可以在您的代码独立…

vue 3.0 正式版_Vuejs 3 Release:One Piece. Vuejs 3.0 正式版发布!代号:海贼王

Vuejs 3.0 在北京时间2020年9月19日凌晨&#xff0c;终于发布了 3.0 版本&#xff0c;代号&#xff1a;One Piece。此次vue3.0 为用户提供了全新的 composition-api 以及更小的包大小&#xff0c;和更好的 TypeScript 支持。Vue3.0发布链接​github.comVue 是当前非常流行的框架…

i-doIT 0.9.9-7发布 CMDB配置管理数据库

i-doIT是一个基于ITIL技术的CMDB&#xff08;配置管理数据库&#xff09;。它能够记载IT系统及其变化&#xff0c;对变化定义了应急方案&#xff0c;以及显示重要信息&#xff0c;并有助于确保一个稳定和高效的IT网络运作。由于其模块化的架构&#xff0c;它可以部署功能性的附…

Linux IPC实践(6) --System V消息队列(3)

消息队列综合案例 消息队列实现回射客户/服务器 server进程接收时, 指定msgtyp为0, 从队首不断接收消息 server进程发送时, 将mtype指定为接收到的client进程的pid client进程发送的时候, mtype指定为自己进程的pid client进程接收时, 需要将msgtyp指定为自己进程的pid, 只接收…

centos 新装mysql 进入,centos5安装 mysql 提示需要用户及密码进入?Duplicate entry 'localhost-' for key 1...

需要用户名及密码&#xff0c;可是新安装的mysql是没有密码的&#xff0c;这是为什么&#xff1f;今天帮朋友试验了一把解决了这个问题&#xff1a;导致这个错误的原因&#xff1a;因为安装系统时设置了hostname为localhost导致mysql在创建表的时候没有创建成功。因此mysql库中…

100斤的铁和100斤女生哪个重?

1 你是不是有别的猫了&#xff1f;-2 兔兔这么可爱我们沾点孜然再吃会更香3 解压的最好方式4 人不如猫系列5 这演技没sei了&#xff01;&#xff01;&#xff01;6 100斤的铁和100斤女生哪个重&#xff1f;7 如果只能选一个&#xff0c;你会选什么你点的每个赞&#xff…

JailbreakMe.com-最新浏览器模式破解iPhones,iPads和iPod Touches方法

一位***建立了该网站(JailbreakMe.com)&#xff0c;可以通过浏览器登录的形式破解几乎所有的iOS&#xff0c;这包括了iPhone,iPad,和iPod Touch&#xff0c;将解除Apple对这些设备的软件限制。 用户如果想尝试未经授权的app或者想在多个不同国家使用这些设备&#xff0c;都可以…

localStorage、sessionStorage用法总结

localStorage和sessionStorage一样都是用来存储客户端临时信息的对象。 他们均只能存储字符串类型的对象&#xff08;虽然规范中可以存储其他原生类型的对象&#xff0c;但是目前为止没有浏览器对其进行实现&#xff09;。 localStorage生命周期是永久&#xff0c;这意味着除…

谷歌开源3D舞蹈生成模型FACT,舞姿清奇!

文 | 御坂弟弟出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;谷歌开源了其基于 AIST 的 3D 舞蹈生成模型 FACT。该模型不仅可以学习音乐-运动对应关系&#xff0c;还可以生成以音乐为基础的 3D 运动序列。此前&#xff0c;谷歌层发布了大规模的多模态 3…

vue click事件_vue指令用法

vue指令指令式带有 v- 前缀的特殊特性v-text和v-html都属于指令将数据和dom做关联&#xff0c;当表达式的值改变时&#xff0c;响应式地作用在视图解决大胡子语法闪烁案例[v-cloak] {dispaly: none; }一般把v-cloak绑在Vue实例el属性绑定的节点上<!DOCTYPE html> <htm…

android 游戏 重力

引用&#xff1a;http://d-android.com/developer/thread-4539-1-1.html 在重力传感器中&#xff0c;虽然我也实现了一个圆形会根据手机反转的角度而拥有不同的速度,但是其内置加速度算法都是Android os封装好的&#xff0c;而今天我们要讲的重力系统就是去模拟这个加速度&…

冒泡排序c java c,冒泡排序,c语言冒泡排序法代码

冒泡排序&#xff0c;c语言冒泡排序法代码冒泡排序冒泡排序(Bubble Sort)&#xff0c;是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列&#xff0c;依次比较两个相邻的元素&#xff0c;如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元…

男人从小到大的梦想

1 哪个男孩子不想拥有挖掘机呢2 竟然还有这种操作&#xff1f;&#xff1f;&#xff1f;3 这难道是传说中的好冷鸭 哈哈哈4 这些。。都是我的吗&#xff1f;&#xff1f;&#xff01;&#xff01;5 流浪的小可爱被收养之后&#xff0c;终于可以睡个安稳觉了&#xff01;6 好好的…

Oralce函数

日期函数--增加一天select sysdate INTERVAL 1 DAY from dual;--增加1小时SELECT sysdate INTERVAL 1 HOUR from dual;--增加1分钟SELECT sysdate INTERVAL 1 MINUTE from dual;--增加1秒钟SELECT sysdate INTERVAL 1 SECOND from dual; 转载于:https://www.cnblogs.com/ji…