Novedades de Rider

Rider 2021.3 incorpora compatibilidad oficial con el SDK .NET 6, incluida la funcionalidad Hot Reload. Incluye una barra de herramientas principal y una pestaña Debug completamente rediseñadas, así como una nueva ventana de herramientas Problems View. Rider también es compatible con más funcionalidades de C# 10, como los espacios de nombres con ámbito de archivo y las directivas de uso global, para ayudarle a utilizar las capacidades del lenguaje más recientes de forma más eficaz.

También cuenta con actualizaciones para su compatibilidad con Unity y F#, Reformat and Cleanup al guardar, vista previa de XAML para los SDK .NET 6, .NET 5 y .NET Core 3.x, y compatibilidad con chips Apple Silicon.

Compatibilidad con el SDK .NET 6

Rider 2021.3 ofrece oficialmente compatibilidad con el SDK .NET 6, incluyendo:

  • Plantillas de proyectos.
  • Los últimos marcos de trabajo de destino.
  • La última API de NuGet.
  • Hot Reload.
  • Depuración de Blazor WebAssembly.
  • Creación/ejecución/depuración de proyectos destinados al nuevo SDK.
  • Scaffolding ASP.NET para proyectos .NET 6.

Rider también ofrece compatibilidad inicial con los proyectos de Xamarin iOS y Xamarin Android que forman parte del SDK .NET 6.

Hot Reload

¡Rider es compatible con la funcionalidad Hot Reload de .NET 6! Cuando modifique el código fuente gestionado en su aplicación mientras esta se está ejecutando, Rider le preguntará si desea aplicar este cambio a la aplicación en ejecución sin reiniciarla. Busque la barra amarilla de notificación de Sources are modified en la parte superior del editor de texto. Si acepta el cambio, su aplicación se actualizará sobre la marcha y podrá seguir trabajando con la aplicación actualizada.

Hot Reload se habilita automáticamente cuando se utilizan las configuraciones de ejecución de .NET Project y .NET Launch Settings Profile.

Hay una nueva página específica para habilitar y deshabilitar la función Hot Reload: Preferences/Settings | Build, Execution, Deployment | Hot Reload.

Limitaciones:

  • La depuración durante una sesión de Hot Reload solo está disponible en Windows, donde se puede utilizar la Hot Reload junto con el depurador y aplicar automáticamente los cambios en el paso y la reanudación. Hot Reload funciona en todas las plataformas cuando no se está depurando.
  • Hot Reload no es compatible con las aplicaciones F# y VB.NET. Además, Hot Reload no es compatible con los cambios realizados en los formatos de interfaz de usuario en marcos como WPF, Windows Forms y .NET MAUI. Blazor WebAssembly (WASM) tampoco es compatible todavía.
  • Para mostrar los cambios que ha realizado en Razor Pages, deberá recargar la página en su navegador. La recarga automática de páginas se añadirá en futuras versiones.

Más información: Hot Reload para .NET 6 en Rider 2021.3

Interfaz/experiencia de usuario

Barra de herramientas principal rediseñada

La antigua barra de herramientas principal tenía algunos problemas que queríamos solucionar. Había demasiados iconos, la mayoría de los cuales apenas se utilizaba. La funcionalidad de VCS y de navegación no era fácil de encontrar. Y, lo que es más importante, no era posible controlar las configuraciones de ejecución múltiples.

Rider 2021.3 incorpora una barra de herramientas principal completamente rediseñada. Con el nuevo diseño, hemos intentado ofrecer a nuestros usuarios una barra de herramientas limpia pero funcional. Incluye lo siguiente:

  • Los botonesBack y Forward, que son los básicos de la navegación contextual para Rider.
  • Un widget de VCS para acceder a todas las funciones relacionadas con VCS y poder y manejarlas. Este widget se encuentra ahora más cerca de la ventana de herramientas Commit.
  • Un gran campo Search Everywhere que sirve como punto de entrada principal para la función de búsqueda global.
  • Un widget de Solution Configuration para gestionar las configuraciones relacionadas con la solución.
  • Un nuevo widget Run/Debug que permite gestionar y controlar fácilmente las configuraciones de ejecución.

Sin embargo, como no queremos interrumpir el trabajo de los usuarios de Rider que ya se sienten cómodos utilizando la antigua barra de herramientas, la nueva estará habilitada por defecto solo para las nuevas instalaciones de Rider. Si ya tiene instalado Rider pero quiere probar la nueva barra de herramientas, puede activarla en cualquier momento en View | Appearance | Toolbar en lugar de Toolbar Classic.

Problems View

