Novedades de Rider 2024.1

Rider 2024.1 incluye una nueva funcionalidad para supervisar el rendimiento de sus aplicaciones y recopilar métricas clave, líneas adhesivas para comprender mejor en qué parte del código se encuentra y navegar más rápidamente por él, y la actualización del cuadro de diálogo New Project para configurar el proyecto de forma más rápida y sencilla. Esta nueva versión le será de gran ayuda durante la depuración, ya que proporcionará el visualizador de colecciones y mostrará el tiempo de paso entre dos puntos de interrupción. Los desarrolladores de juegos pueden beneficiarse de un nuevo conjunto de funcionalidades para el popular activo de Unity Odin Inspector y de la compatibilidad con el marco de trabajo de la interfaz de usuario Slate de Unreal Engine.

Novedades principales

Ventana de herramientas Monitoring

Nueva ventana de herramientas Monitoring

En la versión 2024.1 de Rider, se ha introducido la ventana de herramientas Monitoring, que permite supervisar el rendimiento de las aplicaciones .NET y recopilar métricas clave en segundo plano al ejecutar o depurar.

Más información

Líneas adhesivas

Hemos incluido líneas adhesivas en el editor para simplificar el trabajo con archivos de gran tamaño y la exploración de nuevas bases de código. Esta funcionalidad mantiene los elementos estructurales clave, como los comienzos de clases o métodos, anclados en la parte superior del editor al desplazarse. De este modo, los ámbitos siempre están a la vista y puede navegar rápidamente por el código haciendo clic en una de las líneas ancladas.

Visualizador de colecciones

Inspeccione colecciones, como vectores, listas, diccionarios y otros tipos enumerables, para comprender mejor el estado de los datos de su programa al depurar e identificar posibles problemas relacionados con el manejo de datos.

Más información

Actualización del cuadro de diálogo New Project

Hemos rediseñado a fondo el cuadro de diálogo New Project para facilitar la configuración de nuevos proyectos. Es totalmente compatible con configuraciones de proyecto específicas de .NET y parámetros de plantilla personalizados, y ahora puede instalar el SDK de destino y la carga de trabajo MAUI adecuada directamente desde el cuadro de diálogo.

Más información

UX/UI

Actualización del cuadro de diálogo New Project

Hemos trabajado a fondo en mejorar el cuadro de diálogo New Project para reducir la carga cognitiva al configurar nuevos proyectos. Esto es lo que puede esperar del cuadro de diálogo actualizado:

  • Compatibilidad con todas las opciones de configuración de proyectos específicas de .NET, por ejemplo, una marca de verificación para aplicaciones web progresivas al crear una aplicación Blazor WASM.
  • Compatibilidad con parámetros en plantillas de proyecto personalizadas.
  • La posibilidad de instalar el SDK de destino de su solución directamente desde el cuadro de diálogo.
  • La posibilidad de instalar la carga de trabajo de MAUI adecuada desde el cuadro de diálogo.

Opción de reducir todo el IDE

Antes, era posible ampliar y reducir todo el IDE, cambiando a la vez el tamaño de todos los elementos de la interfaz de usuario, aunque el escalado original estaba limitado a un rango de 100-200 %. Ahora, hemos añadido la posibilidad de reducir la escala del IDE hasta el 70 %, lo cual ofrece más flexibilidad en cuanto al tamaño en general.

Renovación de la ventana de herramientas Terminal

Esta versión incluye una ventana de herramientas Terminal renovada, que proporciona mejoras tanto visuales como funcionales diseñadas para que las tareas basadas en un terminal sean más prácticas y sencillas. Esta actualización mejora la herramienta de forma visual y amplía su conjunto de funcionalidades.

Es posible activar el nuevo terminal desde Settings/Preferences | Tools | Terminal | Enable New Terminal.

Para obtener más información sobre el nuevo terminal, consulte este artículo del blog de IntelliJ IDEA.

Análisis del código

Compatibilidad con С#

Más conversiones a expresiones de colección

Ahora, obtendrá sugerencias para convertir más construcciones de código en su código fuente a expresiones de colección de C# 12, como un vector vacío o la declaración e inicialización ImmutableArray.

