Compartir a través de


Novedades de la .NET.NET Aspire versión 9.1

📢 .NET Aspire 9.1 es la próxima versión secundaria de .NET Aspire; admite ambas:

  • .NET 8.0 de soporte técnico a largo plazo (LTS) o
  • .NET Soporte de Términos Estándar (STS) 9.0.

Nota:

¡Puede usar .NET Aspire 9.1 con .NET 8 o .NET 9!

Como siempre, nos centramos en características altamente solicitadas y puntos débiles de la comunidad. Nuestro tema para la versión 9.1 fue "pulido, pulido, pulido", por lo que se pueden ver mejoras de calidad en toda la plataforma. Algunos puntos destacados de esta versión son las relaciones de recursos en el tablero, soporte para trabajar en GitHub Codespaces y publicación de recursos como Dockerfile.

Si tiene comentarios, preguntas o quiere contribuir a .NET.NET Aspire, colabore con nosotros o únase a nosotros en GitHub Discord para chatear con los miembros del equipo.

Tanto si es nuevo en .NET Aspire como si ha estado con nosotros desde la versión preliminar, es importante tener en cuenta que las versiones de .NET Aspire se publican fuera de la secuencia habitual de las de .NET. Aunque las versiones principales de .NET Aspire se alinean con .NET las versiones principales, las versiones secundarias se publican con más frecuencia. Para obtener más información sobre .NET y .NET Aspire la compatibilidad con versiones, consulte:

⬆️ Actualización a .NET.NET Aspire la versión 9.1

La migración entre versiones secundarias de .NET.NET Aspire es sencilla:

  1. En el archivo de proyecto de host de la aplicación (es decir, MyApp.AppHost.csproj), actualiza el paquete NuGet 📦Aspire.AppHost.Sdk a la versión 9.1.0:

    <Project Sdk="Microsoft.NET.Sdk">
    
        <Sdk Name="Aspire.AppHost.Sdk" Version="9.1.0" />
    
        <!-- Omitted for brevity -->
    
    </Project>
    

    Para más información, consulte .NET.NET Aspire SDK.

  2. Compruebe si hay actualizaciones de paquetes NuGet, ya sea mediante el Administrador de paquetes NuGet en Visual Studio o el comando Actualizar paquete NuGet en VS Code.

  3. Actualice a las plantillas más recientes .NET.NET Aspire mediante la ejecución de la siguiente .NET línea de comandos:

    dotnet new update
    

    Nota:

    El dotnet new update comando actualiza todas las plantillas a la versión más reciente.

Si el archivo de proyecto host de la aplicación no tiene la Aspire.AppHost.Sdk referencia, es posible que siga usando .NET.NET Aspire 8. Para actualizar a la versión 9.0, puede seguir la documentación de la última versión.

🌱 Experiencia de incorporación mejorada

La experiencia de incorporación para .NET.NET Aspire se ha mejorado con la versión 9.1. El equipo trabajó en la creación de una GitHub plantilla de Codespaces que instala todas las dependencias necesarias para .NET Aspire, lo que facilita la introducción, incluidas las plantillas y el certificado de ASP.NET Core desarrollador. Además, hay soporte para contenedores de desarrollo. Para obtener más información, consulte:

🔧 Experiencia de usuario del panel y personalización

Con cada versión de .NET.NET Aspire, el panel se vuelve más eficaz y personalizable, esta versión no es ninguna excepción. Las siguientes características se agregaron al panel en .NET.NET Aspire la versión 9.1:

🧩 Relaciones de recursos

El panel ahora admite relaciones de recursos "padre" e "hijo". Por ejemplo, al crear una Postgres instancia con varias bases de datos, estas bases de datos se anidan bajo la misma instancia en la página Recurso.

Captura de pantalla del .NET Aspire panel que muestra el Postgres recurso con una base de datos anidada debajo.

Para obtener más información, consulte Explorar el .NET.NET Aspire panel de control.

🔤 Sobrescrituras de localización

El panel tiene como valor predeterminado el idioma establecido en el explorador. Esta versión presenta la capacidad de invalidar esta configuración y cambiar el idioma del panel independientemente del idioma del explorador. Tenga en cuenta la siguiente captura de pantalla que muestra la adición de la lista desplegable de idioma en el panel:

Captura de pantalla del .NET.NET Aspire panel que muestra el nuevo menú flotante para cambiar el idioma.

🗑️ Borrar registros y telemetría desde el panel

Se agregaron nuevos botones a las páginas Registros de consola, Registros estructurados, Seguimientos y Métricas para borrar los datos. También hay un botón "Quitar todo" en el menú emergente de configuración para quitar todo con una acción.

Ahora usa esta característica para restablecer el panel a una pizarra en blanco, probar la aplicación, ver solo los registros y la telemetría pertinentes y repetir.

