Novedades de Rider

La versión 2022.2 incluye mejoras generales en el rendimiento, con la optimización del rendimiento de inicio y del motor de análisis de la solución completa. La compatibilidad con C# 11 se ha ampliado para que cubra los miembros obligatorios, los operadores ckecked definidos por el usuario, las cadenas sin procesar y los patrones de listas. En esta versión, puede aplicar la misma configuración de disposición de las ventanas a todas las soluciones en las que esté trabajando. Además, hemos introducido dos nuevas acciones, New Unreal Module y New Unreal Plugin, y la posibilidad de especificar servidores de símbolos para obtener símbolos de la biblioteca cuando se depura.

Rendimiento

Entorno de ejecución .NET 6 para el backend de Windows

Hemos migrado el backend de Windows de Rider al entorno de ejecución .NET 6. Ahora utiliza el entorno de ejecución .NET 6 para ejecutar el servicio de backend en los sistemas operativos compatibles: Windows, macOS y Linux. Gracias a las optimizaciones en el propio entorno de ejecución .NET 6, el rendimiento general de Rider ha mejorado en comparación con el de la versión 2022.1.

En vista de este cambio, también hemos sustituido NGen por la utilidad CrossGen para crear imágenes nativas en Windows tras instalar Rider. Dado que CrossGen funciona con el entorno de ejecución .NET y es multiplataforma, Rider se inicia y abre las soluciones más rápidamente.

Tenga en cuenta que Rider no ejecuta CrossGen durante la instalación, sino solo cuando se inicia Rider por primera vez. Por consiguiente, el primer inicio puede tardar un poco más, pero todos los posteriores serán más rápidos.

Mejoras en el «arranque en frío»

Mejoras en el «arranque en frío»

Las soluciones se inician más rápidamente cuando se abren por primera vez («arranque en frío») y Rider no tiene información sobre ellas. En el arranque en frío, todos los proyectos se cargan dos veces: primero, el IDE carga los proyectos para obtener la información sobre cada uno de ellos; a continuación, ejecuta «NuGet restore»; y, después, cuando todo está listo, carga los proyectos una segunda vez.

Hemos optimizado la primera etapa de carga de proyectos para que Rider obtenga solo la información que necesita para restaurar los paquetes NuGet. Nuestras métricas internas muestran que la nueva implementación es aproximadamente un 40 % más rápida.

Optimizaciones del análisis de la solución completa

En esta versión, hemos optimizado en gran medida el uso de memoria de Rider con el modo Análisis de solución completa activado, tanto en términos de tráfico de memoria (número de asignaciones de memoria) como en términos de consumo de memoria.

El motor Análisis de la solución completa utiliza la memoria para almacenar la lista de problemas en la solución y para almacenar la información de uso de tipos/miembros para realizar informes de uso de toda la solución (inspecciones de código tales como «el miembro público nunca se utiliza»). Los datos de uso están «activos», lo que significa que deben actualizarse constantemente al editar el código y no pueden descargarse en el disco. Esto puede consumir una cantidad considerable de memoria si la solución contiene muchos tipos y miembros de tipo. Hemos revisado los datos almacenados en la memoria y hemos encontrado patrones que nos han permitido desduplicar/normalizar los datos. También hemos utilizado tipos de colección especializados para reducir aún más el espacio de trabajo. Estas optimizaciones han mejorado el consumo de memoria de 5 a 10 veces y han acelerado la carga del Análisis de la solución completa.

C# 11

Esta versión es compatible con varias funcionalidades más de la versión preliminar de C# 11.

Miembros requeridos

Miembros requeridos

En C# 11, ahora los tipos class, struct y record pueden declarar una lista de miembros requeridos. Esta es la lista de todas las propiedades y campos que se consideran necesarios y deben inicializarse a la vez que la instancia de un tipo. Los tipos heredan estas listas de sus tipos base de forma automática, por lo que el código duplicado y repetitivo se elimina sin problemas.

Además de conocer la palabra clave required para los miembros dentro de un tipo class, struct o record, Rider también es compatible con la palabra clave required:

  • Hay una palabra clave required en la finalización de código.
  • La mayoría de los errores y advertencias del compilador están disponibles.
  • Se ha añadido el modificador required a Modifiers order en la página Preferences/Settings | Editor | Code Style | C# | Syntax Style.
