首页 > 解决方案 > .NET 6 中的 using 语句/指令在哪里

问题描述

我已经使用 Visual Studio 2022 Preview 启动并运行了几天。

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

今天又挨了一巴掌。我看不到 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();

标签: c#c#-9.0.net-6.0c#-10.0

解决方案


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

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

  • System.Net.Http.Json
  • Microsoft.AspNetCore.Builder
  • Microsoft.AspNetCore.Hosting
  • Microsoft.AspNetCore.Http
  • Microsoft.AspNetCore.Routing
  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.DependencyInjection
  • Microsoft.Extensions.Hosting
  • Microsoft.Extensions.Logging

UPD

要在评论中解决您的问题:

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

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

<ItemGroup>
    <Using Include="SomeFullyQualifiedNamespace"/>
</ItemGroup>

对于只是添加,您可以简单地在任何文件中为您的using指令添加global修饰符(或为此创建一个单独的):

global using SomeFullyQualifiedNamespace;

推荐阅读