Captura de pantalla del .NET.NET Aspire panel que muestra el botón Quitar en la página de registros estructurados.

Nos 💜 encanta la comunidad de desarrolladores y nos alimentamos de sus comentarios, colaboración y contribuciones. Esta característica es una contribución de la comunidad de @Daluur. Únase a nosotros para celebrar su contribución mediante la característica!

Sugerencia

Si está interesado en contribuir a .NET.NET Aspire, busque problemas etiquetados con buen primer problema y siga la guía de colaborador.

🔢 Nuevo filtrado

Ahora puede filtrar lo que ve en la página Recurso por tipo de recurso, estado y estado de mantenimiento. Tenga en cuenta la siguiente captura de pantalla, que muestra la adición de las opciones de filtro en el panel:

Captura de pantalla del .NET.NET Aspire panel que muestra las nuevas opciones de filtro.

📝 Más detalles de los recursos

Al seleccionar un recurso en el panel, el panel de detalles muestra ahora nuevos puntos de datos, como Referencias,Referencias posteriores y Volúmenes con sus tipos de montaje. Esta mejora proporciona una vista más clara y completa de los recursos, lo que mejora la experiencia general del usuario al hacer que los detalles pertinentes sean más accesibles.

Captura de pantalla del .NET.NET Aspire tablero de control con referencias y referencias inversas que se muestran.

Para obtener más información, consulte panel.NET.NET Aspire: página Recursos.

🛡️ Compatibilidad de CORS con dominios locales personalizados

Ahora puede establecer la ASPIRE_DASHBOARD_CORS_ALLOWED_ORIGINS variable de entorno para permitir que el panel reciba telemetría de otras aplicaciones del explorador, como si tiene recursos que se ejecutan en dominios personalizados localhost .

Para obtener más información, consulte .NET.NET Aspire Host de la aplicación: Configuración del panel.

🪵 Flexibilidad con los registros de consola

La página de registro de la consola tiene dos nuevas opciones. Ahora puede descargar los registros para poder verlos en sus propias herramientas de diagnóstico. Además, puede activar o desactivar las marcas de tiempo para reducir el desorden visual cuando sea necesario.

Captura de pantalla de la página de registros de la consola con el botón de descarga, el botón para desactivar las marcas de tiempo y los registros que no muestran marcas de tiempo.

Para obtener más información, consulte .NET.NET Aspire tablero de mandos: página de registros de consola.

🎨 Varias mejoras de la experiencia de usuario

Varias características nuevas de .NET.NET Aspire la versión 9.1 mejoran y simplifican las siguientes tareas populares:

  • ▶️ Los comandos de recursos, como los botones Iniciar y Detener , ahora están disponibles en la página Registros de consola.
  • 🔍 Selección única que se va a abrir en el visualizador de texto.
  • 🔗 Las URLs dentro de los registros son automáticamente clicables, con las comas eliminadas de los endpoints.

Además, la 🖱posición de desplazamiento ️ se restablece al cambiar entre distintos recursos, lo que ayuda a restablecer visualmente la vista del recurso actual.

Para obtener más información sobre las últimas mejoras del panel, consulte James Newton-King en Bluesky, donde ha estado compartiendo nuevas características diariamente.

⚙️ Mejoras de desarrollo local

En .NET.NET Aspire la versión 9.1, se destacaron varias mejoras para simplificar la experiencia de desarrollo local. Estas mejoras están diseñadas para proporcionar una mayor flexibilidad, una mejor integración con Dockery una administración de recursos más eficaz. Estas son algunas de las actualizaciones clave:

▶️ Inicio de recursos a petición

Ahora puede indicar a los recursos que no empiecen con el resto de la aplicación mediante WithExplicitStart en el recurso del host de la aplicación. A continuación, puede iniciarlo siempre que esté listo desde dentro del panel.

Para obtener más información, consulte Configuración del inicio explícito de recursos.

🐳 Mejor Docker integración

La PublishAsDockerfile() característica se introdujo para todos los proyectos y recursos ejecutables. Esta mejora permite una personalización completa del contenedor Docker y Dockerfile que se utilizan durante el proceso de publicación.

Aunque esta API estaba disponible en versiones anteriores, no se podía usar con tipos ProjectResource o ExecutableResource.

🧹 Limpieza de Docker redes

En la versión 9.1, abordamos un problema persistente en el que las redes creadas por .NET Aspire seguían activas incluso después de detener la aplicación. Este error, seguido en .NET AspireGitHub incidencia n.º 6504, se ha resuelto. Ahora, Docker las redes se limpian correctamente, lo que garantiza un entorno de desarrollo más eficaz y ordenado.

✅ Se han corregido los problemas de la dirección de socket

