Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
📢 .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:
- .NET política de soporte: definiciones para LTS y STS.
- .NET .NET Aspire política de soporte: detalles únicos e importantes del ciclo de vida del producto.
⬆️ Actualización a .NET.NET Aspire la versión 9.1
La migración entre versiones secundarias de .NET.NET Aspire es sencilla:
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.
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.
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.
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:
🗑️ 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.
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:
📝 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.
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.
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
- OpenAI ahora admite el 📦 paquete NuGet de Microsoft.Extensions.AI .
-
RabbitMQ actualizado a la versión 7 y MongoDB a la versión 3. Estas actualizaciones introdujeron cambios importantes, lo que conduce a la publicación de nuevos paquetes con sufijos específicos de la versión. Los paquetes originales siguen usando las versiones anteriores, mientras que los nuevos paquetes son los siguientes:
- 📦 Aspire.RabbitMQ.Client. Paquete NuGet v7. Para más información, consulte la .NET AspireRabbitMQ documentación de integración de cliente.
- 📦 Aspire.MongoDB. Paquete NuGet Driver.v3 . Para más información, consulte la .NET AspireMongoDB documentación de integración de cliente.
- Dapr migrado a CommunityToolkit para facilitar una innovación más rápida.
- Muchas otras integraciones recibieron actualizaciones, correcciones y nuevas características. Para obtener información detallada, consulte nuestras GitHub notas de la versió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.