Miembros requeridos

Hemos añadido Add initializer for required members, una nueva solución rápida para los casos en los que se ha creado un objeto de tipo, pero no se han inicializado los miembros todavía. Esta genera de forma automática todos los miembros required que faltan para el objeto; solo tiene que rellenar los valores de los miembros con los datos correspondientes.

Operadores checked definidos por el usuario

Los operadores checked definidos por el usuario ayudan a los desarrolladores a crear operadores definidos por el usuario que operan en tipos donde el desbordamiento aritmético es un concepto válido. Rider muestra todos los errores y advertencias del compilador. Para ser totalmente compatible con los operadores checked definidos por el usuario, Rider tiene un par de inspecciones más y una acción contextual.

Hemos actualizado la inspección Unchecked/checked context is redundant para tener en cuenta los operadores checked cuando se utilizan en este contexto.

Si tiene un conjunto de operadores definidos por el usuario y algunos de ellos ya tienen una versión checked, Rider le ayudará a propagar los operadores checked a todo el conjunto. Una nueva inspección llamada The operator does not have a matching checked operator while other operators do le informará de los operadores que no tienen todavía un operador checked y le propondrá una solución rápida para generar las versiones checked de forma automática.

Si todavía no ha utilizado operadores checked en su código base, pero quiere empezar a utilizarlos, la nueva acción contextual Create matching checked operator le resultará muy útil. Está disponible en todos los operadores definidos por el usuario y genera una versión checked de un operador directamente desde el menú que se abre con Alt+Intro.

Cadenas sin formato

C# 11 mejora la capacidad de incrustar otros lenguajes o formatos de texto en el código C# gracias al concepto de cadenas «sin formato».