Varios usuarios han notificado problemas (#6693, #6704, #7095) con el reinicio del host de la .NET.NET Aspire aplicación, incluidos los errores de conciliación y los mensajes de "dirección ya en uso".

Esta versión presenta un enfoque más sólido para administrar direcciones de socket, lo que garantiza que solo se use una instancia de cada dirección a la vez. Además, se realizaron mejoras para garantizar los reinicios adecuados del proyecto y la liberación de recursos, evitando problemas de bloqueo. Estos cambios mejoran la estabilidad y confiabilidad del host de la aplicación, especialmente durante el desarrollo y las pruebas.

🔌 Actualizaciones de integración

.NET .NET Aspire continúa excelando a través de sus integraciones con varias plataformas. Esta versión incluye numerosas actualizaciones de las integraciones existentes y detalles sobre las migraciones de propiedad, lo que mejora la funcionalidad general y la experiencia del usuario.

☁️ Azure Actualizaciones

Esta versión también se centra en mejorar varias Azure integraciones:

🆕 Nuevos emuladores

Nos complace traer nuevos emuladores para facilitar el desarrollo local. Las siguientes integraciones tienen nuevos emuladores en esta versión:

var serviceBus = builder.AddAzureServiceBus("servicebus")
                        .RunAsEmulator();

#pragma warning disable ASPIRECOSMOSDB001
var cosmosDb = builder.AddAzureCosmosDB("cosmosdb")
                      .RunAsPreviewEmulator();

var signalr = builder.AddAzureSignalR("signalr", AzureSignalRServiceMode.Serverless)
                     .RunAsEmulator();

Estos nuevos emuladores funcionan en paralelo con los emuladores existentes para:

🌌 Cosmos DB

Junto con la compatibilidad con el nuevo emulador, Cosmos DB se agregaron las siguientes características.

🔒 Compatibilidad con la autenticación de Entra ID de forma predeterminada

Anteriormente, la Cosmos DB integración usaba claves de acceso y un secreto de Key Vault para conectarse al servicio. .NET .NET Aspire 9.1 agregó compatibilidad para usar la autenticación más segura mediante identidades administradas de forma predeterminada. Si necesita seguir usando la autenticación de clave de acceso, puede volver al comportamiento anterior llamando a WithAccessKeyAuthentication.

💽 Compatibilidad con el modelado de bases de datos y contenedores en el host de la aplicación

Puede definir una Cosmos DB base de datos y contenedores en el host de la aplicación y estos recursos están disponibles al ejecutar la aplicación tanto en el emulador como en Azure. Esto le permite definir estos recursos por adelantado y ya no es necesario crearlos a partir de la aplicación, lo que podría no tener permiso para crearlos.

Para obtener un ejemplo de uso de api para agregar bases de datos y contenedores, consulte los siguientes artículos relacionados:

⚡ Compatibilidad con Cosmos DBdesencadenadores basados en Azure Funciones

AzureCosmosDBResource fue modificado para admitir el consumo de recursos en aplicaciones de Azure Functions que usan el desencadenador Cosmos DB. Un Cosmos DB recurso se puede inicializar y agregar como referencia a un Azure recurso de Functions con el código siguiente:

var cosmosDb = builder.AddAzureCosmosDB("cosmosdb")
                      .RunAsEmulator();
var database = cosmosDb.AddCosmosDatabase("mydatabase");
database.AddContainer("mycontainer", "/id");

var funcApp = builder.AddAzureFunctionsProject<Projects.AzureFunctionsEndToEnd_Functions>("funcapp")
    .WithReference(cosmosDb)
    .WaitFor(cosmosDb);

El recurso se puede usar en el desencadenador de Azure Funciones de la siguiente manera:

public class MyCosmosDbTrigger(ILogger<MyCosmosDbTrigger> logger)
{
    [Function(nameof(MyCosmosDbTrigger))]
    public void Run([CosmosDBTrigger(
        databaseName: "mydatabase",
        containerName: "mycontainer",
        CreateLeaseContainerIfNotExists = true,
        Connection = "cosmosdb")] IReadOnlyList<Document> input)
    {
        logger.LogInformation(
            "C# cosmosdb trigger function processed: {Count} messages",
            input.Count);
    }
}

Para obtener más información sobre el uso de Azure Funciones con .NET Aspire, consulte .NET AspireAzure Integración de Funciones (Vista previa).

🚚 Service Bus y Event Hubs

De forma similar a Cosmos DB, las integraciones de Service Bus y Event Hubs ahora permiten definir Azure Service Bus colas, temas, suscripciones e instancias y Azure Event Hubs grupos de consumidores directamente en el código de host de la aplicación. Esta mejora simplifica la lógica de la aplicación al habilitar la creación y administración de estos recursos fuera de la propia aplicación.

Para obtener más información, consulte los siguientes artículos actualizados:

♻️ Trabajar con recursos existentes

Se reciben comentarios consistentes sobre cómo facilitar la conexión a los recursos existentes en Azure dentro de .NET Aspire. Con la versión 9.1, ahora puede conectarse fácilmente a un recurso existente Azure directamente por string su nombre o con los parámetros del modelo de aplicación que se pueden cambiar en el momento de la implementación. Por ejemplo, para conectarse a una Azure Service Bus cuenta, podemos usar el código siguiente:

var existingServiceBusName = builder.AddParameter("serviceBusName");
var existingServiceBusResourceGroup = builder.AddParameter("serviceBusResourceGroup");

var serviceBus = builder.AddAzureServiceBus("messaging")
                        .AsExisting(existingServiceBusName, existingServiceBusResourceGroup);

El código anterior lee el nombre y el grupo de recursos de los parámetros y se conecta al recurso existente cuando se ejecuta o se implementa la aplicación. Para obtener más información, consulte Uso de recursos existentesAzure.

🌍 Azure Container Apps

Se ha agregado compatibilidad experimental para configurar dominios personalizados en Azure Container Apps (ACA). Por ejemplo:

#pragma warning disable ASPIREACADOMAINS001

var customDomain = builder.AddParameter("customDomain");
var certificateName = builder.AddParameter("certificateName");

builder.AddProject<Projects.AzureContainerApps_ApiService>("api")
       .WithExternalHttpEndpoints()
       .PublishAsAzureContainerApp((infra, app) =>
       {
           app.ConfigureCustomDomain(customDomain, certificateName);
       });

Para obtener más información, consulte .NET.NET Aspire información general sobre diagnósticos.

➕ Más actualizaciones de integración

.📦Aspire Paquete NuGet Hosting.AWS y código fuente migrados bajo la propiedad de Amazon Web Services (AWS)). Esta migración se produjo como parte de .NET.NET Aspire 9.0, solo estamos reiterando ese cambio aquí.

