.NET 6 中的 using statements/directives 在哪里
Where are the using statements/directives in .NET 6
我起来 运行 Visual Studio 2022 预览几天了。
得到了第一个震撼,没有Startup.cs。没关系,稍微阅读一下,我知道 Startup 已被删除。
今天又挨了一巴掌。我看不到 using 语句。在这里。
我刚刚创建了一个全新的 .NET 6 网络应用程序,当我将鼠标悬停在 WebApplication class 上时,我意识到它位于 Microsoft.AspNetCore.Builder 命名空间中。生成的 Program.cs class 看起来像这样。
那么 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# 10.0 引入了一项名为 global using directive (global using <fully-qualified-namespace>;
) which allows to specify namespaces to be implicitly imported in all files in the compilation. .NET 6 RC1 的新功能,默认情况下在新项目模板中启用此功能(请参阅 .csproj 中的 <ImplicitUsings>enable</ImplicitUsings>
属性)。
对于 Microsoft.NET.Sdk.Web
next namespaces 应该隐式导入(加上来自 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;
看来您仍然可以在 Program.cs 的顶部添加自己的 using 指令。我知道我没有向您展示我的所有代码,但我能够构建 运行 看起来像这样的东西:
using MvcPrototype1.DataAccess;
using MvcPrototype1.DataAccess.Interfaces;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews()
.AddXmlSerializerFormatters();
builder.Services.AddScoped<IAddressRepository, AddressRepository>();
builder.Services.AddAutoMapper(typeof(Program));
var app = builder.Build();
...
在 .net 6.0 中你不需要添加一些命名空间,因为它们默认是兴奋的。
例如:-
这里我们不必使用命名空间,因为它默认存在。
那么去哪里找呢?并了解我的项目中默认安装的所有命名空间。
只需转到.csproj 项目文件,您就会发现启用
就是这样。
所以默认:-
如果您的应用程序是控制台应用程序,则默认安装此包:-
1 - 系统
2 - System.Collections.Generic
3 - System.IO
4 - System.Linq
5 - System.Net.Http
6 - System.Threading
7 - System.Threading.任务
如果您的应用程序是 Web 应用程序,则默认安装此包:-
1 - System.Net.Http.Json
2 - Microsoft.AspNetCore.Builder
3 - Microsoft.AspNetCore.Hosting
4 - Microsoft.AspNetCore.Http
5 - Microsoft.AspNetCore.Routing
6 - Microsoft.Extensions.Configuration
7 - Microsoft.Extensions.DependencyInjection
8 - Microsoft.Extensions.Hosting
9 - Microsoft.Extensions.Logging
我起来 运行 Visual Studio 2022 预览几天了。
得到了第一个震撼,没有Startup.cs。没关系,稍微阅读一下,我知道 Startup 已被删除。
今天又挨了一巴掌。我看不到 using 语句。在这里。
我刚刚创建了一个全新的 .NET 6 网络应用程序,当我将鼠标悬停在 WebApplication class 上时,我意识到它位于 Microsoft.AspNetCore.Builder 命名空间中。生成的 Program.cs class 看起来像这样。
那么 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# 10.0 引入了一项名为 global using directive (global using <fully-qualified-namespace>;
) which allows to specify namespaces to be implicitly imported in all files in the compilation. .NET 6 RC1 的新功能,默认情况下在新项目模板中启用此功能(请参阅 .csproj 中的 <ImplicitUsings>enable</ImplicitUsings>
属性)。
对于 Microsoft.NET.Sdk.Web
next namespaces 应该隐式导入(加上来自 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;
看来您仍然可以在 Program.cs 的顶部添加自己的 using 指令。我知道我没有向您展示我的所有代码,但我能够构建 运行 看起来像这样的东西:
using MvcPrototype1.DataAccess;
using MvcPrototype1.DataAccess.Interfaces;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews()
.AddXmlSerializerFormatters();
builder.Services.AddScoped<IAddressRepository, AddressRepository>();
builder.Services.AddAutoMapper(typeof(Program));
var app = builder.Build();
...
在 .net 6.0 中你不需要添加一些命名空间,因为它们默认是兴奋的。
例如:-
这里我们不必使用命名空间,因为它默认存在。
那么去哪里找呢?并了解我的项目中默认安装的所有命名空间。
只需转到.csproj 项目文件,您就会发现启用 就是这样。
所以默认:-
如果您的应用程序是控制台应用程序,则默认安装此包:-
1 - 系统
2 - System.Collections.Generic
3 - System.IO
4 - System.Linq
5 - System.Net.Http
6 - System.Threading
7 - System.Threading.任务如果您的应用程序是 Web 应用程序,则默认安装此包:-
1 - System.Net.Http.Json
2 - Microsoft.AspNetCore.Builder
3 - Microsoft.AspNetCore.Hosting
4 - Microsoft.AspNetCore.Http
5 - Microsoft.AspNetCore.Routing
6 - Microsoft.Extensions.Configuration
7 - Microsoft.Extensions.DependencyInjection
8 - Microsoft.Extensions.Hosting
9 - Microsoft.Extensions.Logging