Análisis Collection was modified

Hemos añadido la inspección Possible 'System.InvalidOperationException: Collection was modified', que le avisará cuando una colección se modifique mientras se itera dentro de bucles foreach, ya que esta modificación podría provocar una excepción en tiempo de ejecución. Este análisis tiene en cuenta los casos en los que se sale del bucle tras modificar una colección, en cuyo caso no se activará la advertencia. La inspección viene con el correspondiente arreglo rápido para que pueda resolver este problema al instante.

Actualización de Generate | Formatting Members

Generate | Formatting Members le permite generar código reutilizable para anular el método ToString() y devolver una cadena significativa para sus tipos. A partir de la versión 2024.1, esta funcionalidad es compatible con más tipos, como ISpanFormattable, IUtf8SpanFormattable e IFormattable.

Mejora de la compatibilidad para recursos desechables en métodos asincrónicos

  • Mejoras en la anotación [MustDisposeResource]: ahora, el análisis del código de C# garantiza que los recursos devueltos por métodos asincrónicos, incluidos los integrados en Task<IDisposable> y ValueTask<IDisposable>, se eliminen correctamente, lo que ayuda a evitar la eliminación involuntaria de la propia tarea.
  • Valores de retorno de tipo tarea: el análisis correcto de los valores de retorno de tipo tarea en la versión 2024.1 garantiza que se compruebe el recurso esperado para su eliminación y también incluye los recursos recuperados mediante .ConfigureAwait(...), .AsTask() o .Result.

Actualizaciones de la refactorización Change Signature

Estas son algunas de las mejoras que hemos introducido en la refactorización de Change Signature:

  • Ahora, la refactorización es compatible con métodos Deconstruct. Puede añadir, eliminar, reorganizar y cambiar el nombre de los parámetros, y estos cambios se reflejarán tanto en la declaración del método como en los usos de este.
  • Ahora, la finalización de código está disponible para los parámetros de tipo. Esto significa que, por ejemplo, cuando necesite especificar un tipo para una List<>, puede utilizar la finalización de código para seleccionar fácilmente el tipo deseado, como int.
  • Los espacios de nombres de tipo se acortan de forma automática al añadir o actualizar parámetros. Esto ayuda a mantener el código limpio y simplificado tras aplicar la refactorización. Por ejemplo, si especifica el tipo System.Collections.Generic.List<System.Int16> en el cuadro de diálogo Change Signature, se acortará de forma automática a List<short> en el código resultante.
  • Ahora, la refactorización es compatible con más características de las últimas versiones de C#, como los modificadores in y ref readonly y los tipos record.

Actualizaciones de la refactorización Make Static

En esta versión, la refactorización Make Static es compatible con los parámetros del constructor primario. Aparecen en la lista Introduce parameters y tienen un icono independiente para distinguirlos fácilmente. Esta refactorización también está disponible para las funciones locales.

Modo de alta utilización de recursos en el análisis de la solución completa

Estamos trabajando en mejorar el modo de alta utilización de recursos para el análisis de la solución completa, que reducirá de forma significativa la duración del análisis al utilizar el paralelismo de la CPU de forma más eficiente. Hemos mejorado el perfil de memoria asignada del análisis del código para minimizar el tiempo empleado en la recogida de elementos no utilizados. Aunque seguimos trabajando en las mejoras, le agradeceríamos que activara este modo y nos comentara su experiencia.

Rendimiento

  • Ahora, renombrar elementos en su código es más rápido y eficaz. Este cambio también afecta a otros componentes básicos de Rider, lo que se traduce en mejoras de rendimiento en varias funcionalidades, incluida Find Usages.
  • Hemos mejorado de forma significativa el rendimiento de la refactorización Move to Another Type para miembros estáticos para trabajar con clases de gran tamaño.

Compatibilidad con la biblioteca protobuf-net

Ahora, el análisis del código es compatible con el atributo ProtoContract y la enumeración ImplicitFields de la biblioteca protobuf-net. Ambos pueden utilizarse para marcar miembros que se utilizan de forma implícita en la serialización. Como resultado de ello, dichos miembros ya no se marcan con advertencias unused members.

Compatibilidad con F#