🧪 Pruebas en .NET.NET Aspire

.NET .NET Aspire 9.1 simplifica la escritura de pruebas de integración entre funciones con un enfoque sólido. El host de la aplicación permite crear, evaluar y administrar entornos en contenedores sin problemas dentro de una ejecución de prueba. Esta funcionalidad admite marcos de pruebas populares como xUnit, NUnit y MSTest, lo que mejora las funcionalidades y la eficacia de las pruebas.

Ahora, puede deshabilitar la selección aleatoria de puertos o habilitar el panel. Para obtener más información, consulte .NET.NET Aspire Introducción a las pruebas. Además, ahora puede pasar argumentos al host de la aplicación.

Algunas de estas mejoras se introdujeron como resultado de problemas de estabilidad notificados, como .NET AspireGitHub el problema n.º 6678, donde algunos recursos no se pudieron iniciar para "solucionar los errores en uso".

🚀 Despliegue

En la versión 9.1 se incluyen mejoras significativas en el proceso de implementación del Azure Container Apps (ACA), lo que mejora tanto las opciones de la azd CLI como del host de la aplicación. Una de las características más solicitadas(compatibilidad con la implementación de npm aplicaciones en ACA) ahora está implementada. Esta nueva funcionalidad permite npm implementar aplicaciones en ACA igual que otros recursos, lo que simplifica el proceso de implementación y proporciona mayor flexibilidad para los desarrolladores.

Reconocemos que hay más trabajo que hacer en el área de implementación. Las versiones futuras seguirán abordando estas oportunidades de mejora. Para obtener más información sobre la implementación de .NET.NET Aspire a ACA, consulte Desplegar un proyecto de .NET Aspire a Azure Container Apps.

⚠️ Cambios importantes

.NET .NET Aspire se mueve rápidamente y con eso se producen cambios disruptivos. Las interrupciones se clasifican como:

  • Binario incompatible: la versión del ensamblaje ha cambiado y debe volver a compilar su código.
  • Origen incompatible: El código fuente ha cambiado y necesitas cambiar tu código.
  • Cambio de comportamiento: el código se comporta de forma diferente y debe cambiar el código.

Normalmente, las API están decoradas con lo ObsoleteAttribute que proporciona una advertencia al compilar y una oportunidad para ajustar el código. Para obtener información general sobre los cambios importantes en .NET.NET Aspire la versión 9.1, consulte Cambios importantes en .NET.NET Aspire la versión 9.1.

🎯 Actualizar hoy

Siga las instrucciones que se describen en la sección Actualización a .NET.NET Aspire 9.1 para cambiar a la versión 9.1 y aprovechar todas estas nuevas características hoy mismo. Como siempre, estamos escuchando sus comentarios acerca de GitHub y buscando lo que quieren ver en la versión 9.2 ☺️.

Para obtener una lista completa de los problemas solucionados en esta versión, consulte .NET AspireGitHub el hito 9.1 del repositorio.