Rider es compatible a nivel básico con cadenas «sin formato», entre las que se incluyen errores de compilación, y análisis correcto y resaltado de colores para la sintaxis """, pares de comillas dobles y marcadores de posición dentro de cadenas interpoladas (sintaxis {{...}}).

Patrones de lista

C# 11 sigue ampliando los patrones de lista disponibles en el lenguaje. En esta ocasión, C# permite hacer coincidir estructuras tipo lista, como vectores, cadenas y colecciones tipo List<T>.

Rider 2022.2 es totalmente compatible con los patrones de lista, con comprobación de errores, finalización de código y análisis del código. Todavía estamos trabajando para añadir inspecciones de código para sugerir el uso de los patrones de lista en el código existente y acciones adicionales de refactorización.

Más funcionalidades de C# 11

Más funcionalidades de C# 11

  • Rider 2022.2 es totalmente compatible con el nuevo operador desplazamiento a la derecha sin signo (>>>) e incluye compatibilidad con la sobrecarga del operador definido por el usuario >>>.
  • Rider 2022.2 es compatible con la simplificación del uso de valores Span<char> como reemplazo de las instancias de cadena, ya que en C# 11 es posible comparar directamente las constantes de cadena con los valores de tipo Span<char> y ReadOnlySpan<char>.

Análisis de código

Declaraciones de nivel superior

.NET 6 ha introducido nuevas plantillas de proyecto con el uso de declaraciones de C# 9 de nivel superior. Las declaraciones de nivel superior simplifican la declaración de una clase Program o del método public static void Main(string[] args), aunque a veces es necesario o preferible utilizar la declaración explícita class Program. Rider 2022.2 incluye la nueva acción contextual To explicit 'Program' class para ejecutar una transformación al estilo antiguo.

Además, si ya tiene una clase de inicio Program y desea migrar a declaraciones de nivel superior, podrá hacerlo con la nueva acción contextual Convert to top-level code.

Actualizaciones en la compatibilidad de INotifyPropertyChanged

En esta versión, hemos modificado la compatibilidad con INotifyPropertyChanged. Ya no depende de anotaciones externas para detectar las API comunes INotifyPropertyChanged, lo que nos ha permitido ser compatibles con más marcos MVVM y clases base INotifyPropertyChanged de forma automática. Ahora utilizamos un método SetField cuya sintaxis es más concisa para las notificaciones INotifyPropertyChanged.

Ahora también puede añadir notificaciones property change para todas las propiedades del tipo o del archivo.

Refactorizaciones en el menú al que se accede con Alt+Intro

Para aumentar la visibilidad de las refactorizaciones, hemos revisado las refactorizaciones más utilizadas y hemos introducido acciones contextuales relacionadas en el menú que se abre con Alt+Intro que dependen del contexto actual.

Hemos añadido la acción contextual Extract method al acceder al menú que se abre con Alt+Intro en un trozo de código seleccionado.

Ahora, las refactorizaciones Change Signature, Transform Parameters, Convert to extension method y Convert Property To Method están disponibles como acciones contextuales para las firmas de los miembros.

Más sugerencias de uso de un operador nameof

Rider 2022.2 reconoce los registros de DependencyProperty en los proyectos WPF y sugiere el uso de un operador nameof para capturar el nombre de la propiedad CLR correspondiente. Las plantillas activas integradas también se han actualizado para emitir nameof en lugar de literales de cadena.

Rider no suele reconocer en el código el significado especial de un literal de cadena concreto que se utiliza para especificar el nombre de alguna entidad de código, como un miembro o un nombre de tipo. Para estos casos, hemos introducido la nueva acción contextual Capture element name para los literales de cadena con identificadores que pueden hacer referencia a una entidad de código en el contexto que contiene el literal de cadena.

Buscar y sustituir estructural

Las correcciones rápidas que provienen de los patrones Structural Search And Replace (SSR) pueden aplicarse en el ámbito de un archivo, una carpeta, un proyecto o una solución completa. Afecta a los patrones personalizados de los usuarios, a las inspecciones de código incorporadas por Rider y a las correspondientes correcciones basadas en las acciones SSR.

Otros

Ahora, Rider 2022.2 detecta algunos patrones de asignación en el código y le sugiere un código C# más idiomático con concordancia de patrones.

Rider 2022.2 puede reemplazar algunos patrones is en las expresiones ?: por la versión más concisa de as en la expresión ??, con lo que se elimina de forma efectiva una variable temporal.

Interfaz/experiencia de usuario

Configuración predeterminada de la disposición de las ventanas

Configuración predeterminada de la disposición de las ventanas

Hemos implementado una forma de aplicar la misma configuración de disposición de las ventanas a todas las soluciones en las que trabaje. Si, por ejemplo, mueve una ventana de herramientas a la derecha, estará ahí en todas las soluciones.

Este comportamiento será el predeterminado si es nuevo en Rider. De lo contrario, puede habilitarlo en el menú principal seleccionando Windows | Layout Settings | Use the Same Layout for All Projects.

Rediseño de las configuraciones de las soluciones

En esta versión, hemos rediseñado la forma en que se muestran las configuraciones de las soluciones. Los proyectos como Unity, Unreal Engine o Xamarin suelen tener muchas configuraciones, objetivos y plataformas. Antes, las combinaciones de todas estas entidades producían muchos elementos en el menú Solution Configurations. A partir de la versión 2022.2, ya no es necesario buscar en una larga lista de elementos la combinación exacta de configuración, objetivo y plataforma. Basta con hacer clic en cada tipo de parámetro, uno por uno, hasta seleccionar la combinación deseada.

Rediseño de las configuraciones de las soluciones

Para aligerar la barra de herramientas principal, hemos trasladado la lista de configuración de las soluciones al menú desplegable del icono de compilación (el martillo verde). Los comentarios y las estadísticas que hemos recogido indican que los usuarios no cambian las configuraciones de sus soluciones con la suficiente frecuencia como para que haya un widget independiente en la barra de herramientas. Sin embargo, si necesita las configuraciones, están disponibles en el triángulo desplegable junto al icono del martillo verde, donde encontrará la lista habitual.

Si desea volver a mover las configuraciones de la solución a la barra de herramientas, puede seleccionar Show Configuration on Toolbar en la lista.

La lista de configuraciones de soluciones sigue estando en la barra de herramientas cuando se trabaja en proyectos de Unity, Unreal Engine o Xamarin, ya que las configuraciones de soluciones se utilizan mucho en este tipo de proyectos.

Widget Run/Debug redimensionable

Widget Run/Debug redimensionable

En respuesta a los comentarios de la comunidad, ahora es posible cambiar el ancho del widget Run/Debug en la barra de herramientas principal. Si hay espacio disponible en la barra de herramientas para ampliar el widget Run/Debug, puede arrastrar la esquina izquierda del icono del widget y cambiar el tamaño. Esto significa que puede crear más espacio para el widget cuando quiera o lo necesite.

Acción Merge All Project Windows

Acción Merge All Project Windows en macOS macOS 11+

Para macOS, hemos introducido la posibilidad de organizar el espacio de trabajo fusionando todas las ventanas de proyecto abiertas en una sola, convirtiendo cada ventana en su propia pestaña. Para realizar esta acción vaya a Window | Merge All Project Windows.

Pantalla de bienvenida

Pantalla de bienvenida

Hemos actualizado la forma en que se muestra la barra de progreso Cloning repository en la pantalla de bienvenida de Rider. Ahora se muestra directamente en la lista Projects, lo que la hace más clara y fácil de usar.

Configuración de la finalización de código

Configuración de la finalización de código

Ahora puede acceder a Code Completion Settings y configurar sus preferencias directamente desde el icono de los tres puntos verticales en la ventana emergente de finalización de código.

Compatibilidad con MAUI Versión preliminar

Compatibilidad con MAUI

Hemos incluido un acceso anticipado a la compatibilidad con .NET Multiplatform App UI (.NET MAUI). Esta versión es compatible con proyectos dirigidos a las plataformas Android e iOS. Puede utilizar las configuraciones de ejecución para ejecutar y depurar el proyecto, e implementar la aplicación en un dispositivo de destino. Tenga en cuenta que macOS, Mac Catalyst, Blazor Hybrid y WinUI aún no son totalmente compatibles.

Learn more: macOS Environment Setup for MAUI Development

Solution Explorer

Personalizar la nueva barra de herramientas

Refactorización Safe Delete

Hemos implementado la refactorización Safe Delete para los proyectos. Se puede invocar con la tecla Suprimir o con la acción Refactor This en un proyecto en Solution Explorer. Rider buscará los usos del proyecto seleccionado. Si hay algún uso, se mostrarán los conflictos y, si no, el proyecto se eliminará y Rider eliminará cualquier referencia o importación que sobre. También hay una opción para eliminar un proyecto sin estas comprobaciones: desmarque la opción Search for usages cuando se muestre el cuadro de diálogo Safe Delete y Rider no ejecutará esta búsqueda.

Mejor compatibilidad con los filtros de la solución

Mejor compatibilidad con los filtros de la solución

Rider 2022.2 le facilita el trabajo con soluciones filtradas. Ahora puede filtrar un proyecto, un conjunto de proyectos, una carpeta de soluciones o incluso todos los proyectos de la solución resultante. Para ello, utilice la acción Solution Filter | Remove project del menú contextual de un proyecto, una carpeta de soluciones o el nodo raíz de la solución en la vista Solution Explorer. Para ver qué proyectos se han filtrado, active el modo Show All Files en la vista Solution Explorer y utilice la acción Solution Filter | Add Project del menú contextual.

Mejor compatibilidad con los filtros de la solución

Además de estas operaciones básicas, Rider cuenta con dos acciones más avanzadas: Load Direct Project Dependencies y Load Entire Project Dependency Tree. Al utilizarlas, Rider comprobará todas las dependencias del proyecto de destino y cargará los proyectos necesarios para que pueda empezar a trabajar rápidamente en la solución filtrada.

Assembly Explorer

Assembly Explorer

Assembly Explorer permite presentar mejor las agrupaciones ReadyToRun (R2R) y NGen:

  • Se ha mejorado la forma en que se presentan las agrupaciones ReadyToRun (R2R) y NGen en Assembly Explorer. Ahora se muestra un icono pequeño en forma de procesador y las etiquetas ngen o R2R junto al nombre de cada agrupación.
  • El árbol Metadata tiene el encabezado ReadyToRun.
Otras funcionalidades

Otras funcionalidades

  • La vista Solution Explorer muestra los archivos fuente generados por los generadores de código fuente. Puede encontrarlos en la sección Dependencies | <Nombre del marco de trabajo de destino> | Source Generators.
  • Los proyectos se clasifican por orden alfabético en las vistas Solution Explorer, File System y Unity Explorer.

Desarrollo de juegos

Compatibilidad con Unreal Engine

Nuevo módulo de Unreal

Nuevo módulo de Unreal

La creación de un nuevo módulo con lógica de juego implica una larga lista de tareas: añadir una carpeta, añadir un archivo Build.cs a la carpeta, crear una clase que inicialice el módulo, actualizar los archivos .uproject y Target.cs, etc. Ahora Rider tiene una acción que automatiza estas tareas: Add | New Unreal Module.

Más información

Nuevo complemento de Unreal

Nuevo complemento de Unreal

Si alguna vez ha intentado crear nuevos complementos en Unreal Editor, esta nueva acción le resultará familiar. Ahora puede crear diferentes tipos de complementos directamente desde Rider: con la acción Add | New Unreal Plugin se generarán todos los archivos necesarios para el nuevo complemento.

Más información

Servidores de símbolos

Servidores de símbolos

Al depurar, es posible que los símbolos de la biblioteca no estén disponibles en su máquina local, en cuyo caso puede utilizar servidores de símbolos. En la versión de Rider para Windows puede configurar el depurador para que utilice el servidor de símbolos que elija.

Más información

Compatibilidad con las pruebas Spec

Compatibilidad con las pruebas Spec

Ahora Rider es compatible con las pruebas Spec del marco de trabajo de automatización de pruebas de Unreal Engine. Si tiene un conjunto de pruebas definidas en el método Define después de la macro DEFINE_SPEC o de las macros BEGIN_DEFINE_SPEC y END_DEFINE_SPEC, Rider las localizará correctamente para que pueda ejecutarlas y observarlas en la vista Unit Tests.

Llamadas a funciones de tipo Emplace

Llamadas a funciones de tipo Emplace

Ahora Rider entiende que las llamadas a funciones de tipo Emplace (como TArray<..>::Emplace) implican la construcción de objetos, por lo que le advertirá sobre los argumentos no válidos pasados al constructor. Puede ver los consejos sobre la nomenclatura de parámetros y la información de los parámetros mientras escribe los argumentos. También puede ir a la definición de un constructor directamente desde una llamada Emplace, y viceversa.

Otras actualizaciones

  • Hemos sustituido el botón Build solution por el botón Build startup project en la barra de herramientas principal para los proyectos de Unreal Engine.
  • En los proyectos de Unreal Engine, ahora la lista de finalización de código incluye los especificadores de metadatos Widgets.
Compatibilidad con Unity

Compatibilidad con Unity

  • Hay disponible una nueva barra de herramientas para los proyectos de Unity, y ahora el estado de la conexión se muestra en la barra de herramientas en lugar de en la barra de estado. Además, se han eliminado los botones de reproducción/pausa/paso de la barra de herramientas de forma predeterminada, pero se pueden volver a añadir.
  • Hemos añadido inspecciones para asegurar los valores de retorno de los métodos Mathf.
  • Ya no es necesario reiniciar el editor de Unity para iniciar la generación de perfiles. Ahora, el perfilador puede adjuntarse y separarse de los procesos de Unity en ejecución.

Complementos

dotCover dotUltimate

Hemos añadido un indicador de resumen de cobertura al editor. Puede ser útil si considera que el resaltado rojo y verde producido por el complemento dotCover es abrumador, ya que la nueva herramienta es mucho más discreta. Busque el icono en forma de escudo en el widget Inspections. El color y el relleno reflejan la cobertura del código del documento actual y, al hacer clic en él, se desplazará por las declaraciones que no están cubiertas.

Nueva ventana de herramientas Notifications

dotMemory dotUltimate Solo para Windows

Rider ahora incorpora dotMemory, nuestra herramienta de generación de perfiles de memoria. Estas son sus principales funcionalidades:

  • Hay dos modos de generación de perfiles de memoria disponibles en el widget Run y Run | Switch profiler configurations en el menú principal: Memory (sampled allocations) y Memory (full allocations). Encontrará más información sobre la diferencia entre ellos en la sección de ayuda de dotMemory.
  • Puede adjuntar el generador de perfiles a un proceso en ejecución desde el menú Run.
  • También puede ver el desarrollo del gráfico de la línea de tiempo en tiempo real. Seleccione un intervalo y abra la vista Memory Allocations. Equivale a la misma visualización en dotMemory Standalone y permite profundizar en el análisis de un marco temporal concreto.

Tenga en cuenta que el complemento de dotMemory no permite tomar instantáneas y solo funciona en Windows en la versión 2022.2.

Más información

Indicador de zoom

Markdown

Ahora es posible generar fácilmente tablas de contenido en archivos Markdown basadas en los encabezados del documento. Esta nueva acción está disponible en los menús emergentes Insert y Generate, que puede invocar mediante el atajo de teclado Alt+Insertar o con un clic derecho. Rider insertará una tabla de contenidos en la posición actual del signo de intercalación y la encerrará con etiquetas <!-- TOC -->, para que pueda actualizarla más tarde llamando al mismo menú.

dotTrace dotUltimate

Ya no es necesario reiniciar el editor de Unity para iniciar la generación de perfiles. Ahora, el perfilador puede adjuntarse y separarse de los procesos de Unity en ejecución.

Desarrollo web

Compatibilidad con componentes independientes de Angular

Compatibilidad con componentes independientes de Angular

Hemos estado trabajando en la compatibilidad con Angular 14 en Rider. La incorporación más importante en esta versión es la compatibilidad con los componentes independientes de Angular. Rider 2022.2 reconoce correctamente los componentes, las directivas y procesos marcados como standalone: true.

Actualizaciones para Vue 3

Actualizaciones para Vue 3

Rider 2022.2 incorpora mejor compatibilidad con Vue 3. Por ejemplo, ahora entiende el estrechamiento del tipo en las directivas v-if/else. También se ha mejorado la compatibilidad con Pinia, la solución de gestión de estados recomendada por los equipos de Vue que funciona como almacén global. Tanto la finalización como la resolución ahora funcionan en Vue con la biblioteca Pinia, y puede navegar a las propiedades de estado y acciones definidas en el almacén.

Compatibilidad con TypeScript 4.7

Compatibilidad con TypeScript 4.7

Rider 2022.2 incluye TypeScript 4.7, que admite nuevas características del lenguaje como moduleSuffixes y ESM en Node.js. Insertará automáticamente la extensión .js en la declaración de importación si module está configurado como node16 o nodenext en su archivo tsconfig.json. Además, Rider admite el campo typesVersions en los archivos package.json.

Más información: Novedades en WebStorm 2022.2

Compatibilidad con F#

Hemos rediseñado la ventana emergente Parameter Info para F#.

Parameter Info contiene detalles sobre los argumentos esperados de una función. La ventana emergente aparece mientras escribe una aplicación de función o una llamada a un método, o puede pulsar Ctrl+P para verla mientras lee el código.

A partir de la versión 2022.2, la ventana emergente Parameter Info es compatible con las aplicaciones currificadas y resalta correctamente las sobrecargas de los métodos. También muestra las descripciones de métodos, funciones y parámetros, los valores predeterminados de los parámetros, la información de los métodos de extensión y las anotaciones CanBeNull/NotNull de JetBrains. Además, puede ver la Parameter Info en los atributos.

Ahora puede utilizar tanto la versión global como la local de la herramienta dotnet de Fantomas. Rider utilizará la herramienta apropiada de forma automática para que pueda sincronizar la versión de Fantomas dentro de su equipo.

Hay una nueva corrección rápida, Change type of binding, que le será útil cuando un tipo de retorno definido difiera del tipo real de una expresión. Special thanks goes to Florian Verdonck for implementing this quick-fix.

You can take a look at the full release notes for more information about F# support in Rider 2022.2.

Compatibilidad con bases de datos

Compatibilidad con bases de datos
  • Hemos introducido dos nuevos modos de resolución: Playground y Script. Puede encontrar más información sobre las diferencias entre ambos en esta entrada del blog.
  • La autenticación de Windows vuelve a estar disponible para los servidores Microsoft SQL.
  • Las clasificaciones y los conjuntos de caracteres se generan ahora con el DDL de la tabla para Microsoft SQL Server.
  • Ahora, Rider es compatible con tres bases de datos adicionales: DuckDB, Mimer SQL y Apache Ignite.

Más información: Novedades en DataGrip 2022.2