Rider 2022.3 es compatible con el SDK de .NET 7, que incluye las últimas funcionalidades de C# 11. En esta versión se ha mejorado bastante el rendimiento, en especial en lo que respecta al tiempo de inicialización y la capacidad de ejecutar Rider en WSL 2 (Subsistema de Windows para Linux 2) mediante desarrollo remoto. También hemos introducido varios cambios importantes en la experiencia y la interfaz de usuario, como la posibilidad de anclar las ventanas de herramientas en configuraciones multimonitor. Por último, pero no por ello menos importante, esta versión profundiza en la integración con los editores de Unity y Unreal.
Hemos realizado varios cambios para aumentar la velocidad de inicio de Rider y reducir el tiempo que tarda en abrir una solución y ponerse a trabajar:
Obtenga más información acerca de las mejoras de rendimiento de Rider aquí.
Ahora Rider es compatible con WSL 2 (Subsistema de Windows para Linux 2) gracias a la funcionalidad de desarrollo remoto del IDE. Esto significa que puede utilizar Rider en una instancia de WSL 2 para navegar por sus soluciones y fuentes, así como para crear, depurar y ejecutar aplicaciones como si estuvieran almacenadas de forma local.
Se puede iniciar un proceso de configuración sencillo desde la pantalla de bienvenida de Rider. La interfaz de usuario se mostrará a través de la funcionalidad de desarrollo remoto, lo que significa que no hará falta recurrir a WSLg y se instalará de forma automática un cliente local RemoteDev. Para obtener más información, consulte la documentación de desarrollo remoto.
Ya está aquí la esperada opción de anclar las ventanas de herramientas a las pestañas flotantes del editor. Para que la organización del espacio de trabajo y la interacción con Rider en varios monitores sea más cómoda, hemos implementado la opción de arrastrar las ventanas de herramientas fuera de la ventana principal y anclarlas a las pestañas flotantes del editor.
Hemos perfeccionado el algoritmo que hay detrás de la lista de resultados de Search Everywhere para que su comportamiento sea más predecible y la selección de los elementos que se buscan, más precisa. Ahora, cuando empiece a escribir la consulta, el IDE retendrá los primeros resultados de búsqueda que aparecen y no los reordenará cuando se encuentren más opciones (como ocurría en las versiones anteriores).
Hemos incluido el cuadro de diálogo Attach to process para mejorar la experiencia de usuario, en especial al vincularse a un proceso con SSH. Nuestro objetivo es ayudarle a encontrar y seleccionar el proceso correcto más rápidamente, y hacer que el IDE recuerde el depurador elegido.
Hemos mejorado la experiencia de edición modificando el comportamiento de la acción de pegar (⌘V / Ctrl+V). Ahora cuando copie (⌘C /Ctrl+C) o corte (⌘X /Ctrl+X) una línea sin ningún código seleccionado, la acción de pegar añadirá el contenido del portapapeles por encima de la línea actual, y no en su signo de intercalación, como hacía en versiones anteriores.
Ahora, la acción Edit | Paste Special: JSON as Classes
le permite pegar objetos «de forma inteligente». Por ejemplo, si copiara un JSON y lo pegara utilizando esta acción, se generarían clases C# de forma automática basadas en ese JSON.
Le invitamos a que cambie a la nueva interfaz de usuario para los IDE basados en IntelliJ desde Preferences/Settings | Appearance & Behavior | New UI Preview
. La nueva interfaz de usuario sigue trabajando en reducir la complejidad visual del IDE para que pueda centrarse en su trabajo.
Además, seguimos añadiendo pequeñas mejoras en la experiencia y la interfaz de usuario de Rider para que sea más relevante y útil:
File | New
del menú principal por File | New Solution
para que refleje mejor la acción real que ejecutará. Rider 2022.3 ofrece oficialmente compatibilidad con el SDK .NET 7, incluido lo siguiente:
ref
y la palabra clave scoped
. Hemos añadido compatibilidad básica con literales UTF-8
. Ahora, el análisis de código propone usar un sufijo u8
para un literal en lugar del método System.Text.Encoding.UTF8.GetBytes()
o una matriz de bytes con los símbolos UTF8
adecuados. También hemos añadido una serie de advertencias y errores del compilador para los literales UTF-8.
La compatibilidad básica con los tipos de archivo local permite entender la nueva sintaxis, e incluye un modificador de accesibilidad de file
para los tipos, y advertencias y errores del compilador con las correspondientes soluciones rápidas, como Move class to outer scope cuando se especifica el modificador file
para una clase anidada. También hay una acción contextual muy útil para convertir un tipo general en uno de archivo.
Ahora, Rider puede convertir cadenas regulares y literales en cadenas sin formato. Esto también significa que ahora hay muchas funcionalidades para las cadenas que están disponibles para las cadenas sin formato.
En esta versión, hemos introducido sugerencias para utilizar la nueva sintaxis de patrón de lista de C# 11 (en lugar de las comprobaciones convencionales de la longitud de la colección con la consiguiente expresión de acceso al indexador) para comprobar los elementos correspondientes de la colección.
A partir de C# 11, puede utilizar modificadores abstract
y virtual
para los miembros static
de las interfaces y utilizar dichos miembros en el código genérico con parámetros de tipo limitados por esta interfaz. Rider se ha actualizado para manejar los miembros polimórficos de tipo static
de la misma manera que se manejan los ordinarios:
override
también incluyen a los miembros de la interfaz, por lo que ahora puede implementar fácilmente miembros abstractos o virtual static
. >>>
) Ahora, Rider reconoce el engorroso patrón de código que tienen que escribir los desarrolladores de C# para desplazarse a la derecha sin signo para los tipos de datos con signo y propone utilizar el operador de desplazamiento a la derecha sin signo (>>>
) en C# 11.
Si analiza Spans de caracteres, probablemente utilice mucho el método MemoryExtensions.SequenceEqual
. C# 11 incluye un atajo para este tipo de comprobación. Ahora puede, simplemente, comparar los patrones de los Spans de caracteres con los literales de cadena con las expresiones is
o switch
.
Rider propone usar las expresiones is
o switch
en lugar de muchas declaraciones if
.
ref
y palabra clave scoped
A partir de C#11, se permite declarar campos ref
dentro de las estructuras ref
. Rider admite esta nueva regla sintáctica, proporciona todos los errores y advertencias del compilador, muestra la palabra clave ref
en la finalización del código y permite que dichos campos se inicialicen en un constructor.
Rider también conoce la nueva palabra clave scoped
, que puede utilizar en argumentos ref
o ref struct
y en variables locales. La compatibilidad incluye el análisis correcto de la nueva sintaxis, la palabra clave scoped
en la finalización del código y la preservación de la palabra clave scoped
al generar anulaciones de métodos. También verifica la compatibilidad de los modificadores scoped
y ofrece arreglos rápidos para los parámetros scoped
que no coincidan en las anulaciones, las implementaciones de interfaces y las conversiones de delegados.
C# 11 y .NET 7 también han introducido cambios en las reglas de seguridad ref
del lenguaje. Los cambios regulan las operaciones disponibles para las variables ref
y ref struct
con el fin de proporcionar seguridad ref en el código gestionado con la introducción de los campos ref
. Rider conoce los cambios y le ayudará a encontrar las partes de su proyecto que necesitan actualizarse y anotarse con la nueva palabra clave scoped
para adecuarse a los cambios al migrar a C# 11 o .NET 7.
Este build incorpora una serie de mejoras en la inyección de lenguaje:
Hemos añadido la compatibilidad con inyecciones de lenguaje utilizando los atributos [StringSyntax]
(de .NET 7) y [LanguageInjection]
(de JetBrains.Annotations), así como compatibilidad para el comentario de instrucción de inyecciones de lenguaje // lang=<language_name>
.
Ahora es posible realizar inyecciones de lenguaje en cadenas interpoladas y concatenaciones de cadenas en cualquier lenguaje, mientras que antes solo estaba disponible para SQL. Tenga en cuenta que los errores de sintaxis se suprimen cuando se utiliza la interpolación de cadenas o la concatenación con expresiones arbitrarias. También se admiten las inyecciones de lenguaje dentro de las cadenas sin formato de C# 11.
Ahora se muestra una guía de sangría que separa la sangría del valor real en las cadenas sin formato.
Hay un nuevo icono de marca de medianil para notificar a los usuarios las importaciones implícitas de espacios de nombres en C# y los archivos Razor.
Al pulsar Alt+Intro en la línea correspondiente, verá la lista completa de importaciones implícitas y la información sobre el archivo fuente donde se encuentran las correspondientes directivas global using
. Si selecciona un espacio de nombres importado, Rider puede navegar hasta donde está declarado, además de a las etiquetas <Using Include="Some.NameSpace" />
en el archivo de proyecto .csproj
.
Rider también presenta las importaciones generales de _Imports.razor
y permite la navegación a las definiciones de importación correspondientes.
Para agilizar y acelerar su proceso de desarrollo, hemos introducido la clasificación de elementos asistida por aprendizaje automático para las opciones de finalización de código en C#.
Para mejorar su experiencia en el uso de esta función, hay dos opciones que puede habilitar en Settings/Preferences | Editor | General | Code Completion | Machine Learning-assisted Completion
:
Con la incorporación de los tipos numéricos Int128
y UInt128
en .NET 7, hemos actualizado nuestras sugerencias de especificación de formato de finalización de código.
También hemos añadido la compatibilidad que faltaba con los tipos de fecha y hora DateOnly
y TimeOnly
de .NET 6, así como con el tipo numérico de coma flotante de precisión media Half
introducido en .NET 5.
A veces, después de la refactorización, las expresiones de coincidencia de patrones pueden convertirse en patrones recursivos triviales. En este punto puede que no merezca la pena utilizar la sintaxis de los patrones recursivos, por lo que ahora Rider puede convertir los patrones en expresiones más sencillas conservando la semántica original de la concordancia de patrones.
A veces, al escribir después de una invocación, apenas se ven sugerencias significativas. Esto puede ocurrir si la invocación no produjo ningún valor al llamar al método que devolvía un void
. Normalmente, se necesitan algunas acciones del IDE para darse cuenta de ello (volver atrás y navegar hasta la declaración del método, o pasar el ratón por encima de la invocación). En esta versión, hemos introducido el consejo void
para este tipo de invocación que devuelve void
para informarle de inmediato sobre el tipo resultante de la invocación. Al aceptar este elemento void
, se añadirá un punto y coma después de la invocación si este falta.
Rider 2022.3 introduce Hot Reload para las aplicaciones de Blazor Server. Al modificar el código fuente en la aplicación Blazor Server 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.
En respuesta a una petición popular de nuestra comunidad, hemos añadido la nueva configuración de ejecución IIS Application
para ejecutar y depurar aplicaciones ASP.NET clásicas en un servidor IIS. También hemos introducido compatibilidad con el nombre del comando IIS
desde el archivo launchSettings.json
para aplicaciones ASP.NET Core.
Seguimos mejorando la compatibilidad con los puntos de conexión y el visor de puntos de conexión Endpoint Viewer. Ahora, el visor reconoce y recoge correctamente los puntos de conexión para los grupos de rutas de la API mínima de ASP.NET Core 7. Esto significa que puede buscar, navegar y utilizar la finalización de código inteligente en los puntos de conexión declarados con la API MapGroup()
, además de las funcionalidades que ya estaban disponibles.
Se ha añadido la acción .NET User Secrets en los proyectos ASP.NET.
Rider ahora genera de forma automática una configuración de ejecución npm
para los proyectos web JavaScript y TypeScript (.esproj
) referenciados por la solución (.sln
).
Los consejos de inserción de Code Vision ahora también funcionan para JavaScript y TypeScript. Estos consejos facilitarán el seguimiento de los usos de varias clases, métodos, alias de tipos e interfaces en su código.
El IDE ahora entiende la regla «at» @supports
, que asocia un bloque de declaraciones con una condición @supports
. This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.
Hemos añadido la compatibilidad con el acotado de tipos en las plantillas de Angular, lo que proporcionará una información más precisa sobre los tipos y mejores sugerencias de finalización de código.
Además, Rider ahora excluye la carpeta de caché .angular
de las búsquedas globales para ayudar a lograr mejores resultados de búsqueda.
Estamos actualizando la compatibilidad con Unity en Rider, con algunas nuevas funcionalidades, mejoras en la funcionalidad existente y algunas correcciones.
Hemos añadido la compatibilidad con el nuevo paquete Input System de Unity. Rider reconocerá si los métodos se utilizan como controladores de eventos para las entradas y no los mostrará como no usados. Find Usages también funciona en estos métodos, mostrando dónde se usan en el código o en el archivo .inputactions
.
Es genial poder cargar los recursos del juego durante la ejecución, y ahora Rider le ayuda a asegurarse de que está usando la ruta correcta en los métodos Resources.Load
. Muestra la finalización del código mientras escribe y resalta cualquier recurso desconocido con una advertencia.
Rider ha ofrecido la finalización y la verificación de los nombres de las etiquetas durante varias versiones, pero la versión 2022.3 también es compatible con el grupo de métodos GameObject.FindWithTag
. Ofrece finalización de código mientras escribe y le avisa si intenta usar una etiqueta que no existe en el proyecto.
En los proyectos de Unity, es muy importante tener los archivos meta sincronizados con los archivos y las carpetas. Rider 2022.3 le advertirá si intenta confirmar un archivo meta para una carpeta vacía en el control de fuentes. Y eso no es todo: si el editor de Unity está abierto, Rider le avisará si hay escenas o activos sin guardar, lo que le garantizará que no se perderán los cambios cuando confirme.
Por supuesto, también hay muchas mejoras y correcciones menores. Hemos reducido el tiempo que se tarda en cargar proyectos particularmente grandes, hemos añadido una notificación que aparece al intentar editar un archivo de paquete de solo lectura, y hemos mejorado Find Usages para que pueda utilizarse con métodos en prefabricados anidados y matrices de controladores de eventos.
Con la compatibilidad con DOTS, ahora Rider sabe que no debe marcar las clases que implementan IBaker
o IAspect
como no utilizadas.
Puede desactivar las inspecciones de nombres para los campos serializados y hacer que se traten igual que los campos normales, y ahora los enlaces a la documentación en línea apuntan a los lugares correctos.
También nos gustaría dar las gracias a Unity por proporcionar una corrección que ayude a depurar los jugadores en Nintendo Switch.
Rider ya ofrece la opción de añadir CoreRedirects al renombrar las clases o propiedades de Unreal a través de la refactorización Rename. Ahora, esto también funciona para renombrar:
UFUNCTION()
USTRUCT()
UENUM
Al ejecutar la refactorización Rename, ahora Rider propone añadir CoreRedirects en estos casos.
Si está de acuerdo, el archivo .ini
correspondiente se actualizará de forma automática.
Ahora es mucho más difícil estropear el juego sin querer por haber cambiado el nombre de algo.
Rider 2022.3 introduce una nueva métrica de Code Vision específica para Blueprints. Ahora puede comprobar rápidamente cuántos Blueprints utilizan la función BlueprintCallable
y obtener una lista de todos los usos desde el menú contextual de Code Vision.
Ahora la herramienta Generate GUID es compatible con el formato GUID de Unreal Engine. Cuando necesite generar rápidamente un GUID, solo tiene que elegir Tools | Generate GUID...
en el menú, y se preseleccionará el formato hexadecimal preferido.
La funcionalidad de importación automática tras la finalización puede ahorrarle mucho tiempo. Sin embargo, si añade una directiva #include
incorrecta, el problema puede ser difícil de detectar. Hemos trabajado duro para pulir esta funcionalidad y asegurarnos de que no sugiere entidades no deseadas procedentes de los encabezados del sistema en la importación automática. De forma predeterminada, los encabezados del sistema no se sugieren, pero si quiere que lo hagan, puede habilitarlos en Settings/Preferences | Languages & Frameworks | C++ | Unreal Engine
.
Hemos mejorado la presentación de los registros de UnrealBuildTool. Para que no se pierda ninguna advertencia o error relacionado con las configuraciones del proyecto, ahora el panel de registro incluye marcas de tiempo y conserva los registros de las ejecuciones anteriores de UnrealBuildTool.
.uproject
En el caso de los proyectos basados en Unreal Engine, Rider funciona con proyectos .sln
y .uproject
. Seguimos mejorando la compatibilidad del modelo nativo .uproject
para que sea más preciso y ergonómico:
.project
, en concreto AdditionalRootDirectories
y AdditionalPluginDirectories
. .Build.cs
para los módulos específicos de la plataforma. .uplugin
y .uproject
son compatibles si utiliza el modelo de proyecto .uproject
. .uproject
. Hemos implementado la acción Attach to Unreal Editor para los proyectos de Unreal Engine. Permite unirse rápidamente a un proceso de Unreal Engine en lugar de tener que buscar manualmente el correcto. Actualmente, solo es posible unirse al proceso al que está conectado UnrealLink, lo que significa que el proyecto que se ejecuta en Unreal Editor y aquel en el que está trabajando en Rider deben coincidir. Estamos trabajando para mejorar este flujo de trabajo en futuras versiones.
Ahora Rider 2022.3 puede ejecutarse en Windows y Linux ARM64. Todos los flujos de trabajo de desarrollo básicos son compatibles, incluidas la ejecución y la depuración de sus aplicaciones .NET y la ejecución de pruebas de unidad. Sin embargo, mientras seguimos trabajando y realizando pruebas para asegurarnos de que Rider funcione sin problemas con los procesadores ARM64, nos gustaría que tuviera en cuenta las siguientes limitaciones:
Además de en Windows, dotMemory ya está disponible para JetBrains Rider en Linux y macOS. Hay dos nuevos modos de generación de perfiles disponibles en el widget Run y en el menú Run | Switch profiler configuration
: Memory (sampled allocations) y Memory (full allocations). Puede obtener más información acerca de las diferencias entre estos en la ayuda de dotMemory.
Puede adjuntar el generador de perfiles a un proceso en ejecución desde el menú Run y ver el Timeline Graph desplegarse en tiempo real. Seleccione un intervalo para abrir la vista Memory Allocations, que es la misma que en dotMemory Standalone. Le permite analizar los objetos asignados y el árbol de llamadas de asignación para un periodo de tiempo específico.
Por desgracia, en esta versión todavía no es posible recopilar instantáneas de memoria.
El análisis dinámico de programas (Dynamic Program Analysis - DPA) cuenta con nuevas inspecciones que permiten encontrar incidencias relacionadas con el uso de la base de datos, por ejemplo cuando:
Las nuevas inspecciones están disponibles para todas las aplicaciones que utilizan Entity Framework Core y un proveedor de datos .NET para SQL Server.
Hemos añadido la acción Show Covering Tests a los menús contextuales de dotCover tanto en el editor de código como en la ventana Unit Test Coverage. Esta acción muestra una ventana emergente que contiene todas las pruebas de cobertura. La ventana emergente también permite crear una nueva sesión de cobertura.
Ahora dotCover solo copia los grupos y los archivos de símbolos necesarios para las pruebas continuas en JetBrains Rider. Esto mejora el rendimiento general de dotCover, especialmente en proyectos grandes, ya que no necesita copiar todo el directorio de trabajo. Si es necesario, puede ajustar el filtro de archivos de instantáneas en la configuración de dotCover.
Antes, para analizar la cobertura de las pruebas de Unity había que reiniciar Unity con la compatibilidad con la cobertura activada. A partir de esta versión, ya no es necesario reiniciar Unity y la compatibilidad con las pruebas está garantizada.
La gestión centralizada de paquetes (CPM, por sus siglas en inglés, y también conocida como archivo Directory.Packages.props
) es una funcionalidad evolutiva de la pila de tecnología de .NET y, a medida que va mejorando, facilita la gestión de soluciones en el futuro. Con la incorporación de CPM en Rider, los desarrolladores deberían tener más control sobre sus dependencias.
En este artículo del blog, podrá aprender todo sobre la gestión centralizada de paquetes, incluidos consejos y advertencias.
Siempre que utilice paquetes NuGet de código abierto en sus soluciones, se arriesga a exponer su proyecto a vulnerabilidades de seguridad. Para mitigar este riesgo, hemos introducido la detección de dependencias vulnerables en Rider. El IDE le avisará de las dependencias vulnerables asociadas al uso de paquetes NuGet con ventanas emergentes de notificación, que pueden investigarse más a fondo en la sección Security de la vista Problems. La información sobre las dependencias vulnerables asociadas a los paquetes incluidos en la solución también se puede encontrar en la ventana NuGet Package Management si selecciona un paquete concreto.
También hemos mejorado la experiencia de desplazamiento dentro de la lista Packages en la ventana de herramientas NuGet.
Rider 2022.3 es compatible con F# 7, incluye varias correcciones de pequeños problemas y añade algunas mejoras ergonómicas.
Si escribe <
dentro de un comentario, se añadirá una plantilla de documentación. Además, el resaltado de sintaxis y la finalización de código facilitan la edición de los comentarios de la documentación.
Una nueva regla de finalización de código simplifica la escritura de expresiones record
, ya que hace hincapié en los campos del tipo record
inferido, oculta los que ya se utilizan y soluciona varios casos en los que antes no se mostraban sugerencias.
Hemos añadido los arreglos rápidos Update parameter name y Update record field, que actualizan los archivos de firma, con lo que es más fácil usarlos al cambiar el código. A huge thanks goes to Florian Verdonck for implementing them!
Estos son solo los aspectos más destacados de las mejoras de la compatibilidad con F#. You can find the full list of F# features included in the 2022.3 release here.
A continuación presentamos algunas de funcionalidades nuevas de Rider 2022.3 para trabajar con bases de datos:
Más información: Novedades de DataGrip 2022.3
Ahora, la ventana de herramientas IL Viewer puede descompilar código en diferentes niveles de conceptos del lenguaje C#. Hay dos niveles de C# disponibles: el nivel alto, con ciertas construcciones sintácticas simplificadas utilizando las últimas funcionalidades del lenguaje, y el nivel bajo, para los casos en los que desee saber cuál es el estado bruto de estas construcciones sintácticas.
Se han revisado los resaltados y los subrayados ondulados del código en Rider 2022.3. Debido a una diferencia en la lógica interna, Rider entraba en conflicto con los analizadores de estilo de código de Microsoft Roslyn, haciendo que mostrara resaltados superpuestos, que dibujara el mismo resaltado en diferentes puntos o que duplicara los subrayados ondulados. Se han resuelto las diferencias en la lógica que hay detrás de la mayoría de estos casos y, para las raras excepciones, los errores se acompañan con sugerencias claras sobre cómo resolver el conflicto.
Además, ahora Rider mostrará la información relativa a Roslyn Analyzer ID y URL Reference en la ventana emergente Quick Documentation para las inspecciones producidas por los analizadores de Roslyn.
Hemos implementado la opción de ejecutar un archivo binario con formato clang directamente, en lugar de usar el motor formateador de Rider, lo que garantiza que sea totalmente compatible con el formateador estándar del sector, y que tenga un rendimiento mejor y una gama más amplia de opciones de formateo. Puede alternar entre las opciones de formato clang integrado y externo yendo a Settings | Editor | Code Style | C++
y seleccionando la opción de Clang-format.
Hemos mejorado drásticamente el rendimiento del depurador con la opción Allow property evaluations and other implicit function calls desactivada. Ahora puede evaluar muchas más expresiones en modo sin efectos secundarios para proyectos .NET, .NET Framework y .NET Core.
Hemos hecho que el árbol del explorador de pruebas de unidad sea «perezoso» para que vaya más rápido y sea menos exigente con la memoria. Antes, todos los nodos se creaban de forma automática junto con el árbol de pruebas de unidad, lo que ralentizaba la exploración y consumía demasiada memoria. Ahora, solo se crearán los nodos que pertenezcan a las partes expandidas del árbol, lo que mejorará notablemente el rendimiento.
32 bits
de MSBuild se queda sin memoria y pasar a utilizar la versión de 64 bits
desde Visual Studio. Se han refactorizado la opción Solution Wide Analysis y el comando Find usages. Según las pruebas internas, su rendimiento medio es entre un 20 % y un 40 % más rápido que antes.