Tener todos los problemas potenciales de una solución en un solo lugar puede ser útil, por lo que nos complace presentar Problems View. Problems View (la vista de problemas que encontrará en la pestaña Problems en la interfaz de usuario de Rider) es una ventana de herramientas que agrega todos los problemas potenciales que existen en una solución, como errores de carga del proyecto, procesos de restauración de NuGet fallidos, inspecciones de un archivo abierto y todos los errores de SWEA. La ventana de herramientas consta de tres pestañas.

Current File

Aquí puede encontrar todos los errores, advertencias, sugerencias y consejos que el análisis de código de Rider ha encontrado en el archivo con el que está trabajando. Funciona igual que en nuestros IDE basados en IntelliJ: el widget Inspection situado en la parte superior de la barra de desplazamiento vertical lleva directamente a esta pestaña.

Toolset, Environment

Esta pestaña agrega todos los diagnósticos y mensajes relacionados con las actividades de carga de la solución, los procesos de restauración de NuGet, etc. Para cada problema, ofrece una descripción adecuada y la correspondiente lista de soluciones, si las hay. Anteriormente, habría tenido que abrir la ventana de herramientas Event Log para encontrar los detalles de este tipo de mensajes de diagnóstico.

All Solution Files

Este es el nuevo hogar de la ventana de herramientas SWEA. Aquí puede ver todos los errores que Solution Wide Error Analysis ha encontrado en la solución.

Nueva ventana de herramientas Bookmarks

Hemos introducido la nueva ventana de herramientas Bookmarks concebida para reemplazar una instancia similar: Favorites.

Cuando añade un marcador, Rider lo coloca de forma predeterminada en el nodo con el nombre de su proyecto en la ventana de herramientas Bookmarks. Cada vez que añada un nuevo marcador, aparecerá en la parte superior de la lista dentro de este nodo. También puede crear nuevos nodos y arrastrar y soltar elementos en ellos.

Depurador

Nueva interfaz de usuario para la pestaña Debug

¡Una nueva interfaz de usuario llega a la pestaña Debug! Tenemos muchos cambios que contarle.

De forma predeterminada, hay tres pestaña: Threads & Variables, Console y Debug Output. Otras pestañas como Memory y Parallel Stacks están ocultas, pero puede mostrarlas a través del menú de opciones (el icono de la rueda dentada en el extremo derecho).

Hemos eliminado por completo la barra de herramientas de la izquierda y hemos trasladado los iconos que se encontraban allí a la barra de herramientas superior o al menú contextual. Para mantener la barra de herramientas superior lo más compacta posible, hemos reordenado el conjunto de iconos y hemos dejado visibles solo las acciones más importantes. El resto de los iconos se han trasladado al menú desplegable More (el icono de los puntos verticales). El icono Hide Frames from Libraries y el conmutador Hide/Show Threads se han trasladado al menú contextual de la vista Threads.

El menú desplegable More tiene un nuevo submenú Settings. Aquí puede encontrar una lista de los ajustes más comunes relacionados con el depurador sin tener que buscarlos, yendo al cuadro de diálogo Settings/Preferences y profundizando en la página Build, Execution, Deployment | Debugger.

Actualizaciones de la ventana Immediate

Hay dos diseños: maximizado y minimizado. En el diseño minimizado, la vista Variables muestra el resultado de la ejecución solo en la variable $result. En el diseño maximizado, además de la variable $result, se puede ver el historial de las líneas ejecutadas anteriormente, así como sus resultados. Puede alternar entre los diseños utilizando el icono Expand/Collapse.

Add Watch se ha trasladado de la vista Variables a la barra de herramientas de la ventana Immediate, y ahora tiene un acceso directo, Ctrl+Mayús+Intro.

La nueva opción Stop on Breakpoints obliga al proceso de evaluación a detenerse en los puntos de interrupción cuando se ejecuta una expresión. Si se desactiva esta opción, el proceso de evaluación ignorará los puntos de interrupción.

Para que la evaluación de un objeto con muchas propiedades sea más cómoda, hemos añadido un icono Evaluate que abre la ventana Evaluate con este objeto ya evaluado. Es mucho más fácil ver las propiedades del objeto en forma de árbol en esa ventana.

Depuración para aplicaciones UWP

Tenemos buenas noticias para los desarrolladores de UWP: ahora pueden empezar su proyecto UWP con el depurador adjunto de inmediato. Ya no es necesario ejecutar el proyecto primero y luego adjuntar manualmente el depurador al proceso en ejecución.

Compatibilidad con contenedores Docker de Windows

