Где находятся операторы using в .net core 6
Я начал работать с Visual Studio 2022 Preview уже пару дней.
Получил первый шок, Startup.cs нет. Ничего страшного, немного почитал, я знаю, что автозагрузка удалена.
Сегодня получил еще одну пощечину. Я не вижу никаких заявлений об использовании. Вот.
Я только что создал новое веб-приложение .net 6 и, наведя курсор на класс 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();
3 ответа
В 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
В .net 6.0 вам не нужно добавлять некоторые пространства имен, потому что они возбуждаются по умолчанию.
Здесь нам не нужно использовать пространство имен, потому что оно существует по умолчанию.
Так где его найти? и знать все пространства имен, которые были установлены по умолчанию в моем проекте.
Просто зайдите в файлы проекта .csproj, и вы найдете enable и все.
Итак, по умолчанию: -
если ваши приложения являются консольными, эти пакеты устанавливаются по умолчанию: -
1 - System
2 - System.Collections.Generic
3 - System.IO
4 - System.Linq
5 - System.Net.Http
6 - System.Threading
7 - System.Threading.Tasksесли ваши приложения являются веб-приложением, эти пакеты устанавливаются по умолчанию: -
1 - System.Net.Http.Json
2 - Microsoft.AspNetCore.Builder
3 - Microsoft.AspNetCore.Hosting
4 - Microsoft.AspNetCore.Http
5 - Microsoft.AspNetCore. Маршрутизация
6 — Microsoft.Extensions.Configuration
7 — Microsoft.Extensions.DependencyInjection
8 — Microsoft.Extensions.Hosting
9 — Microsoft.Extensions.Logging
Похоже, вы все еще можете добавить свои собственные директивы using в верхней части Program.cs. Я знаю, что не показываю вам весь свой код, но мне удалось собрать и запустить что-то вроде этого:
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();
...