Ahora, la generación de anulaciones está disponible en las expresiones de objetos a través de nuevos arreglos rápidos para los miembros que faltan, la finalización de código y la refactorización Generate.

Ahora, también puede ver los casos de unión al buscar usos de unión. De este modo, es más fácil ver cómo se crean las instancias de tipo y cómo se ajustan a los patrones.

Hemos añadido la plantilla postfix new que crea instancias de tipos de registro y expresiones de objetos para clases e interfaces.

Se ha implementado la compatibilidad con líneas adhesivas para F#, por lo que, ahora, es más fácil ver el contexto al trabajar con tipos y funciones más largos.

Hay más arreglos rápidos y acciones contextuales nuevos para la compatibilidad con F#. Puede consultar estos y otros cambios en las notas de la versión completa en GitHub.

Corrector ortográfico inteligente

Siguiendo el ejemplo de ReSharper, también se ha mejorado el corrector ortográfico y gramatical de Rider. El nuevo corrector es compatible con más de 20 idiomas y detecta errores del lenguaje natural dentro de los lenguajes de programación compatibles con Rider (C#, C++, VB.NET), lenguajes de marcado (HTML, XML, XAML) y comentarios.

Depuración .NET

Visualizador de colecciones

El visualizador de colecciones de Rider 2024.1 incluye representaciones gráficas de colecciones (vectores, listas, diccionarios y otros tipos enumerables), lo que permite expandir y contraer elementos, ver valores individuales y navegar fácilmente por la estructura de datos. Resulta útil para comprender el estado de los datos de su programa durante la depuración y para diagnosticar problemas relacionados con la recopilación, la manipulación o el procesamiento de datos.

Tiempo de ejecución paso a paso

A la hora de depurar, evaluar el tiempo que tarda el depurador en ejecutar el código entre dos puntos de interrupción puede ser extremadamente valioso. Un tiempo de ejecución paso a paso excesivamente largo podría indicar problemas de rendimiento en el código. Ahora, al depurar una aplicación con Rider, verá un consejo inline que muestra el tiempo transcurrido entre el último punto de interrupción y el actual.

Puntos de interrupción integrados

Puntos de interrupción integrados

A partir de esta actualización, Rider le permitirá establecer varios puntos de interrupción en una sola línea de código si hay varias declaraciones presentes. Puede establecer los puntos de interrupción con los consejos inline correspondientes o mediante un acceso directo de teclado (Ctrl + F8).

Mejora de la opción de integración Run to cursor

Con la versión 2024.1, estamos trabajando para que la opción Skip to cursor sea más acorde con la forma en que funciona en IntelliJ IDEA. La nueva integración Run to Cursor es una forma rápida de navegar a una línea específica de código mientras se depura. Una vez suspendido su programa, puede pasar el ratón por encima de la línea de código en la que desee continuar la ejecución. A continuación, puede utilizar la ventana emergente Run to Cursor para ejecutar su código hasta llegar a la línea en la que se encuentra el cursor.

Hot Reload para Blazor WASM

Ahora, Hot Reload está disponible para ejecutar y depurar aplicaciones Blazor WebAssembly (WASM). Hot Reload funciona con archivos .cs, .razor y .css (incluidos los archivos de ámbito .razor.css).

Esta funcionalidad está activada de forma predeterminada. Puede configurarla desde Settings/Preferences | Build, Execution, Deployment | Hot Reload.

Compatibilidad con volcados de procesos .NET

Al depurar, los volcados de proceso son cruciales porque permiten examinar el estado del programa al producirse un error, incluso si el problema no se puede reproducir fácilmente. Anteriormente, Rider solo era capaz de procesar los volcados del núcleo de C++. Ahora, el IDE también le permitirá importar volcados de procesos .NET.

Para importar un volcado de proceso, vaya a Run | Debug Core Dump o, simplemente, arrastre y suelte el archivo de volcado en el editor.

AI Assistant

Explain with AI

Hemos añadido el nuevo botón Explain with AI justo al lado de una excepción o mensaje de error lanzado por una prueba de unidad fallida, una compilación fallida o durante una sesión de depuración.

Rename with AI

Al cambiar el nombre de una variable local, obtendrá sugerencias de nombre basadas en IA en la ventana emergente de finalización del código.

Complemento AI Assistant

Tenga en cuenta que, ahora, en la versión 2024.1, AI Assistant ya no está integrado, sino que es un complemento independiente. Este cambio se debe a la necesidad de ofrecer una mayor flexibilidad en la toma de decisiones sobre el uso de tecnologías basadas en IA, lo que le proporciona un mayor control sobre las preferencias y los requisitos en sus entornos de trabajo. AI Assistant sigue requiriendo una suscripción activa a JetBrains AI.

Desarrollo de juegos

Unreal Engine

Compatibilidad con C++

Entre las mejoras notables en la compatibilidad con C++ destacan las siguientes:

  • Change Signature ofrece nuevas funcionalidades, entre las que se incluye la capacidad de cambiar un tipo de parámetro entre un puntero, una referencia o un tipo de valor.
  • Ahora, Call Tracking admite cadenas de llamadas salientes.
  • Ahora, puede personalizar fácilmente el estilo de los comentarios de documentación generados. Además, las inspecciones gramaticales están disponibles dentro de los comentarios de documentación.
  • La nueva implementación de módulos C++20 mejora el rendimiento y es compatible con particiones de módulos internos.

La compatibilidad con C++ de Rider está basada en ReSharper C++. Consulte el artículo Novedades de ReSharper C++ 2024.1 para obtener más información.

Pila de llamadas del depurador de Blueprint

Por fin hemos podido hacer que Blueprint sea compatible con la pila de llamadas del depurador. Ahora, en lugar de ver una dirección de memoria anónima en la pila de llamadas, Rider mostrará información sobre la llamada Blueprint, intercalada con el código C++ existente. Asegúrese de actualizar el complemento RiderLink a la última versión.

Formateo de Slate y navegación inteligente

Esta versión es compatible con el marco de trabajo de la interfaz de usuario Slate de Unreal Engine, que enseña a Rider a utilizar los comandos Go to Definition y Find Usages, así como la refactorización Rename para renombrar los símbolos declarados por las macros de Slate.

Ahora, Rider formateará el código DSL de Slate correctamente, tanto cuando se invoque directamente como una acción de reformateo o al escribir.

Funcionalidades inteligentes de Blueprint

La integración inteligente de Rider con la funcionalidad Blueprint sigue siendo compatible con añadir redirecciones de núcleo al renombrar una instancia UENUM, así como la finalización de rutas de activos para nombres de recursos en código C++.

Actualizaciones de Perforce, interoperabilidad con Visual Studio y mucho más

Seguimos trabajando en la compatibilidad con Perforce, con algunas mejoras ergonómicas útiles para facilitar el inicio de sesión cuando esta expira y para colocar los archivos en la lista de cambios correcta durante una refactorización Rename.

También hemos solucionado el problema con UnrealBuildTool que a veces provocaba la recompilación completa de un proyecto que se había compilado previamente en Visual Studio. Esto mejora de forma sustancial la experiencia de uso de ambos IDE. La corrección es válida para Unreal Engine 5.4 y todas las versiones de Rider.

No olvide echar un vistazo a todos los cambios de C++ en el motor ReSharper C++.

Unity

Compatibilidad con Odin Inspector

Nos complace anunciar que hemos estado trabajando con nuestros amigos de Sirenix para que el popular activo de Unity Odin Inspector sea compatible. Rider reconocerá y resaltará los campos y propiedades serializados por Odin Inspector, proporcionará finalización e inspecciones para nombres de grupo en atributos de diseño y mostrará vistas previas de la clase GUIColor de Odin. También reconocerá los atributos de rango de Odin, utilizará esos valores en el propio análisis de valores enteros de Rider y le advertirá si un valor se sale del rango.

Más información

Mejoras en las variantes de shaders

Rider 2024.1 amplía la compatibilidad con palabras clave de shaders incluida en la versión 2023.3. Puede activar o desactivar diferentes palabras clave al editar sus archivos shader, lo que a su vez activa y desactiva el resaltado y el análisis del código en diferentes ramas del preprocesador. Ahora, esta versión es compatible con las palabras clave implícitas de los shaders, las palabras clave locales específicas de cada fase y las directivas del preprocesador con el sufijo _KEYWORD_DEFINED.

Análisis null y comprobación de la vida útil de los objetos

Esta versión actualiza la forma en que Rider resalta el manejo posiblemente inesperado que hace Unity de las comparaciones de igualdad null para comprobar la vida útil del objeto de juego subyacente. En lugar de mostrar una advertencia si una comprobación moderna null de C# pasa por alto la comprobación de la vida útil, ahora Rider resaltará una comparación null que realiza la comprobación.

Profundizaremos en esto con más detalle en un próximo artículo del blog.

Depuración, indexación de activos y más

La depuración ha mejorado bastante gracias a que Rider es más compatible de forma específica con DOTS, por ejemplo, a través de la incorporación de un nodo hijo Entity al examinar una instancia de IJobEntity en el panel Watches. También se han actualizado los puntos de pausa para que funcionen con los sistemas DOTS. El visualizador de valores de depuración de texturas ha recibido algunas correcciones de errores, y el nuevo visualizador de colecciones ayudará con las colecciones de objetos de juego.

También ha habido algunas mejoras de rendimiento en el análisis de activos, correcciones en el reconocimiento de campos serializados y muchas más correcciones y actualizaciones menores. Puede obtener más información al respecto en el registro de cambios.

Godot

Seguimos trabajando en la compatibilidad con Godot con más actualizaciones del complemento opcional que puede instalar desde la pestaña Plugins de la configuración. Los últimos cambios incluyen:

  • Resaltado de sintaxis para más tipos de archivos Godot, incluidos .gd, .tscn, .tres, .godot y mejora del resaltado para .gdshader.
  • Ahora, Rider detectará de forma automática el tiempo de ejecución .NET correcto para ejecutar o depurar pruebas de Godot desde launchSettings.json (JetBrains/godot-support#125).
  • Hemos añadido el botón Start Godot Editor a la barra de herramientas principal, similar a la acción disponible para Unity (JetBrains/godot-support#119).

Desarrollo web

Resolución de referencias para las directivas @addTagHelper y @removeTagHelper

Ahora, Rider resuelve las referencias para los nombres de agrupación especificados en las directivas @addTagHelper y @removeTagHelper de las vistas de Razor. Ahora, como resultado de ello, puede aprovechar la finalización de código, la capacidad de encontrar usos y la facilidad de navegación por el código.

Además, Rider resalta cualquier nombre de ensamblado no resuelto como advertencia para que pueda reconocerlo fácilmente en sus vistas de Razor.

Plantilla de archivo de Blazor Component

Ahora, puede generar archivos adicionales como .razor.cs, .razor.css o .razor.js al generar una plantilla de archivo de Blazor Component.

Arreglos rápidos para creación de estados y propiedades de React

Rider 2024.1 incorpora varios arreglos rápidos nuevos para React que le permiten crear propiedades y estados sobre la marcha. Puede aplicar estos arreglos rápidos utilizando el acceso directo Alt+Intro.

Para obtener más información sobre las mejoras en el desarrollo web, consulte esta página.

Control de la versión

Esta versión incluye actualizaciones a la compatibilidad con VCS en Rider, por ejemplo:

  • Revisiones de código en el editor para los repositorios GitLab y GitHub.
  • Comprobación del estado de la integración continua en la ventana de herramientas Git.
  • Impedir que se confirmen archivos de gran tamaño a los repositorios.
  • Nueva pestaña Stash en la ventana de herramientas Commit.
  • Opción de excluir carpetas y archivos de las comparaciones.
  • ¡Y más!

Puede consultar todos los cambios aquí.

Trabajo con bases de datos

Estas son algunas de las mejoras más notables para trabajar con bases de datos utilizando Rider 2024.1:

  • Filtro local en el editor de datos.
  • Vista de un solo registro.
  • Posibilidad de mover columnas en los archivos CSV.
  • Más funcionalidades para UUID.
  • Estilo de código alineado para los INSERT de varias filas.
  • Finalización de columnas para cláusulas GROUP BY.

Para obtener más información sobre las mejoras para trabajar con bases de datos, consulte esta página.

Complementos

Complemento .NET Aspire para Rider

.NET Aspire

Hemos incluido .NET Aspire en el SDK de .NET 8, un nuevo enfoque para abordar los complejos problemas que plantea la compilación de aplicaciones distribuidas en la pila de .NET. Gracias a esta innovación, ofrecemos nuevas herramientas integradas: el complemento .NET Aspire para Rider.

Este complemento está disponible para Rider 2024.1 y puede descargarse directamente desde JetBrains Marketplace o a través de Settings/Preferences | Plugins.

Obtenga más información sobre .NET Aspire y el nuevo complemento en este artículo del blog.

Compatibilidad con Frozen Object Heap (FOH) dotUltimate

Ahora, la herramienta integrada de generación de perfiles dotMemory es compatible con Frozen Object Heap (FOH), una funcionalidad incluida por primera vez con el SDK de .NET 6 como parte de las mejoras de rendimiento para la recolección de elementos no utilizados.

FOH asigna un área de memoria específica para objetos inmutables. Estos objetos no se modifican después de asignarse y no están sujetos a la recolección de elementos no utilizados. La compatibilidad con esta tecnología permite a dotMemory realizar un análisis más detallado de la memoria utilizada por los objetos inmutables en FOH, lo que mejora la optimización del uso de la memoria.

Generación de perfiles de rendimiento y memoria para aplicaciones de escritorio MAUI dotUltimate

Ahora, los generadores de perfiles integrados dotTrace y dotMemory son compatibles con las aplicaciones de macOS MAUI y .NET.

Marcos de trabajo compatibles:

  • MAUI Windows: net8.0-windows, net7.0-windows.
  • MAUI Mac: net8.0-maccatalyst, net7.0-maccatalyst.
  • Aplicaciones de macOS: net8.0-macos, net7.0-macos.

Haga clic aquí para obtener más información sobre los modos de generación de perfiles disponibles.

Nuevo complemento Azure Toolkit

El nuevo complemento Azure Toolkit para Rider es un proyecto de código abierto que ayuda a los desarrolladores .NET a crear, desarrollar, configurar, probar, gestionar e implementar fácilmente aplicaciones web escalables y de alta disponibilidad en Azure.

El complemento puede descargarse e instalarse dentro de JetBrains Rider y está disponible en JetBrains Marketplace.

Otros

Compatibilidad mejorada con GitHub Actions

En esta versión, hemos mejorado la compatibilidad con GitHub Actions. Nuestro objetivo de desarrollo es enriquecer los flujos de trabajo de CI/CD con una mayor eficiencia y funciones inteligentes diseñadas específicamente para GitHub Actions.

La lista de mejoras incluye:

  • Amplia compatibilidad del autocompletado para varios contextos de GitHub Action.
  • Funcionalidad de marca para action.yml.
  • Finalización de imágenes de Docker.
  • Finalización de rutas de archivos JavaScript.

Para obtener más información, consulte este artículo en el blog de IntelliJ IDEA.

Opción de arrastrar y soltar archivos de proyecto en el diagrama Type dependency

Mejoras en los diagramas de dependencias de tipos

Se han actualizado los diagramas de dependencias de tipos incluidos en la versión 2023.3 con nuevas formas de configurar los diagramas:

  • Opción de añadir un nodo a un diagrama con Search.
  • Opción de quitar nodos de la vista del diagrama.
  • Posibilidad de añadir tipos relacionados para un tipo específico en un diagrama.
  • Opción de arrastrar y soltar archivos de proyecto en el diagrama Type dependency.

Si quiere conocer más formas de generar diagramas de dependencias de tipos para su aplicación, consulte este artículo del blog.

Compatibilidad con el formato de empaquetado WebCIL para WebAssemblies

Decompilador

Ahora, el Assembly Explorer de Rider es compatible con el formato de empaquetado WebCIL para WebAssemblies.

La compatibilidad incluye lo siguiente:

  • Decompilación para WebCIL.
  • La posibilidad de ver archivos .wasm en Assembly Explorer.
  • Subárboles de metadatos para nodos WASM en Assembly Explorer, incluidos los encabezados WASM y WebCIL.