Me puse en marcha con Visual Studio 2022 Preview durante un par de días.
Tengo el primer susto, no hay Startup.cs. Está bien, un poco de lectura, sé que se eliminó el inicio.
Hoy recibió otra bofetada. No veo declaraciones de uso. Aquí lo tienes.
Acabo de crear una nueva aplicación web .NET 6 y cuando paso el mouse sobre la clase WebApplication, me doy cuenta de que permanece en el espacio de nombres Microsoft.AspNetCore.Builder. Y la clase Program.cs generada se ve así.
Entonces, ¿dónde está el using Microsoft.AspNetCore.Builder;
¿declaración?
¿Cuál es la magia? ¿Por qué .net se vuelve místico cada día?
El archivo Program.cs completo es el siguiente.
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 presenta una nueva función llamada directiva de uso global ( global using <fully-qualified-namespace>;
) que permite especificar espacios de nombres para que se importen implícitamente en todos los archivos de la compilación. .NET 6 RC1 tiene esta función habilitada de forma predeterminada en las nuevas plantillas de proyecto (consulte la propiedad <ImplicitUsings>enable</ImplicitUsings>
en su .csproj).
Para Microsoft.NET.Sdk.Web
, los siguientes espacios de nombres deben importarse implícitamente (más los de Microsoft.NET.Sdk
):
UPD
Para responder a sus preguntas en el comentario:
Al momento de escribir, el archivo generado que contiene las importaciones predeterminadas estará dentro de la carpeta obj
con un nombre similar a ProjectName.GlobalUsings.g.cs
.
Para modificar las importaciones predeterminadas, puede agregar el elemento Using
a su archivo .csproj
. Según los atributos expuestos, permite varias acciones, incluidas la adición y eliminación:
<ItemGroup> <Using Include="SomeFullyQualifiedNamespace"/> </ItemGroup>
Solo para agregar, simplemente puede prefijar su directiva de using
con un modificador global
en cualquier archivo (o crear uno separado solo para esto):
global using SomeFullyQualifiedNamespace;
Parece que aún puede agregar sus propias directivas de uso en la parte superior de Program.cs. Soy consciente de que no les estoy mostrando todo mi código, pero pude compilar y ejecutar algo que se parece a esto:
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(); ...
En .net 6.0, no necesita agregar algunos espacios de nombres, porque están activados de manera predeterminada.
Aquí no tenemos que usar el espacio de nombres porque existe de forma predeterminada.
Entonces, ¿dónde encontrarlo? y conocer todos los espacios de nombres que se instalaron por defecto en mi proyecto.
Simplemente vaya a los archivos de proyecto .csproj y encontrará habilitar y eso es todo.
Entonces, por defecto: -
si sus aplicaciones son una aplicación de consola, estos paquetes se instalan de forma predeterminada:
1 - Sistema
2 - Sistema.Colecciones.Genérico
3 - Sistema.IO
4 - Sistema.Linq
5 - Sistema.Neto.Http
6 - Sistema.Roscado
7 - System.Threading.Tasks
si sus aplicaciones son una aplicación web, estos paquetes se instalan de forma predeterminada:
1 - Sistema.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.Extensiones.DependencyInjection
8 - Microsoft.Extensiones.Alojamiento
9 - Microsoft.Extensiones.Registro