Где находятся операторы 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();
...
Другие вопросы по тегам