.NET 6 及更高版本中的 using 语句/指令在哪里

Viv*_*Dev 14 c# c#-9.0 .net-6.0 c#-10.0

我已经开始使用 Visual Studio 2022 Preview 几天了。

我第一次震惊,没有 Startup.cs。没关系,稍微阅读一下,我知道启动已被删除。

今天又挨了一巴掌。我没有看到任何 using 语句。这里是。

我刚刚创建了一个全新的 .NET 6 Web 应用程序,当我将鼠标悬停在 WebApplication 类上时,我意识到它位于 Microsoft.AspNetCore.Builder 命名空间中。生成的 Program.cs 类如下所示。

ASP.NET core 6 Web 应用程序中的 Program.cs 类

那么using Microsoft.AspNetCore.Builder;声明在哪里呢?

有什么魔力?为什么.net 日益变得神秘?

完整的 Program.cs 文件如下。

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();
Run Code Online (Sandbox Code Playgroud)

Gur*_*ron 27

C# 10.0 引入了一项称为全局 using 指令​​( )的新功能global using <fully-qualified-namespace>;,该功能允许指定要在编译中的所有文件中隐式导入的命名空间。.NET 6 RC1在新项目模板中默认启用此功能(请参阅<ImplicitUsings>enable</ImplicitUsings>.csproj 中的属性)。

对于Microsoft.NET.Sdk.Web 下一个命名空间,应该隐式导入(加上来自 的命名空间Microsoft.NET.Sdk):

  • 系统.Net.Http.Json
  • 微软.AspNetCore.Builder
  • 微软.AspNetCore.Hosting
  • 微软.AspNetCore.Http
  • Microsoft.AspNetCore.路由
  • Microsoft.扩展.配置
  • Microsoft.Extensions.DependencyInjection
  • 微软.扩展.托管
  • Microsoft.Extensions.Logging

UPD

为了解决您在评论中提出的问题:

在撰写本文时,包含默认导入的生成文件将位于obj名为ProjectName.GlobalUsings.g.cs.

要修改默认导入,您可以将Using元素添加到.csproj文件中。基于公开的属性,它允许执行多种操作,包括添加和删除:

<ItemGroup>
    <Using Include="SomeFullyQualifiedNamespace"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

为了添加,您可以简单地在任何文件中添加修饰符using作为指令前缀global(或者为此创建一个单独的指令):

global using SomeFullyQualifiedNamespace;
Run Code Online (Sandbox Code Playgroud)

  • @VivekDev 包含默认导入的生成文件将位于名为“ProjectName.GlobalUsings.g.cs”之类的“obj”文件夹内。至于添加全局指令 - 您可以在任何文件中的 `using` 指令上使用 `global` 修饰符(或者为全局使用创建单独的指令),或者将 `&lt;Using Include="SomeFullyQualifiedNamespace" /&gt;` 添加到您的 .csproj。 (4认同)