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 类如下所示。
那么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):
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)