返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >.NET 6 中的隐式命名空间引用
  • 659
分享到

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

2024-04-02 19:04:59 659人浏览 八月长安
摘要

目录1、历史变化2、新版本介绍3、More usage4、More前言: 之前写过一篇隐式命名空间引用的大概介绍,在一些小的测试项目中也有在用,一直没作为示例给大家分享,主要原因在

前言:

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

1、历史变化

.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"/>

2、新版本介绍

使用 .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 来启用这个特性

3、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;

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

4、More

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

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

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

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

到此这篇关于.NET 6 中的隐式命名空间引用的文章就介绍到这了,更多相关.NET 6 中的隐式命名空间引用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: .NET 6 中的隐式命名空间引用

本文链接: https://lsjlt.com/news/135986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • .NET 6 中的隐式命名空间引用
    目录1、历史变化2、新版本介绍3、More usage4、More前言: 之前写过一篇隐式命名空间引用的大概介绍,在一些小的测试项目中也有在用,一直没作为示例给大家分享,主要原因在...
    99+
    2024-04-02
  • .NET 6 即将到来的新特性隐式命名空间引用
    目录1、Sample2、How it works3、More前言: 今天看到一个更新,可以不需要写 using了,目前还没有正式发布,应该要到 .NET 6 Preview 7 才...
    99+
    2024-04-02
  • .NET6中隐式命名空间引用如何使用
    这篇文章主要为大家展示了“.NET6中隐式命名空间引用如何使用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“.NET6中隐式命名空间引用如何使用”这篇文章吧。如果我们要在新加一个命名空间的引用,...
    99+
    2023-06-25
  • .NET6新特性之隐式命名空间引用
    早在 .NET 6 Preview 7版本中微软就已经引入隐式命名空间引用。在.NET Preview 7这个版本中这个功能是默认开启的,如果需要禁用它的化就需要配置Disable...
    99+
    2024-04-02
  • .net core中的System.Buffers命名空间
    最近研究了一下.net core 2.1的基础类库,发现它引入了一个System.Buffers名字空间,里面提供了一系列比较实用的对象,便简单的管中窥豹浏览一下。 ArrayPoo...
    99+
    2024-04-02
  • MyBatis Mapper.xml中的命名空间及命名方式
    目录Mapper.xml相关使用命名空间(Namespaces)命名解析MyBatis中mapper.xml命名空间错误项目场景问题描述原因分析解决方案Mapper.xml相关使用 ...
    99+
    2024-04-02
  • php中命名空间如何引入
    这篇文章主要介绍php中命名空间如何引入,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写...
    99+
    2023-06-14
  • 【C++】命名空间 namespace 与 标准流 iostream ( 命名空间概念简介 | 命名空间定义 | 命名空间使用 | iostream 中的命名空间分析 )
    文章目录 一、命名空间 namespace1、命名空间基本概念2、名称概念4、C 语言的命名空间3、命名空间避免标识符冲突 二、命名空间定义1、命名空间基本概念2、命名空间定义语法3、代码示例 - 命名空间定义使用 三、命名...
    99+
    2023-08-20
    c++ namespace iostream 命名空间 标准流 原力计划
  • IDEA中如何引入spring的命名空间
    目录IDEA引入spring的命名空间idea项目添加spring配置步骤问题与解决总结IDEA引入spring的命名空间 我们在写spring的配置文件的时候,有的时候可能会用到 ...
    99+
    2023-05-15
    IDEA引入spring spring命名空间 IDEA spring命名空间
  • IDEA中怎么引入spring的命名空间
    这篇文章主要介绍“IDEA中怎么引入spring的命名空间”,在日常操作中,相信很多人在IDEA中怎么引入spring的命名空间问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”IDEA中怎么引入spring的命...
    99+
    2023-07-06
  • 怎么在命名空间中引入另一空间的元素
    这期内容当中小编将会给大家带来有关怎么在命名空间中引入另一空间的元素,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。空间引入方式:使用use关键字<phpnamespace n1;class...
    99+
    2023-06-08
  • Linux中的命名空间
    本篇内容介绍了“Linux中的命名空间 ”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景从Linux 2.6.24版的内核开始,Linux...
    99+
    2023-06-13
  • php中怎么声明和引入命名空间
    这篇文章给大家介绍php中怎么声明和引入命名空间,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、命名空间1.1 介绍在一个大的项目中,可能会遇到同名的类、函数、常量,为了区分这些元素,我们可以将这些元素分别存放到不同...
    99+
    2023-06-20
  • vuex命名空间的使用
    目录Vuex由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。 因此,Vuex 允许我们将 store 分割成模...
    99+
    2024-04-02
  • C++空间命名的使用
    目录前言一、命名空间二、命名空间定义1.嵌套性2.和并性3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。 ps:一个工程中的test.h和上面te...
    99+
    2023-01-28
    C++ 空间命名
  • php中命名空间的调用顺序
    小编给大家分享一下php中命名空间的调用顺序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先让我们看一个小例子。<phpnamespace A;...
    99+
    2023-06-20
  • C++中的命名空间怎么使用
    在C++中,命名空间(namespace)用于避免命名冲突,将全局作用域划分为不同的区域,使得不同的代码块可以使用相同的名称而不会发...
    99+
    2024-03-11
    C++
  • 详解PHP中的命名空间
    命名空间其实早在PHP5.3就已经出现了。不过大部分同学可能在各种框架的使用中才会接触到命名空间的内容,当然,现代化的开发也都离不开这些能够快速产出的框架。这次我们不从框架的角度,仅...
    99+
    2024-04-02
  • Vuex命名空间namespaced的使用
    在项目中,如果需要用到Vuex,可以将 store 分割成多个模块(module),每个模块拥有自己的 state、mutation、action、getter,这样你的模块具有更高...
    99+
    2023-03-06
    Vuex 命名空间 namespaced Vuex 命名空间
  • C#中的命名空间有什么作用
    C#中的命名空间主要有以下几个作用: 避免命名冲突:命名空间可以帮助组织和管理代码,避免不同模块或库中相同名称的类、接口、变量等出...
    99+
    2024-04-09
    C#
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作