Ahora puede depurar aplicaciones .NET (Core) y .NET Framework en contenedores Docker locales de Windows. Anteriormente, el depurador solo podía funcionar con aplicaciones .NET Core en contenedores Docker de Linux.

Otras actualizaciones

Cuando crea un delegado estándar (System.Func o System.Action), puede navegar fácilmente hacia un método o una expresión lambda que el delegado ajustará. Compruebe el enlace Navigate del nodo del delegado en la lista Variables.

Cuando crea un controlador de eventos (delegado) usando una expresión lambda, el nuevo visualizador le permite investigar los suscriptores y los objetos capturados más de cerca.

El controlador de eventos cuenta ahora con un nodo Subscribers con un subnodo Captured variables. Para navegar rápidamente al lugar donde se suscribió un evento, hemos añadido un nuevo enlace Navigate para cada suscriptor.

Análisis del código

C# 10

Rider sigue añadiendo más funcionalidades de C# 10. Hoy nos complace añadir la compatibilidad con los espacios de nombres con ámbito de archivo, instrucciones Using globales, el atributo CallerArgumentExpression, el concepto de «controladores de cadenas interpoladas» y las expresiones lambda de C# 10.

Empecemos con los espacios de nombres con ámbito de archivo. Además de ser compatible con la nueva sintaxis en sí, hemos añadido una nueva opción de estilo de sintaxis que permite seleccionar el estilo deseado (Settings/Preferences | Editor | Code Style | C# | Syntax Style | Code body | Namespaces). Al elegir un estilo, ahora Rider mostrará las inspecciones del código que tienen que cambiarse para seguir el estilo y le sugerirá los arreglos rápidos adecuados. Puede propagar con un solo clic las correcciones a todo el proyecto, o incluso a toda la solución.

Hay dos acciones contextuales que le permiten restablecer el código al estilo de sintaxis anterior: Convert to file-scoped namespace y Convert to block-scoped namespace.

Más información: Espacios de nombres con ámbito de archivo

Ahora echemos un vistazo rápido a las instrucciones Using globales. La funcionalidad de análisis del código de Rider detecta las instrucciones Using marcadas con la palabra clave global y las usa para resolver correctamente símbolos en todos los archivos de código del proyecto. Rider también le avisará si se ha colocado una instrucción Using global en una ubicación incorrecta de un archivo.

Rider resaltará las instrucciones Using globales que no se usen en el proyecto y ofrecerá una corrección rápida para eliminar la declaración.

Rider ofrece compatibilidad avanzada con el atributo CallerArgumentExpression, incluyendo la finalización de código de inspecciones de código para ayudarle a usarlo correctamente.

Más información: CallerArgumentExpression

C# 10 introdujo el nuevo concepto de «controladores de cadenas interpoladas». Para los usuarios finales, esto quiere decir que las expresiones de interpolación de cadena se ejecutarán más rápido en .NET 6 y, además, los nuevos controladores permitirán usar los valores Span<char> en los marcadores de interpolación. Para los autores de bibliotecas, esta funcionalidad permite controlar si las expresiones de interpolación de cadena se convierten en cadenas. Rider 2021.3 reconoce el patrón «controladores de cadenas interpoladas» en el código de biblioteca y ahora puede sugerir de forma segura el uso de expresiones de interpolación de cadena en más lugares.

Rider le permite obtener el mejor rendimiento de structs record al sugerirle que se marquen como readonly. Para evitar saturar las declaraciones de tipos con modificadores innecesariamente, esta inspección solo se muestra cuando el tipo de record tiene miembros de instancia no mutantes y no hay mutaciones a través de setters en la solución (requiere un análisis habilitado en toda la solución).

C# 10 le permite simplificar la sintaxis de coincidencia de patrones al permitir el acceso con puntos, en lugar del anidamiento con patrones de objetos.

Rider ofrece la inspección correspondiente con un arreglo rápido, así como una acción contextual para deshacer el arreglo rápido.

Por último, pero no menos importante:

  • Hemos mejorado la compatibilidad con expresiones lambda de C# 10: no se mostrará código rojo ni errores de falsos positivos en los proyectos de la API Minimal de .NET 6. Además, Rider ahora le ayuda a usar la sintaxis correcta y añade paréntesis donde el compilador espera que aparezcan.
  • Ahora Rider admite Program como un nombre de clase generado válido para código con declaraciones de nivel superior.
  • Ya está disponible la compatibilidad inicial para miembros del tipo static abstract en interfaces. El análisis del código considera esta construcción como válida, lo que quiere decir que ya no se mostrará código rojo. La funcionalidad Generate missing members detecta miembros del tipo static abstract y los gestiona correctamente. Esta versión también incluye marcas de medianil de herencia y la capacidad de navegar a símbolos base/derivados.

Tipos de referencias que aceptan valores null

Es habitual que los usuarios copien fragmentos de código de otros recursos, como stackoverflow.com. Actualmente, con los tipos de referencias que aceptan valores null disponibles en C#, algunos ejemplos de código ya incluyen la sintaxis NRT. Pero ¿y si no tiene NRT habilitado en su solución? Ahora Rider cuenta con dos nuevos arreglos rápidos para ayudarle a reemplazar esa sintaxis después de pegar el código del proyecto: Replace with JetBrains.Annotations attributes y Remove nullable annotations without ‘#nullable’ context.

De vez en cuando, puede que haya errores de coincidencia de nulabilidad entre argumentos de tipo y sus restricciones de nulabilidad. Ahora hay disponibles arreglos rápidos para dichos casos, por ejemplo:

  • Quitar anotaciones que aceptan valores null de argumentos de tipo.
  • Quitar restricciones notnull de argumentos de tipo.
  • Permitir valores que aceptan valores null en parámetros de tipo.
  • No permitir valores que aceptan valores null en parámetros de tipo usados como argumentos de tipo.

Hay disponible un arreglo rápido masivo para corregir anotaciones en parámetros con valores predeterminados que aceptan valores null en un archivo o proyecto, o bien en toda la solución.

También hay un nuevo arreglo rápido masivo que hace que un parámetro acepte valores null en un método.

Análisis de código C#

Hemos añadido un par de arreglos rápidos y una acción contextual para funciones static anónimas/locales con clausuras:

  • El arreglo rápido Allow closures quita los modificadores static de una función local o anónima si contiene clausuras.
  • El arreglo rápido Pass closure as a parameter convierte las clausuras en funciones locales estáticas en parámetros.
  • La acción contextual Pass closure as a parameter convierte las clausuras de funciones locales no estáticas en parámetros.

Hay una nueva inspección (Simplify string interpolation) con un arreglo rápido correspondiente que reemplaza las llamadas de método .PadLeft() y .PadRight() por expresiones de alineación dentro de marcadores de posición de cadenas interpoladas.

Además de añadir el nuevo struct de registros record struct de C# 10, también hemos mejorado la compatibilidad con structs normales. Muchos desarrolladores aún usan clases con inicializadores de objetos para sus DTO. Ahora puede transformar rápidamente todos estos usos en constructores con parámetros. Esto puede hacerse desde la declaración del registro record en sí, o bien desde un inicializador de objeto. Además, tenga en cuenta que los DTO que definen un constructor con asignaciones de propiedad se pueden convertir.

Desde hace algún tiempo, Rider muestra advertencias sobre bloqueos incoherentes en campos. En esta versión, añadimos una inspección complementaria que también tiene en cuenta el orden de varios recursos bloqueados y le informa sobre posibles ciclos de punto muerto.

Ahora Rider analiza la plausibilidad de las expresiones aritméticas integrales para comprobar si hay tipos de enteros adicionales, como byte, sbyte, short, ushort, uint, long, ulong y enum. Esto le permite evitar ramas de código inalcanzables.

Rendimiento del análisis del código

Hemos reducido el tiempo necesario para los arreglos rápidos y las acciones contextuales que se implementarán cuando se invoquen para una carpeta, proyecto o solución.

Si se habilita Solution-Wide Error Analysis (SWEA) con la función Monitor warnings, Rider ahora usará los resultados de SWEA para omitir fácilmente los archivos sin problemas correspondientes, lo que reduce en gran medida el tiempo empleado en encontrar posibles problemas.

También tenemos buenas noticias para aquellos que no ejecuten SWEA en su solución. Rider utiliza ahora todos los núcleos de la CPU disponibles para ejecutar el análisis del código en paralelo. Esto reduce el tiempo global necesario para ejecutar correcciones rápidas de ámbito y acciones contextuales.

 

Hemos mejorado considerablemente el rendimiento del daemon para archivos que contienen métodos de gran tamaño, como los siguientes:

  • Métodos con expresiones condicionales anidadas o de gran tamaño, expresiones de tupla o expresiones switch.
  • Métodos con un gran número de comprobaciones de tipo (cuando están deshabilitados los tipos de referencias que aceptan valores null).
  • Métodos con una gran cantidad de accesos de indexador (cuando están habilitados los tipos de referencias que aceptan valores null).
  • Métodos con un gran número de clausuras (cuando están habilitados los tipos de referencias que aceptan valores null).

Inyecciones de lenguaje SQL

Hemos mejorado la compatibilidad con las inyecciones de lenguaje SQL. Ahora admitimos un gran número de casos comunes en los que se escribe código SQL dentro del código C#.

Las cadenas de consulta SQL se resuelven correctamente para los métodos string.Format, las interpolaciones de cadenas y las concatenaciones simples de cadenas.

Ya no se producen errores cuando se utilizan variables SQLParameter para parámetros dentro de cadenas de consulta SQL con el dialecto de Microsoft SQL Server o la biblioteca Dapper.

Zona de juegos

Unity

Esta versión incorpora importantes actualizaciones a la compatibilidad de Rider con los archivos de definición de conjuntos. Puede utilizar Ctrl+Clic para navegar hasta una referencia; encontrar usos de definiciones de conjuntos en todo el proyecto, incluso en paquetes referenciados; renombrar definiciones de conjuntos y obtener la finalización al añadir nuevas referencias.

Rider también trabajará con referencias basadas en GUID, mostrando un consejo útil con el nombre de la definición del ensamblaje de destino, así como acciones Alt+Intro para convertir entre referencias con nombre y basadas en GUID.

Rider resaltará ahora las «define constraints» no cumplidas en los archivos de definición de conjuntos. De este modo, es fácil ver por qué se ha excluido un conjunto. ¡Incluso se finalizan los símbolos define!

La configuración de version defines también se ha simplificado, con la finalización de los nombres de los paquetes y un consejo insertado para la versión instalada actualmente. Rider también resaltará el símbolo si no se cumple la condición.

Rider mostrará ahora los archivos fuente de los paquetes de Unity referenciados en un contexto especial que proporciona información sobre qué símbolos se definieron cuando se compilaron los paquetes. Esto significa que los archivos fuente se mostrarán con las ramas correctas del preprocesador resaltadas.

El atributo [Tooltip] de Unity proporciona un texto que Inspector puede mostrar al editar los campos. Rider también mostrará este texto como parte de la ventana emergente Quick Documentation, siempre que esté utilizando un campo serializado. También hay una nueva acción contextual para crear la descripción emergente a partir de la documentación XML y viceversa.

La compatibilidad de Rider con la depuración en dispositivos iOS a través de USB se ha actualizado para que funcione con Apple Silicon, y esta versión también añade compatibilidad con Linux.

El índice de activos ahora busca en paquetes referenciados, lo que significa que Rider puede encontrar en paquetes usos de código en prefabricados basados en activos.

El seguimiento de los metaarchivos se ha reescrito por completo para abordar más casos de uso. Debería funcionar sin problemas al añadir, eliminar, renombrar, mover o refactorizar archivos en la ventana de herramientas Unity Explorer.

Esta versión también proporciona las correcciones habituales, como la actualización del índice de activos cuando el archivo está siendo actualizado por ciertos tipos de aplicaciones externas, la apertura de archivos de Unity en Apple Silicon, y la actualización del análisis Burst para que coincida con los cambios en el compilador Burst. También hemos mejorado el rendimiento de Rider a la hora de buscar versiones de Unity instaladas y de actualizar la ventana de herramientas de visualización de registros de Unity.

Unreal Engine Vista preliminar

Pruebas de Unreal Engine

Si añade pruebas a su juego con el marco de pruebas de Unreal Engine, Rider ahora puede lanzar pruebas por usted y mostrar sus resultados en la ventana de herramientas Unit Test. En esta ventana de herramientas puede revisar los resultados de las pruebas y volver a ejecutar las que desee: pruebas específicas, fallidas o todas. También puede agrupar las pruebas por las etiquetas que se les han asignado.

Más información

Rider para Unreal Engine está avanzando en su camino desde la vista previa pública hasta la versión final. Por ahora, sigue siendo una vista previa gratuita como un build de Rider independiente que está disponible al enviar un formulario.

Marcos de trabajo

WPF

La vista previa de XAML ahora funciona para las aplicaciones dirigidas a los SDK .NET 6, .NET 5 y .NET Core 3.x. Puede previsualizar los resultados de cualquier cambio que realice en el código XAML directamente en Rider.

Xamarin

  • En el editor Plist hemos implementado compatibilidad con los esquemas estándar de Xcode. Ayudan a Rider a proporcionar nombres prácticos para las claves, validación de valores según el tipo de clave y una lista de posibles claves cuando se añade una nueva a plist. Estos esquemas funcionan tanto en macOS como en Windows.
  • Ahora puede descargar componentes de Android como paquetes NuGet directamente desde el editor.
  • La compatibilidad con las bibliotecas de AndroidX está disponible para los proyectos que las admiten.
  • Hemos mejorado el diseño del editor de Android.

Limpieza de código, formateo y estilos de código

Reformat and Cleanup on Save

Hemos introducido la opción Reformat and Cleanup on Save. Esta función hace que su código se reformatee y ordene cada vez que invoque explícitamente Save o Save All en el IDE. Todos los desencadenantes implícitos de guardar, como crear, cambiar a otra pestaña y confirmar, no harán que el código se reformatee. En su lugar, Rider añadirá el documento modificado a una lista interna de archivos que se limpiarán y reformatearán la próxima vez que guarde explícitamente. Esperamos que esta funcionalidad le ayude a mantener su código bien ordenado y le ahorre la molestia de tener que encargarse de ello.

Para activar y ajustar esta opción, vaya a Preferences/Settings | Tools | Actions on Save. Aquí puede seleccionar el perfil de limpieza que se utilizará. La lista de los perfiles disponibles se hereda de la página Preferences/Settings | Editor | Code Cleanup. También puede especificar si la acción debe aplicarse a todo el archivo o solo a las líneas modificadas.

Además, la funcionalidad Reformat and Cleanup on Save respeta la opción de no formatear Do not format. Para especificar los archivos y directorios que se deben excluir del formateo, utilice la pestaña Preferences/Settings | Editor | Code Style | Formatter.

Otras mejoras

La funcionalidad Reformat and Cleanup funciona con varios archivos y directorios seleccionados en la ventana de herramientas Solution Explorer.

Hemos añadido nuevas opciones al formateador:

  • Una opción para aplicar la sangría en los paréntesis de los patrones lambda o de las propiedades dentro de las condiciones de las declaraciones, como dentro de if() y while().
  • Una opción para alinear las condiciones de las declaraciones dentro de los paréntesis en if(), foreach(), etc. Está activada de forma predeterminada.
  • Opciones para ajustar, recortar, alinear y quitar sangría en patrones binarios, por ejemplo, x is Foo o Bar o Baz.

A partir del SDK .NET 5, puede configurar las opciones del analizador de Visual Studio con archivos globales AnalyzerConfig. Rider 2021.3 puede leer información de estilo del código de estos archivos AnalyzerConfig globales y usarla para ajustar las reglas de Rider en consecuencia.

Desarrollo web

Nueva inspección para actualizar las dependencias

Rider 2021.3 le permite actualizar sus paquetes npm a la última versión ¡directamente desde el editor! Abra su archivo package.json, sitúe el signo de intercalación sobre la versión del paquete que desee actualizar, pulse Alt+Intro y seleccione Update ‘nombre del paquete’ to the latest version. También se mostrará un arreglo rápido cuando pase el ratón por encima de la versión del paquete. Encontrará más detalles sobre los motivos de esta inspección en este artículo del blog.

Mejor finalización de código en HTML

Hemos mejorado el funcionamiento de la finalización del código en los archivos HTML. Cada vez que escriba un nombre de etiqueta o una abreviatura en el editor, o invoque la finalización de código, Rider le mostrará sugerencias relevantes de inmediato. Anteriormente, solo se mostraban si se escribía < primero. Además, la finalización de código para las referencias a entidades de caracteres debería funcionar mejor ahora.

Compatibilidad con NuGet

Rider puede generar Binding Redirects para paquetes NuGet en proyectos de .NET Framework. Si necesita Binding Redirects en su proyecto, Rider los añadirá al archivo App.config o Web.config.

Los Binding Redirects se generan cuando se instala o actualiza un paquete NuGet. Sin embargo, puede pedirle a Rider que genere los Binding Redirects manualmente en cualquier momento a través de Tools | Generate Binding Redirects, ubicado en el menú contextual del proyecto dentro de la ventana de herramientas Solution Explorer.

Dispone de una nueva propiedad, Auto-Generate Binding Redirects, en la pestaña Applications de la página Properties del proyecto. Pide a MSBuild que genere Binding Redirects mientras se compila el proyecto si no hay redirecciones en el archivo App.config.

Además de añadir compatibilidad con Binding Redirects, hemos implementado una pequeña mejora en la experiencia del usuario. Ahora puede desinstalar los paquetes NuGet directamente desde la ventana de herramientas Solution Explorer.

Compatibilidad con Apple Silicon

A partir de esta versión, Rider funciona de forma nativa en ordenadores Mac con procesadores Apple Silicon. Rider 2021.3 utiliza los siguientes tiempos de ejecución:

  • El JetBrains Runtime compatible con Apple Silicon para el frontend.
  • El RTM .NET6 para el backend.

¡Se acabó traducir de x64 a ARM64! ¡Rider es ahora superrápido en los chips de Apple!

Compatibilidad con F#

La mayor novedad es que ¡Rider ya es oficialmente compatible con F# 6! En esta versión, también encontrará muchas actualizaciones de calidad para la finalización de código, refactorizaciones y navegación, junto con varias otras mejoras para la compatibilidad con el lenguaje F#.

La refactorización Introduce Variable ha recibido algunas actualizaciones potentes. Ahora sugiere que se deconstruyan las tuplas y los tipos union de caso único cuando sea necesario, y también sugiere el uso de tipos de computación en las expresiones de computación. Además, se recomiendan las palabras clave use y use! cuando corresponda, y se ha mejorado la colocación de la vinculación añadida.

Esta versión contiene una serie de actualizaciones para la finalización de código, incluyendo un mejor orden de sugerencias y un filtrado inicial de palabras clave basado en el contexto (algunas palabras clave ya no aparecen cuando no son aplicables). Utilizar funciones F# de forma recursiva es ahora más fácil, ya que no hay que volver atrás y añadir manualmente rec a la función contenedora.

Y cuenta con otra actualización destacada para la finalización de código. Al completar los patrones de casos de unión, Rider le sugerirá que utilice la coincidencia de patrones para sus campos.

Los nuevos iconos en los resultados de Find Usages le ayudarán a distinguir las invocaciones, las aplicaciones parciales, los patrones y otros tipos de uso.

Rider ahora le permite extender adecuadamente la selección dentro de las cadenas interpoladas. Special thanks to Andrew Rublyov for this contribution! También se ha mejorado el comportamiento de selección para _ y varios tipos de corchetes.

Hemos implementado una serie de pequeños arreglos rápidos, refactorizaciones y otras mejoras en la compatibilidad con F#. Please take a look at the full release notes for more information.

Complementos

dotCover
dotUltimate

Hay una nueva métrica de Code Vision: Covering tests. Esta métrica se muestra si Rider tiene la información de cobertura para el proyecto, y si el método (o propiedad, indexador o evento) está cubierto por al menos una prueba.

Se puede activar o desactivar desde la página de Settings/Preferences | Editor | Code Vision.

Ahora puede iniciar las pruebas de unidades desde una ventana emergente que aparece al hacer clic en la línea de cobertura en la parte izquierda del editor de código.

dotTrace
dotUltimate

El complemento dotTrace le permite recopilar datos sobre las llamadas asíncronas en macOS y Linux. Para obtener estos datos, use el modo de generación de perfiles Timeline. En Call Tree, se muestran las llamadas asíncronas, incluidos los parámetros awaits y continuations.

El complemento dotTrace puede generar perfiles de procesos secundarios de aplicaciones en macOS y Linux en el modo de generación de perfiles Timeline. Esta compatibilidad solo está disponible con aplicaciones .NET 5+.

Navegación y Find Usages

Nuevas marcas de medianil

Hemos añadido algunas marcas más de medianil para ayudarle a navegar rápidamente por la estructura de herencias de una clase, interfaz o struct. Los nuevos iconos ↑O y ↑I ahora muestran una entidad de código que hereda o implementa otra clase o interfaz, respectivamente. Si la herencia de la entidad de código es compleja, al seleccionar un icono, se mostrará un menú con todos sus ascendientes, hasta la parte superior de la jerarquía de herencia. Si una clase implementa o hereda una interfaz y una clase a la vez, Rider mostrará el icono ↑IO en el medianil.

Además, en esta versión hemos habilitado de forma predeterminada la marca de medianil para los miembros de clase. Rider añadirá el icono ↓O en el margen izquierdo junto a un miembro de clase si este se ha reemplazado en las clases derivadas. Al hacer clic en el icono:

  • Navegará a un miembro en una clase derivada que reemplace al miembro.
  • Se mostrará un menú con una lista de miembros de clase de otras clases que reemplazan al miembro.

Find Usages para operadores de conversión implícita definidos por el usuario

¡Ahora puede llamar a Find Usages para los operadores de conversión implícita definidos por el usuario! La implementación de esta funcionalidad se basa en el mecanismo usado para las sugerencias de conversión de tipos.

Permite averiguar si se utilizan operadores de conversión implícitos definidos por el usuario y, a continuación, navegar hasta los bloques de código con conversiones.

Tenga en cuenta que este algoritmo no es rápido y puede tardar bastante tiempo en calcular y mostrar los resultados.

Compatibilidad con bases de datos

Agregados en el editor de datos

Hemos añadido la posibilidad de mostrar una vista Aggregate para un rango de celdas. Se trata de una función muy esperada que le ayudará a gestionar sus datos y le evitará tener que realizar consultas adicionales. Esto hace que el editor de datos sea más potente y fácil de usar, y lo hace más parecido a Excel y a las Hojas de cálculo de Google.

Seleccione el rango de celdas para el que desea la vista, haga clic con el botón derecho y seleccione Show Aggregate View.

Asignación de la fuente de datos DDL y la fuente real

Esta versión es una continuación lógica de la anterior, que introdujo la posibilidad de generar una fuente de datos DDL basada en una real. Ahora, este flujo de trabajo es totalmente compatible. Puede:

  • Generar una fuentes de datos DDL a partir de una real: consulte el anuncio de DataGrip 2021.2.
  • Asignar una fuente de datos DDL a una real.
  • Compararlas y sincronizarlas en ambas direcciones.

Como recordatorio, una fuente de datos DDL es una fuente de datos virtual cuyo esquema se basa en un conjunto de scripts SQL. Almacenar dichos archivos en el sistema de control de versiones es una manera de conservar su base de datos dentro de este sistema.

Hay una nueva pestaña en las propiedades de configuración de datos, DDL mappings, donde se puede definir qué fuente de datos real se asigna a cada fuente de datos DDL.

Nueva ventana de diff de base de datos

La nueva ventana Database Diff está disponible en el menú contextual. Tiene una mejor interfaz de usuario y muestra claramente en el panel derecho el resultado que obtendrá después de realizar la sincronización.

La leyenda del panel derecho muestra el significado de los colores que pueden aparecer en los resultados:

  • Verde y cursiva: el objeto se creará.
  • Gris: el objeto se eliminará.
  • Azul: el objeto se modificará.

La pestaña Script Preview muestra el script resultante, que puede abrirse en una nueva consola o ejecutarse desde este cuadro de diálogo. El resultado de este script es la aplicación de cambios para que la base de datos de la derecha (destino) sea una copia de la base de datos de la izquierda (origen).

Además de la pestaña Script preview, hay dos pestañas más en el panel inferior: Object Properties Diff y DDL Diff, que muestran la diferencia entre las versiones concretas del objeto en las bases de datos de origen y de destino.

Otros

Propiedades del proyecto

Esta versión incorpora varios ajustes nuevos al cuadro de diálogo Project Properties:

  • Puede personalizar el icono de la aplicación en la sección Resources de la página Application.
  • Hay una nueva página Build events para especificar los comandos que se ejecutarán antes y después de la compilación.
  • La página Inspections tiene varias propiedades de proyecto nuevas relacionadas con el análisis de código: Localizable, Localizable inspector y Solution-Wide inspections.
  • Puede configurar las rutas de referencia de un proyecto en la página Reference Paths.
  • Hay una nueva propiedad, Auto-Generate Binding Redirects, en la pestaña Applications. Consulte la sección sobre compatibilidad con NuGet más arriba para saber más sobre Binding Redirects.

Propiedades de solución

La tabla del cuadro de diálogo Solution Properties tiene una nueva columna Dependencies para especificar las dependencias de build de cada proyecto. Algunos de los proyectos no se pueden seleccionar para evitar las dependencias circulares.

Configuraciones de ejecución

A partir de la versión 2021.3, Rider importa todos los archivos .pubxml de Properties/PublishProfiles cuando se carga un proyecto, y los convierte en configuraciones de ejecución. Cada vez que se añade un nuevo archivo .pubxml, se genera automáticamente una nueva configuración de ejecución. Ya no es necesario crear estas configuraciones de ejecución manualmente.

Hay un selector de tiempo de ejecución explícito para especificar el tiempo de ejecución en el que se ejecutará la aplicación. La lista depende del sistema operativo que utilice, pero la lista completa contiene: .NET/.NET Core, .NET Framework y Mono.

Compatibilidad con el atributo EditorBrowsable en la finalización de código

Ahora puede ajustar la lista de finalización de código para filtrar los elementos de acuerdo con el atributo EditorBrowsable. Solo tiene que seleccionar el comportamiento que desee en la página Preferences | Editor | General | Code Completion en Filter members by EditorBrowsable attribute.

Cambiar el tamaño de la letra en todas las pestañas

Como nos han solicitado, hemos hecho posible cambiar el tamaño de la fuente en todas las pestañas abiertas simultáneamente con +rueda del ratón en macOS o Ctrl+rueda del ratón en Windows y Linux. Para habilitar esta función, vaya a Preferences/ Settings | Editor | General, escoja Change font size with Command + Mouse Wheel in y seleccione All editors. Si selecciona Active editor, el acceso directo cambiará el tamaño de la fuente solo en el archivo en el que está trabajando actualmente.