2022LogoNotas de la versión 17.0 de Visual Studio 2022


Sugerencia

Vea las grabaciones del evento de lanzamiento de Visual Studio 2022 para obtener información sobre las novedades, escuchar sugerencias y trucos y descargar recompensas virtuales gratuitas.

Developer Community | Hoja de ruta de Visual Studio 2022 | Requisitos del sistema | Compatibilidad | Código distribuible | Historial de versiones | Términos de licencia | Blogs | Últimos problemas conocidos de la versión | Novedades de Visual Studio Docs


Visual Studio 2022, versión 17.0

El soporte técnico de Visual Studio 2022, versión 17.0, finalizó en julio de 2023, lo que significa que no habrá más actualizaciones de seguridad para esta versión. Los suscriptores de las ediciones Enterprise y Professional que usan el canal LTSC de Visual Studio 2022 17.0 deben adoptar la versión más reciente del Canal actual o LTSC.

Obtenga información sobre las versiones de Visual Studio 2022 y las fechas de soporte técnico.

Obtenga más información sobre el ciclo de vida y el mantenimiento del producto de Visual Studio.

Visite el sitio de Visual Studio para acceder a los vínculos de las versiones más actuales de los productos de Visual Studio 2022. Para obtener instrucciones sobre cómo instalar y actualizar Visual Studio 2022, consulte Actualización de Visual Studio 2022 a la versión más reciente. La Guía para administradores de Visual Studio contiene instrucciones para implementar Visual Studio en toda la organización.

Versiones de Visual Studio 2022, versión 17.0

Blog de Visual Studio 2022

El Blog de Visual Studio 2022 es la fuente oficial de información sobre el producto que ofrece el equipo de ingeniería de Visual Studio. Encontrará información detallada sobre las versiones de Visual Studio 2022 en las publicaciones siguientes:


17.0.23 Visual Studio 2022, versión 17.0.23

Fecha de publicación: 11 de julio de 2023

Problemas solucionados en esta versión de 17.0.23

  • Microsoft es consciente de una vulnerabilidad en la que existe la posibilidad de que se produzca una inserción de direcciones SMTP en la clase SmtpClient. Esto corresponde a CVE-2022-26893 (sin publicar, ya que la gravedad de la vulnerabilidad se valora como media).

Avisos de seguridad corregidos


17.0.22 Visual Studio 2022, versión 17.0.22

publicada el 13 de junio de 2023

Problemas solucionados en esta versión de 17.0.22

  • Microsoft es consciente de una vulnerabilidad en la que existe la posibilidad de que se produzca una inserción de direcciones SMTP en la clase SmtpClient. Esto corresponde a CVE-2022-26893 (sin publicar, ya que la gravedad de la vulnerabilidad se valora como media).

Avisos de seguridad corregidos


17.0.21 Visual Studio 2022, versión 17.0.21

Fecha de publicación 11 de abril de 2023

Problemas solucionados en esta versión de 17.0.21

  • Corrige un bloqueo cuando se envía una entrada no válida al controlador que se utilice durante el entrenamiento de PGO para controladores en modo kernel.
  • Se ha corregido un problema en IIS Express, que podía provocar un bloqueo al actualizar los datos de telemetría.
  • Microsoft es consciente de una vulnerabilidad en la que existe la posibilidad de que se produzca una inserción de direcciones SMTP en la clase SmtpClient. Esto corresponde a CVE-2022-26893 (sin publicar, ya que la gravedad de la vulnerabilidad se valora como media).

Comunidad de desarrolladores

Avisos de seguridad corregidos


17.0.20 Visual Studio 2022, versión 17.0.20

Fecha de publicación 14 de marzo de 2023

Problemas solucionados en esta versión 17.0.20

  • Microsoft es consciente de una vulnerabilidad en la que existe la posibilidad de que se produzca una inserción de direcciones SMTP en la clase SmtpClient. Esto corresponde a CVE-2022-26893 (sin publicar, ya que la gravedad de la vulnerabilidad se valora como media).
  • Git 2.39 ha cambiado el nombre del valor de credential.helper de "manager-core" a "manager". Consulte https://aka.ms/gcm/rename para obtener más información.
  • Actualizaciones de mingit y Git para el paquete de Windows a v2.39.2, que resuelve CVE-2023-22490

Avisos de seguridad corregidos


17.0.19 Visual Studio 2022, versión 17.0.19

Fecha de publicación: 14 de febrero de 2023

Problemas solucionados en esta versión 17.0.19

  • Se ha actualizado el intérprete de CPython a la versión 3.9.13.
  • Actualizaciones de mingit y Git para el paquete de Windows a v2.39.1.1, que resuelve CVE-2022-41903

Avisos de seguridad corregidos

17.0.18 Visual Studio 2022, versión 17.0.18

Fecha de publicación: 10 de enero de 2023

Avisos de seguridad corregidos

  • CVE-2023-21538 Vulnerabilidad de denegación del servicio de .NET Existe una vulnerabilidad de denegación del servicio en ASP.NET Core 6.0 y .NET 6.0 por la que un cliente malintencionado podría provocar un desbordamiento de pila que podría ocasionar un ataque por denegación de servicio cuando un atacante envía una solicitud no válida a un punto de conexión expuesto.

17.0.17 Visual Studio 2022, versión 17.0.17

publicada el 13 de diciembre de 2022

Avisos de seguridad corregidos

  • CVE-2022-41089 Ejecución remota de código Existe una vulnerabilidad de ejecución remota de código en .NET Core 3.1, .NET 6.0 y .NET 7.0, en la que un actor malintencionado podría hacer que un usuario ejecute código arbitrario como resultado del análisis de archivos xps creados con fines malintencionados.

17.0.16 Visual Studio 2022, versión 17.0.16

fecha de publicación: 8 de noviembre de 2022

Problemas solucionados en esta versión 17.0.16

Avisos de seguridad corregidos


17.0.15 Visual Studio 2022, versión 17.0.15

Fecha de publicación: 11 de octubre de 2022

Problemas solucionados en esta versión 17.0.15

  • Los administradores podrán actualizar el instalador de VS en una máquina cliente sin conexión desde un diseño sin actualizar VS.

Avisos de seguridad corregidos


17.0.14 Visual Studio 2022, versión 17.0.14

Fecha de publicación: 13 de septiembre de 2022

Problemas solucionados en esta versión 17.0.14

Avisos de seguridad corregidos

CVE-2022-38013 Vulnerabilidad de denegación del servicio de .NET Existe una vulnerabilidad de denegación del servicio en ASP.NET Core 3.1 y .NET 6.0 por la que un cliente malintencionado podría provocar un desbordamiento de pila que podría ocasionar un ataque por denegación de servicio cuando un atacante envía una carga personalizada analizada durante el enlace de modelos.


17.0.13 Visual Studio 2022, versión 17.0.13

Fecha de publicación: 9 de agosto de 2022

Problemas solucionados en esta versión 17.0.13

  • Se ha solucionado el error de Git después de la actualización 17.1.4: Comentarios de Visual Studio proporcionando la opción para marcar un repositorio de Git como seguro mediante Visual Studio.
  • Actualización de MinGit a la versión 2.37.1.1 para solucionar CVE - CVE-2022-29187 (mitre.org), que exponía a los usuarios a una vulnerabilidad en la que la navegación a un repositorio de su propiedad pero en el que otro usuario podía escribir podía aprovecharse para ejecutar código malintencionado.
  • Actualiza Git para Windows a la versión 2.37.1.1 que soluciona CVE-2022-31012.

Avisos de seguridad corregidos


17.0.12 Visual Studio 2022, versión 17.0.12

Fecha de publicación: 12 de julio de 2022

Problemas solucionados en esta versión 17.0.12

  • Se ha actualizado LibraryManager para dar cabida a los cambios en la API de cdnjs.
  • Se ha corregido un error por el que el editor de texto estaba en blanco al abrir un documento o se bloqueaba al escribir.

Avisos de seguridad corregidos


17.0.11 Visual Studio 2022, versión 17.0.11

publicada el 14 de junio de 2022

Problemas solucionados en esta versión 17.0.11

  • Se ha actualizado el conjunto de herramientas de C++ Dev 16.11 en paralelo a la versión 14.29.30145.00. La versión más reciente del conjunto de herramientas de C++ Dev 16.11 contiene correcciones de errores importantes, incluida la corrección de todos los informes de defectos de C++20 restantes. Consulte las notas de la versión 16.11.14 para obtener más información.

De Developer Community

Avisos de seguridad corregidos


17.0.10 Visual Studio 2022, versión 17.0.10

publicada el 10 de mayo de 2022

Problemas solucionados en esta versión 17.0.10

  • Se ha actualizado la versión de Git para Windows consumida por Visual Studio y el componente opcional instalable a 2.36.0.1.
  • Se ha corregido un problema con la integración de git, en el que si se extraen/sincronizan ramas que han divergido, la ventana de salida no mostraba una sugerencia localizada sobre cómo resolverlo.
  • Se ha corregido un problema por el que al abrir un repositorio de Git en Visual Studio, la ventana de salida muestra "Se han producido uno o varios errores" en lugar del motivo por el que se produce el error y cómo solucionarlo.
  • Se ha actualizado la línea de base de webview2 en Daytona.

De Developer Community

Avisos de seguridad corregidos

[CVE-2022-29117 Vulnerabilidad de denegación de servicio de .NET Existe una vulnerabilidad en .NET 6.0, .NET 5.0 y .NET Core 3.1 donde un cliente malintencionado puede manipular cookies y provocar una denegación de servicio.

CVE-2022-23267 Vulnerabilidad de denegación de servicio de .NET Core Existe una vulnerabilidad en .NET 6.0, .NET 5.0 y .NET Core 3.1, donde un cliente malintencionado puede provocar una denegación de servicio a través de asignaciones de memoria excesivas a través de HttpClient.

CVE-2022-29145 Vulnerabilidad de denegación de servicio de .NET Existe una vulnerabilidad en .NET 6.0, .NET 5.0 y .NET Core 3.1, donde un cliente malintencionado puede provocar una denegación de servicio cuando se analizan formularios HTML.

CVE-2022-24513 Vulnerabilidad de elevación de privilegios Existe una posible vulnerabilidad de elevación de privilegios cuando el servicio de actualización de Microsoft Visual Studio analiza incorrectamente los datos de configuración locales.


17.0.9 Visual Studio 2022, versión 17.0.9

Fecha de publicación: 19 de abril de 2022

Problemas solucionados en esta versión 17.0.9

  • Se ha corregido la regresión de vctip.exe de la versión 17.0.8.
  • Se ha corregido un error que impedía que algunas aplicaciones compiladas con AddressSanitizer (ASAN) se cargaran en Windows 11.
  • Se ha corregido otro problema de ASAN por el que las aplicaciones multiproceso con contención del montón podían experimentar interbloqueos, informes "wild pointer freed" falsos o un interbloqueo durante la salida del proceso.
  • Se ha corregido el problema "No se puede instalar ninguna extensión (vsix) para Visual Studio en un equipo sin conexión".

17.0.8 Visual Studio 2022, versión 17.0.8

Fecha de publicación: 12 de abril de 2022

Problemas solucionados en esta versión 17.0.8

De Developer Community

Avisos de seguridad corregidos

CVE-2022-24765 Vulnerabilidad de elevación de privilegios Existe una posible vulnerabilidad de elevación de privilegios en Git para Windows, en la que las operaciones de Git podrían ejecutarse fuera de un repositorio mientras se busca un directorio de Git. Git para Windows ahora está actualizado a la versión 2.35.2.1.

CVE-2022-24767 Vulnerabilidad de secuestro de DLL Existe una posible vulnerabilidad de secuestro de DLL en el instalador de Git para Windows, cuando se ejecuta el desinstalador con la cuenta de usuario SYSTEM. Git para Windows ahora está actualizado a la versión 2.35.2.1.

CVE-2022-24513 Vulnerabilidad de elevación de privilegios Existe una posible vulnerabilidad de elevación de privilegios cuando el servicio de actualización de Microsoft Visual Studio analiza incorrectamente los datos de configuración locales.


17.0.7 Visual Studio 2022, versión 17.0.7

Fecha de publicación: 8 de marzo de 2022

Problemas solucionados en esta versión 17.0.7

  • Rendimiento mejorado en monitores de frecuencia de actualización altos.
  • Se ha corregido un bloqueo durante el inicio de Visual Studio para los usuarios de Community SKU.

De Developer Community

Developer Community tiene una lista completa de correcciones disponibles en la versión 17.0.

Avisos de seguridad corregidos

CVE-2020-8927 Vulnerabilidad Existe una vulnerabilidad de ejecución remota de código en .NET 5.0 y .NET Core 3.1 donde existe un desbordamiento de búfer en las versiones de la biblioteca de Brotli anteriores a la 1.0.8.

CVE-2022-24464 Vulnerabilidad Existe una vulnerabilidad de denegación de servicio en .NET 6.0, .NET 5.0 y .NET CORE 3.1 al analizar determinados tipos de solicitudes de formulario http.

CVE-2022-24512 Vulnerabilidad Existe una vulnerabilidad de ejecución remota de código en .NET 6.0, .NET 5.0 y .NET Core 3.1 donde se produce una saturación del búfer de pila en la rutina de análisis doble de .NET.

CVE-2021-3711 Vulnerabilidad de desbordamiento de búfer de OpenSSL Existe una posible vulnerabilidad de desbordamiento de búfer en OpenSSL, que usa Git para Windows. Git para Windows ahora se ha actualizado a la versión 2.35.1.2, que soluciona este problema.


17.0.6 Visual Studio 2022, versión 17.0.6

Fecha de publicación: 8 de febrero de 2022

Problemas solucionados en esta versión 17.0.6

Avisos de seguridad corregidos

CVE-2022-21986 Vulnerabilidad Existe una vulnerabilidad de denegación de servicio en .NET 5.0 y .NET 6.0 cuando el servidor web de Kestrel procesa determinadas solicitudes HTTP/2 y HTTP/3.


17.0.5 Visual Studio 2022, versión 17.0.5

Publicada el 13 de enero de 2022

Problemas solucionados en esta versión 17.0.5

  • Se ha solucionado un problema esporádico por el que VSInstr no se cerraba cuando se instrumentaba un archivo binario con metadatos volátiles, lo que provocaba un error en la generación de perfiles de instrumentación.
  • Se han solucionado los problemas de bloqueo ocasional de link.hangs al producir PDB junto con un binario.
  • Se ha corregido un error en Concurrency::parallel_for_each de C++ que bloqueaba el proceso de llamada debido al desbordamiento de enteros.
  • Se ha corregido un error en las comparaciones CString de ATL en los modos de lenguaje C++20 y C++Latest.
  • Se ha corregido un bloqueo durante la ejecución de un binario con PGI en arm64 y arm64ec al usar una gran cantidad de sondeos pogo.
  • Se ha corregido un problema por el que la optimización de funciones muy grandes podía generar código incorrecto.

17.0.4 Visual Studio 2022, versión 17.0.4

Fecha de publicación: 16 de diciembre de 2021

Problemas solucionados en esta versión de Visual Studio 17.0.4

  • Se ha agregado compatibilidad con Xcode 13.2.

17.0.3 Visual Studio 2022, versión 17.0.3

Fecha de publicación: 14 de diciembre de 2021

Problemas solucionados en esta versión de Visual Studio 17.0.3

Representación de caracteres de control de texto bidireccional

Para evitar una vulnerabilidad potencialmente malintencionada que permita la representación errónea del código, el editor de Visual Studio ya no permitirá que los caracteres de control de texto bidireccional manipulen el orden de los caracteres en la superficie de edición. Una nueva opción hará que estos caracteres de control de texto bidireccional se muestran con marcadores de posición. Los caracteres de control de texto bidireccional seguirán estando presentes en el código, ya que este comportamiento solo afecta a lo que se representa en el editor de código.

VS with bidirectional text control characters replaced with placeholders

Esta funcionalidad se controla en Herramientas\Opciones. En la página Editor de texto\General hay una opción para "Mostrar caracteres de control de texto bidireccional", que se comprobará de forma predeterminada. Cuando está activada, todos los caracteres de control de texto bidireccional se representarán como marcadores de posición. Al desactivar la opción, se revertirá al comportamiento anterior en el que estos caracteres no se representan.

Un carácter Unicode se considera un carácter de control de texto bidireccional si se encuentra en cualquiera de los siguientes intervalos: U+061c, U+200e-U+200f, U+202a-U+202e, U+2066-U+2069.

  • Se ha corregido un bloqueo en Web Forms Designer.
  • Se ha corregido un problema por el que la finalización de CSS para !important insertaba texto en una ubicación incorrecta en archivos HTML o Razor.
  • Se ha corregido una regresión con Recarga activa de XAML para Xamarin.Forms con bibliotecas que compartían dependencias similares, como SignalR. Recarga activa de XAML para Xamarin.Forms ahora debería poder interoperar independientemente de lo que se cargue en la aplicación.
  • Se ha corregido un problema por el que las páginas de información general del proyecto, las herramientas de diagnóstico o las ventanas del generador de perfiles de rendimiento a veces estaban en blanco.
  • Se ha corregido un problema en la edición de archivos de Razor por el que el cursor a veces saltaba a una ubicación diferente al escribir.

De Developer Community

Developer Community tiene una lista completa de correcciones disponibles en la versión 17.0.

Avisos de seguridad corregidos

CVE-2021-43877 Vulnerabilidad de .NET Existe una vulnerabilidad de elevación de privilegios en ANCM que podría permitir la elevación de privilegios cuando las aplicaciones .NET Core, .NET 5 y .NET 6 se hospedan en IIS.

CVE-2021-42574 Vulnerabilidad de texto bidireccional Los caracteres de control de texto bidireccional se pueden usar para hacer que el código se represente en el editor de forma diferente de lo que se encuentra en el disco.


17.0.2 Visual Studio 2022, versión 17.0.2

fecha de publicación: 30 de noviembre de 2021

Problemas solucionados en esta versión de Visual Studio 17.0.2

  • Corrección de codegen silencioso e incorrecto con operaciones de tipo memmove con datos superpuestos
  • Se ha agregado mensajería en la ventana de salida que aparece cuando se usan módulos de C++ o unidades de encabezado. Contiene problemas que se conocen actualmente al usar módulos o unidades de encabezado con IntelliSense.
  • Se ha corregido el problema por el que las páginas de información general de CMake y el editor CMakeSettings se atascaba en "Esperando a que IntelliSense termine de inicializarse...".
  • Se ha corregido un problema que provocaba que se creara una instancia de un destructor con plantilla implicado en una jerarquía de clases con inicializadores de miembro de datos demasiado pronto, lo que podría dar lugar a diagnósticos incorrectos sobre los usos de tipos indefinidos u otros errores.
  • Se ha agregado Python 3.9.7 a la carga de trabajo de Python. Se ha eliminado Python 3.7.8 debido a una vulnerabilidad de seguridad.
  • Se ha corregido un problema por el que Buscar siguiente (F3) y Buscar el siguiente seleccionado (Ctrl+F3) a veces saltaban a la primera aparición del archivo en lugar de a la siguiente.
  • Se ha corregido un problema por el que las fechas de las interfaces de usuario del control de versiones no respetaban la configuración regional del sistema operativo del cliente.
  • Se ha corregido un problema en Windows 11 en el que los clientes establecen el Terminal Windows como predeterminado y el depurador no puede detener la depuración de una aplicación de consola correctamente e impedir futuros inicios.

De Developer Community

Developer Community tiene una lista completa de correcciones disponibles en la versión 17.0.


17.0.1 Visual Studio 2022, versión 17.0.1

fecha de publicación: 16 de noviembre de 2021

Problemas solucionados en esta versión de Visual Studio 17.0.1

  • Se ha corregido un bloqueo al usar compilaciones por lotes.
  • Se ha corregido un bloqueo al iniciar proyectos de Xamarin.Forms con Recarga activa de XAML habilitada.

De Developer Community

Developer Community tiene una lista completa de correcciones disponibles en la versión 17.0.

17.0.0 Visual Studio 2022, versión 17.0.0

fecha de publicación: 08 de noviembre de 2021

Resumen de las novedades de la versión 17.0.0 de Visual Studio 2022

64 bits

  • devenv.exe ahora es solo de 64 bits.

Azure Cloud Services

  • No se admiten nuevos proyectos del servicio en la nube de Azure (clásico) debido a que están en desuso en Azure para los nuevos clientes. Los proyectos del servicio en la nube de Azure (soporte extendido) son el reemplazo recomendado.
  • Los proyectos existentes del servicio en la nube de Azure (clásico) se pueden abrir y son totalmente compatibles.

C++

  • Las herramientas de compilación v143 ahora están disponibles mediante el instalador de Visual Studio, así como las herramientas de compilación independientes.
  • La nueva experiencia Recarga activa está ahora disponible para aplicaciones nativas de C++ cuando se ejecutan en el depurador. Admite proyectos MSBuild y CMake. Para más información, consulte a continuación nuestra sección Recarga activa.
  • Ahora puede compilar y depurar de forma nativa en WSL2 sin establecer una conexión SSH. Se admiten proyectos de CMake multiplataforma y proyectos de Linux basados en MSBuild.
  • Visual Studio ahora admite la opción buildPresets.targets en CMakePresets.json. Esta opción le permite crear un subconjunto de destinos en el proyecto de CMake.
  • El menú Proyecto en los proyectos de CMake se ha simplificado y expone opciones para eliminar la caché y volver a configurarla y para ver la caché.
  • Las páginas de información general de CMake se han actualizado para admitir CMakePresets.json.
  • Se ha implementado la marca /scanDependencies para generar dependencias de módulo de C++20 para proyectos de CMake como se describe en P1689r4. Se trata de un paso hacia la compatibilidad con la creación de proyectos basados en módulos con CMake y estamos trabajando para completar esta compatibilidad en versiones posteriores.
  • Ahora puede depurar procesos que se ejecutan en sistemas remotos desde Visual Studio con LLDB.
  • Hemos actualizado la versión de CMake que se incluye con Visual Studio a la versión 3.21. Vea las notas de la versión de CMake 3.21 para obtener detalles sobre lo que está disponible.
  • Las herramientas de LLVM que se incluyen con Visual Studio se han actualizado a LLVM 12. Vea las notas de la versión de LLVM para obtener más información.
  • El conjunto de herramientas de MSVC ahora tiene como valor predeterminado el hash de origen SHA-256 en los registros de depuración. Anteriormente, en el conjunto de herramientas se usaba MD5 de forma predeterminada para el hash de origen.
  • Ahora la carga de trabajo Desarrollo de juegos con C++ instala la versión más reciente del motor Unreal con compatibilidad con Visual Studio 2022.
  • Se han realizado mejoras en IntelliSense de C++ al proporcionar resaltado de navegación y sintaxis para tipos de módulos importados y unidades de encabezado.
  • Se ha mejorado el rendimiento de IntelliSense de C++ mediante la optimización del uso de encabezados almacenados en caché y el acceso a la base de datos de símbolos, lo que proporciona tiempos de carga mejorados para acceder al código.
  • El linter de código de IntelliSense para C++ está ahora activado de manera predeterminada, lo que proporciona sugerencias instantáneas a medida que escribe y corrige sugerencias para defectos de código comunes.
  • Compatibilidad con libfuzzer en el modificador -fsanitize=fuzzer. Vea la documentación para obtener más información.
  • Hemos mejorado la detección de desreferencia de punteros nulos en nuestras herramientas de análisis de código.
  • El análisis de código ahora exige que se deben comprobar los valores devueltos de las funciones anotadas con _Check_return_ o _Must_inspect_result_.
  • Se ha agregado compatibilidad con gsl::not_null para analizar código.
  • Se ha actualizado a NDK r21 LTS en la carga de trabajo Desarrollo móvil con C++.
  • Los encabezados de AMP de C++ están en desuso. Al incluir <amp.h> en un proyecto de C++ se generarán errores de compilación. Para silenciar los errores, defina _SILENCE_AMP_DEPRECATION_WARNINGS. Vea nuestros vínculos de desuso de AMP para obtener más detalles.

Depuración y diagnóstico

  • Mejoras en el cuadro de diálogo Asociar al proceso
  • Mejoras del asistente de excepciones
  • Force Run to Click (Forzar ejecución hasta hacer clic)
  • Análisis de diagnóstico de volcado de memoria
  • Hemos publicado un nuevo tipo de punto de interrupción denominado Punto de interrupción dependiente, que permite configurar un punto de interrupción para que se habilite solo si primero se alcanza otro punto de interrupción.
  • Hemos agregado más actualizaciones al nodo Orígenes externos; ahora puede ver el módulo en el subnodo "Módulos sin orígenes" y cargar los símbolos desde el Explorador de soluciones.
  • Mejoras en el medianil del punto de interrupción
  • Punto de interrupción temporal
  • Arrastre y colocación del punto de interrupción
  • Nodo de orígenes externos en el Explorador de soluciones
  • Mejoras en el cuadro de diálogo Asociar al proceso

Personalización

  • Se han agregado pestañas de colores para pestañas verticales y horizontales
  • Se ha agregado un paquete de temas y hemos trabajado con autores de temas de VS Code para crear una colección de temas personalizados
  • Se ha creado un Convertidor de temas para convertir temas de VS Code y que funcionen en Visual Studio 2022
  • Se ha agregado la funcionalidad para sincronizar el tema de Visual Studio con el tema de Windows
  • Se han agregado nuevas funcionalidades de administración de documentos, incluida la personalización del ancho de tabulación, la negrita del documento activo y un botón cerrar adicional en docwell.

Editor

  • Se ha agregado la navegación por subpalabra
  • El autoguardado ya está disponible como característica en versión preliminar
  • Experiencia de copiado/pegado de varios símbolos de inserción

Extensibilidad

  • Se han quitado API de los ensamblados Microsoft.VisualStudio.Language.Client
  • El SDK de VS contiene varios cambios importantes y las extensiones de Visual Studio 2019 no funcionarán en 2022. Para obtener más información, vea la documentación sobre el VSSDK.
  • Los ensamblados de referencia del SDK de VS ya no están instalados en la carpeta VSSDK\VisualStudioIntegration\Common\Assemblies. Si su compilación se basaba en estos ensamblados, realice la migración del proyecto para usar paquetes NuGet en su lugar. En el caso de escenarios sin conexión:
    1. Mantenga una fuente NuGet en la organización desde la que restaurar los paquetes NuGet.
    2. Compruebe los archivos binarios.
  • Se han agregado correcciones de cambios importantes de ILanguageClient

Cloud Services

  • Azurite se usará para la emulación local de Azure Storage en lugar del anterior Azure Storage Emulator que ya no se desarrollará activamente.

Herramientas de Git

  • Compatibilidad con varios repositorios con una marca de versión preliminar para cualquier solución que abarque repositorios diferentes (es decir, soluciones con proyectos hospedados en repositorios Git diferentes)
  • Publicar en Azure DevOps ahora es completamente compatible con la experiencia de creación de repositorios de Git
  • Mejoras en la barra de estado, incluida una nueva capacidad para ver y abrir repositorios desde una instancia de VS vacía y mostrar el número de confirmaciones no extraídas
  • El menú de desbordamiento de la ventana Git Changes (Cambios de Git) ahora está disponible para repositorios solo locales con operaciones de Git adicionales
  • Se ha unificado la barra de herramientas de diferencias que contiene el número de líneas agregadas o eliminadas y una opción de configuración reconocible
  • Mejoras en los detalles de confirmación, incluida una interfaz de usuario más dinámica y fácil de usar

Menú Ayuda

  • Durante la versión 17.0, hemos renovado el menú ayuda con material de introducción, así como sugerencias y trucos útiles.
  • Proporciona una mejor colaboración con nuestro equipo de desarrollo gracias a la incorporación de funcionalidades como el acceso a Developer Community, notas de la versión, la hoja de ruta del producto Visual Studio y nuestras páginas de redes sociales.

Experiencia de Recarga activa

  • Recarga activa ahora está disponible para los desarrolladores de .NET mediante el depurador de Visual Studio y sin el depurador para muchos tipos de aplicación de .NET 6.
  • Recarga activa ahora está disponible para los desarrolladores de C++ al usar el depurador de Visual Studio.

Para obtener más información, consulte el vínculo anterior.

IntelliCode

JavaScript/TypeScript

  • Hemos publicado un nuevo tipo de proyecto JavaScript/TypeScript que compila proyectos de JavaScript/TypeScript independientes con herramientas adicionales. Podrá crear proyectos de Angular y React en Visual Studio con la versión del marco instalada en el equipo.
  • Las pruebas de JavaScript y TypeScript ya están disponibles en el Explorador de pruebas de Visual Studio.
  • GUI de NPM disponible, por lo que ahora puede descargar módulos de NPM de la misma manera que descarga paquetes NuGet

SDK de .NET 6

  • El SDK de .NET 6 se incluye en Visual Studio 2022

Productividad de .NET

  • Con la introducción de la refactorización de parámetros se puede mover un nuevo parámetro de la implementación del método a sus llamadores.
  • Track Value Source (Seguimiento de valor de origen) para el análisis del flujo de datos
  • Opción de subrayado de las variables que se reasignan
  • Se ha agregado la opción de búsqueda en el cuadro de diálogo Generar invalidaciones
  • La información rápida de las <etiquetas> XML ahora conserva los espacios en blanco y los bloques CDATA
  • La ventana Buscar todas las referencias ahora agrupará los proyectos de varios destinos
  • Refactorización para quitar tipos repetitivos en Visual Basic
  • Ir a implementación ya no llevará a los miembros con declaraciones abstractas, que también se invalidan.
  • Sincronización de espacios de nombres para que coincidan con la estructura de carpetas del Explorador de soluciones
  • Configuración del análisis de código en segundo plano desde el Explorador de soluciones
  • Ahora la opción de tipos de referencia que aceptan valores NULL está habilitada de forma predeterminada para los nuevos proyectos de .NET
  • Refactorización del espacio de nombres con ámbito de archivo de C# 10.0
  • La opción Navigate to decompiled sources (Navegar a orígenes descompilados) ahora está activada de manera predeterminada
  • Refactorización para preferir la comprobación de valores NULL sobre la comprobación de tipos
  • Los comentarios XML ahora generarán automáticamente una etiqueta <exception> cuando un método inicie excepciones explícitamente
  • Ahora la opción Inheritance Margin (Margen de herencia) está habilitada de forma predeterminada

Lenguajes de programación

  • C# 10

Editor de Razor (ASP.NET Core)

  • Se han reducido las inmovilzaciones de la interfaz de usuario y se ha mejorado el rendimiento en el inicio de la solución
  • Coloración semántica más rápida hasta el doble en algunas soluciones
  • Compatibilidad con F7 (ver código) en archivos de Razor
  • Compatibilidad con fragmentos de código en archivos de Razor, por lo que se puede completar una sesión de fragmento de código pulsando una única vez el tabulador, en lugar de tener que hacerlo dos veces
  • Mejor formato en bloques de @code cuando hay componentes de Razor y HTML anidados
  • Compatibilidad con Recarga activa en archivos de Razor
  • Mejoras en el rendimiento
  • Mejoras de formato y sangría
  • Nuevos colores del editor de Razor
  • Los elementos TagHelper ahora están coloreados y tienen compatibilidad con la clasificación de información rápida e informaciones sobre herramientas de finalización
  • Resaltado de llave angular y navegación para construcciones de Razor
  • Los comentarios ahora tienen finalización automática, sangría inteligente, inclusión automática de continuaciones de comentarios y navegación por comentarios en bloque

Pruebas remotas

  • Versión preliminar experimental muy temprana de la habilitación de ejecución de pruebas en entornos remotos, como contenedores Linux, WSL y a través de conexiones SSH.

Compatibilidad con herramientas de prueba

  • Mostrar en el Explorador de pruebas
  • Las versiones nuevas de la plataforma de pruebas, a partir de la versión 17.0, no podrán ejecutar pruebas genéricas ni pruebas por orden. Estas características específicas solo se incluían como parte de una versión anterior de MSTestv1 y no están en MSTestv2. Se observa muy poco uso de estas características y las pruebas por orden ahora se consideran contrarias a los procedimientos recomendados de pruebas.
  • Algunas experiencias de prueba no estarán disponibles en la versión 17.0, incluida la creación de archivos TestSettings y el editor TestSettings. Las series de pruebas seguirán siendo capaces de usar archivos TestSettings, pero TestSettings se ha reemplazado por RunSettings, y animamos a los usuarios a migrar una función y un rendimiento mejorados. Más información.
  • Actualizaciones de compatibilidad con Prueba de carga web y Prueba automatizada de IU. Pruebas automatizadas de IU y [Pruebas de carga web](Prueba de carga del final del servicio basada en la nube) | Blog de Azure DevOps (microsoft.com) quedaron oficialmente en desuso en 2019. Para minimizar el impacto en los usuarios, hay compatibilidad mínima con estas características en Visual Studio 2022. Recomendamos encarecidamente a los usuarios a que dejen de usar Prueba automatizada de IU y Prueba de carga web.

Rellenado del cuadro de herramientas para los SDK de extensión de UWP

  • Ahora es necesario que los SDK de extensión de UWP declaren explícitamente los tipos que quieren que aparezcan en el cuadro de herramientas; para ello, deben enumerarlos en el archivo SdkManifest.xml. El comportamiento de las versiones anteriores de Visual Studio no cambia; omitirán la lista de controles del manifiesto y, en su lugar, enumerarán de forma dinámica los tipos de control en los ensamblados del SDK.

Ubicaciones de confianza

  • Hemos renovado la funcionalidad "Configuración de confianza" y ahora podemos mostrar una advertencia cada vez que código que no sea de confianza (por ejemplo, archivos, proyectos o carpetas) esté a punto de abrirse dentro del IDE.
  • Las comprobaciones de confianza se realizan ahora en el nivel de carpeta de la solución
  • Los proyectos creados por el usuario se agregan automáticamente a la lista de confianza
  • Los usuarios pueden omitir las comprobaciones de confianza en ubicaciones temporales creadas por Visual Studio

Actualizaciones, LTSC e implementación

  • Con Visual Studio 2022, habrá varias líneas base de mantenimiento admitidas simultáneamente que se publicarán en otoño y en primavera. Para obtener más información, consulte la documentación del Ritmo de publicación de versiones de Visual Studio y el Ciclo de vida del producto de Visual Studio 2022.
  • El nuevo instalador que se incluye con Visual Studio 2022 ahora tiene la capacidad de configurar de dónde debe obtener el producto de Visual Studio sus actualizaciones. Esto le permite elegir actualizaciones de un LTSC diferente o, si se encuentra en un entorno empresarial administrado, puede configurar el cliente para obtener sus actualizaciones desde un diseño. La capacidad de configurar el origen para las actualizaciones es una nueva funcionalidad que se incluye con el Instalador de Visual Studio y, por tanto, el comportamiento también es aplicable a las versiones de nivel inferior de Visual Studio, como Visual Studio 2019. Para obtener información adicional sobre cómo configurar el canal de actualización, consulte la documentación de Actualización de Visual Studio. Para obtener información adicional sobre cómo hacer que funcione en diseños de red, consulte la Guía de administradores de Visual Studio.
  • Los administradores de TI ahora pueden notificar problemas sin tener Visual Studio instalado.

Interfaz de usuario

  • Los iconos predeterminados se han actualizado.

Herramientas Web

  • La página de resumen Publicar ahora tiene acciones para iniciar o detener la depuración remota y la generación de perfiles en el menú "...". de la esquina superior derecha de la sección "Hospedaje".
  • La página Servicios conectados ahora tiene una acción para iniciar Explorador de Storage.
  • La plantilla "Vacío de ASP.NET Core" que se incluye con .NET 6 usa el paradigma nuevo de "API mínimas", para el que hemos empezado a agregar compatibilidad.
  • Azurite se usará para la emulación local de Azure Storage en lugar del anterior Azure Storage Emulator que ya no se desarrollará activamente.
  • Puede agregar autenticación a la aplicación ASP.NET Core al usar la Plataforma de identidad de Microsoft mediante la experiencia Servicios conectados de Visual Studio.

Diseñador XAML de WPF para .NET Framework

  • El Diseñador XAML de WPF actual para .NET Framework se reemplaza por otro nuevo, basado en la misma arquitectura usada para el Diseñador XAML de WPF para .NET (.NET Core). La experiencia de Visual Studio será la misma, pero los proveedores de control de terceros deben admitir el modelo nuevo de extensibilidad, ya que el modelo anterior basado en .design.dll y Microsoft.Windows.Design.Extensibility está en desuso. Si ya ha creado una extensión .designtools.dll para .NET (.NET Core), esa misma extensión funcionará en el nuevo Diseñador XAML de WPF para .NET Framework. Consulte el documento sobre migración siguiente para obtener más información sobre cómo migrar al modelo de extensibilidad nuevo.

Recarga activa de XAML

  • Cambios en Recarga activa de XAML: cambios menores en la configuración y la barra de herramientas en la aplicación

XAML Live Preview

  • XAML Live Preview ya está disponible para los desarrolladores de WPF, UWP, WinUI y Xamarin.Forms que ejecutan sus aplicaciones en Android Emulator o como una aplicación de escritorio para UWP. Live Preview captura una interfaz de usuario de aplicaciones en ejecución y la incluye en una ventana acoplada dentro Visual Studio. Esto facilita el uso de Recarga activa de XAML para cambiar la aplicación mientras se ven esos cambios en el propio Visual Studio, sin necesidad de cambiar de pestaña entre la aplicación en ejecución y Visual Studio mientras se hacen cambios en el código XAML activo.

Para obtener más información, haga clic en el vínculo anterior.

Datos de ejemplo XAML

  • Ahora se agregarán datos de ejemplo de tiempo de diseño de forma predeterminada al crear controles DataGrid, ListBox y ListView desde el cuadro de herramientas en aplicaciones WPF. Para deshabilitar este comportamiento, desactive "Automatically add sample data on element creation" (Agregar automáticamente datos de ejemplo al crear elementos) en Herramientas > Opciones > Diseñador XAML.
  • Para obtener más información sobre los datos de ejemplo, consulte la documentación de datos de ejemplo.

Mejora de la experiencia de enlace XAML

  • Hemos realizado una serie de mejoras para que el enlace de datos sea rápido y sencillo, como el acceso rápido al cuadro de diálogo Enlace de datos desde el Inspector de propiedad, la capacidad de establecer el enlace desde Acciones rápidas, la capacidad de elegir la propiedad a la que enlazar en el cuadro de diálogo Enlace de datos.

Para obtener más información, haga clic en el vínculo anterior.

Problemas conocidos

Desarrollo móvil con .NET

Herramientas de Python

IntelliSense para C++

Detalles de las novedades de la versión 17.0.0 de Visual Studio 2022

Depuración y diagnóstico

  • Mejoras en el cuadro de diálogo Asociar al proceso
  • Nueva vista de lista de procesos primarios y secundarios a través del botón de alternancia en la parte inferior de la ventana:
    • La selección de la vista debería conservarse.
    • La pulsación izquierda en el teclado lleva al proceso primario en la vista de elementos primarios y secundarios.
    • Todas las columnas deben poder ordenarse como la vista original.
  • La columna Nueva línea de comandos está disponible en ambas vistas.
  • El nombre del grupo de aplicaciones se muestra en la "columna Título" de los procesos w3wp

! [Adjuntar al proceso ] (media/17.0/17.0_P2_attach_to _process_3.png)

  • Se ha agregado un controlador de excepciones en el bloque catch. Se mostrará el controlador de excepciones con la información de excepción pertinente cuando un paso administrado provoque una excepción y el paso se complete en un bloque catch.
  • Un nuevo botón "continuar", que muestra el controlador de excepciones en las excepciones "detectadas".

Exception Handler Updates

  • Se ha agregado una opción Force run to click (Forzar ejecución hasta hacer clic) que ejecutará el depurador hasta que se alcance la posición del cursor seleccionada mientras se ignoran todos los puntos de interrupción en medio.
  • Para usar esta opción, haga clic en "Force Run to Click" (Forzar ejecución hasta hacer clic) en el menú contextual de la línea de código deseada.

Force Run to Cursor

  • Cuando la aplicación está en modo de depuración, también puede ejecutar "Force Run to Click" (Forzar ejecución hasta hacer clic) haciendo clic en el glifo verde que aparece junto a una línea de código cuando se desplaza el mouse mientras se mantiene presionada la tecla MAYÚS.

Force Run to Cursor Glyph

  • Análisis de diagnóstico de volcado de memoria
    • Hemos mejorado el motor del analizador para encontrar más problemas de sincrónico sobre asincrónico en los volcados de memoria de ASP.NET Core.
    • Para averiguar qué partes del código consumen la mayoría de los recursos de CPU, revise los cinco subprocesos principales por tiempo de CPU.
    • Revise todo el montón administrado para ver si hay signos de presión de memoria en las generaciones 0, 1, 2 y el montón de objetos grandes.
    • Si tiene un volcado de memoria, puede encontrar rápidamente la excepción y el subproceso de segunda oportunidad que hicieron que la aplicación se bloqueara.
    • ¿Tiene dificultades para formular una hipótesis de diagnóstico? Cuando la causa exacta de un bloqueo no se conoce bien, puede usar el analizador de excepciones para buscar y revisar rápidamente todas las excepciones del montón.
    • Para aquellos momentos en los que el análisis de memoria es importante, hemos mejorado la heurística del analizador de cola del finalizador. Ahora nos centramos en el código y excluimos los objetos administrados por .NET Framework.

Punto de interrupción dependiente

Se trata de un nuevo punto de interrupción que permite al usuario configurar un punto de interrupción para que se habilite solo si primero se alcanza otro punto de interrupción. Al realizar la depuración, el depurador de Visual Studio solo pausará la aplicación en el punto de interrupción Dependiente si se ha alcanzado el punto de interrupción de requisito previo. Puede convertir cualquier punto de interrupción en Dependiente si activa la casilla "Only enable when following breakpoint is hit" (Habilitar solo cuando se llegue al punto de interrupción siguiente) en la ventana de configuración y selecciona en la lista desplegable el punto de interrupción de requisito previo en el que quiera configurar el punto de interrupción dependiente.

Dependent Breakpoint

Mejoras en el medianil del punto de interrupción

Se ha agregado un nuevo glifo de punto de interrupción para indicar la ubicación en la que el usuario puede establecer un punto de interrupción.

Breakpoint Glyph

Al hacer clic con el botón derecho en ese glifo de punto de interrupción, se mostrará un nuevo menú contextual con opciones que proporciona una manera rápida de crear puntos de interrupción avanzados (punto de interrupción condicional, punto de seguimiento y punto de interrupción temporal) en menos clics.

Breakpoint Context Menu

Punto de interrupción temporal

Se trata de un nuevo punto de interrupción que permite al usuario interrumpir el código una sola vez. Al depurar, el depurador de Visual Studio solo pausará el entorno de ejecución de la aplicación una vez para este punto de interrupción y lo quitará inmediatamente después de que se haya alcanzado. Puede convertir cualquier punto de interrupción en un punto de interrupción temporal si habilita la casilla "Remove breakpoint once hit" (Eliminar punto de interrupción una vez alcanzado) en la ventana de configuración. Como alternativa, puede usar el nuevo menú contextual de clic con el botón derecho desde el medianil del punto de interrupción para establecer este punto de interrupción.

Temporary Breakpoint

Arrastre y colocación del punto de interrupción

Hemos agregado el gesto de arrastrar y colocar para los puntos de interrupción. Ahora puede mantener el punto de interrupción y liberarlo en la línea de código deseada para mover el punto de interrupción de una ubicación a otra. Funciona para nuestro punto de interrupción avanzado siempre y cuando las variables de acción o condición estén dentro del contexto.

Drag and Drop Breakpoint

Nodo de orígenes externos en el Explorador de soluciones

Se ha agregado un nuevo nodo "External Sources" (Orígenes externos) en el Explorador de soluciones. Actualmente, esto solo aparecerá durante la depuración y mostrará los orígenes de los módulos administrados con símbolos cargados que contienen información del servidor de origen o del vínculo de origen. Durante la depuración, cualquier archivo de símbolos administrado y cargado (.pdb) que tenga información del servidor de origen presente aparecerá en este nodo. Puede examinar archivos como cualquier otra carpeta del Explorador de soluciones o hacer doble clic en un elemento para descargar el archivo desde el servidor de origen y abrirlo en el editor de VS. External Sources node in Solution explorer

Mejoras en el cuadro de diálogo Asociar al proceso

Se ha agregado una nueva casilla de actualización automática en el cuadro de diálogo Asociar al proceso , para que cuando haya una comprobación se actualice la lista de procesos automáticamente con los procesos disponibles. La nueva opción "Select any window from desktop" (Seleccionar cualquier ventana del escritorio) del cuadro de diálogo Asociar al proceso permite al usuario elegir cualquier ventana en ejecución del escritorio y asociarla a su proceso asociado para la depuración.

Attach to process Dialog Improvements

Análisis de diagnóstico de volcado de memoria

Buscar los marcos de llamada raíz cuando se produce una excepción de desbordamiento de pila puede ser difícil y lento. Nuestros analizadores más recientes presentan una vista cómoda de la pila de llamadas y elimina los marcos repetitivos y ruidosos para un análisis de problemas más rápido.

Personalización

Conversión de temas de VS Code en temas de Visual Studio

Hemos creado una herramienta convertidora de temas para convertir temas de VS Code y que funcionen en Visual Studio 2022. Pruébelo aquí.

Nuevo paquete de temas de Visual Studio

Los temas predeterminados de VS Code ahora están disponibles en un paquete de temas de Visual Studio. Eche un vistazo al paquete de temas aquí.

Sincronización de tema con el sistema operativo Windows

Hemos agregado la capacidad de sincronizar el tema de Visual Studio con el tema de Windows, así el tema se puede ajustar en función de la cantidad de luz ambiente disponible. Para habilitar esta característica, vaya a Herramientas > Tema > Usar la configuración del sistema.

Pestañas de colores

Para habilitar las pestañas de colores, vaya a Herramientas > Opciones > Pestañas y ventanas, y habilite Colorear pestañas.

Color tabs

Editor

Navegación por subpalabra

Con Ctrl+Alt+Flecha izquierda y Ctrl+Alt+Flecha derecha se desplazará por subpalabra. Por ejemplo, la cadena "HolaMundo" identifica "Hola" y "Mundo" como subpalabras. La habilitación de Subword navigation (Navegación por subpalabra) en Herramientas > Opciones > Editor de texto > General hará que los comandos relacionados con palabras (por ejemplo, TransposeWord) interactúen con subpalabras.

Autoguardado

Autoguardado ahora está disponible en Herramientas > Opciones > Entorno > Características en versión preliminar. Si está habilitada, cuando la aplicación de Visual Studio pierde el foco (por ejemplo, otra ventana obtiene el foco), todos los documentos sucios se guardarán en el disco, si es posible. Si no se puede guardar un archivo, permanecerá sucio hasta que el usuario lo guarde explícitamente (con los comandos Guardar o Guardar como...).

Experiencia de copiado/pegado de varios símbolos de inserción

Se ha mejorado la experiencia de copiado y pegado de varios símbolos de inserción. Anteriormente, al pegar varias líneas en varios símbolos de inserción, todo el Portapapeles se duplicaba en cada uno de ellos. Ahora, al pegar varias líneas en el mismo número de símbolos de inserción, cada línea se insertará en un símbolo de inserción correspondiente. Para usar el símbolo de intercalación múltiple, presione Alt+Mayús+clic del ratón o Alt+Mayús+. y presione Ctrl+Mayús+tecla de dirección para expandir las selecciones. A continuación, presione Ctrl+C para copiar el texto en varias selecciones. Use Alt+Mayús+clic del mouse para crear varios símbolos de inserción para cada línea que quiera pegar en las ubicaciones deseadas. Por último, presione Ctrl+V para pegar cada línea en su propio símbolo de inserción.

Multi-caret copy and paste

Además, puede usar Alt+Mayús+tecla de flecha arriba o abajo o Alt+Mayús+arrastrar el mouse para seleccionar con varios símbolos de inserción. Anteriormente, estos gestos creaban la selección del cuadro. Ahora, la selección del cuadro se transforma en varios símbolos de inserción. Este método es más fácil y rápido que tener que hacer clic en ubicaciones precisas para insertar los símbolos de inserción individuales. Si prefiere seguir usando la selección del cuadro con Alt+Mayús+teclas de flecha y Alt+Mayús+arrastrar el mouse, cuando expanda la selección de varios símbolos de inserción, vaya a Herramientas > Opciones > Editor de texto > Avanzado y seleccione Use box selection (Usar selección de cuadro).

Multi-caret box selection option

Extensibilidad

Microsoft.VisualStudio.LanguageServer.Client presenta una nueva manera de personalizar las notificaciones cuando un cliente de lenguaje no se puede inicializar.

Ahora, el Centro de estado de tareas (TSC) realizará el seguimiento de la tarea de inicialización. Si se produce un error en la tarea de inicialización, los usuarios pueden ir al TSC para obtener más información sobre el error. Los clientes de lenguaje ahora podrán personalizar el mensaje que se muestra al usuario, proporcionando información sobre lo que representa este error para ellos y las acciones que se pueden realizar para corregirlo. Para ello, presentamos un nuevo conjunto de API en la interfaz ILanguageClient. Estas nuevas API provocarían un cambio importante en la interfaz ILanguageClient, por lo que las extensiones de lenguaje tendrán que hacer referencia al nuevo paquete para que funcionen en Visual Studio 2022.

Estas son las nuevas API:

  1. Propiedad ShowNotificationOnInitializeFailed: propiedad booleana que determinará si el servidor de lenguaje quiere que se muestre una burbuja para notificar al usuario el error de esta forma:

ShowNotificationOnInitializeFailed in the Task Status Center

Se recomienda establecer esta propiedad en true solo si el error afecta drásticamente a la experiencia del usuario para el proyecto en el que está trabajando actualmente.

  1. Método OnServerInitializedFailedAsync: este método se invocará cuando se produce un error en la inicialización del cliente de lenguaje. Se proporcionará un objeto LanguageClientInitializationInfoBase con información sobre cómo se produjo el error para que el cliente de lenguaje pueda notificar el error al usuario por su cuenta o proporcionar un mensaje personalizado con el contexto del error. Si se proporciona el mensaje, se mostrará en la Ventana de salida de Visual Studio.

Language client initialization error in the Output Window

JavaScript/TypeScript

Ahora hay compatibilidad con un nuevo tipo de proyecto JavaScript/TypeScript que permite crear proyectos Angular, React y Vue independientes en Visual Studio. Los proyectos se crearán mediante las herramientas de la CLI del marco que ha instalado en el equipo local. Esto también significa que la versión de la plantilla se basa en las versiones de la CLI que tiene en el equipo local.

Dentro de estos nuevos proyectos, podrá ejecutar pruebas unitarias e integrarlas con proyectos de API de ASP.NET Core. Puede encontrar documentación aquí

  • Hemos publicado un nuevo tipo de proyecto JavaScript/TypeScript que compila proyectos de JavaScript/TypeScript independientes con herramientas adicionales. Aquí encontrará más información al respecto
  • La GUI de NPM está disponible, por lo que ahora puede descargar módulos NPM de la misma manera que descarga paquetes NuGet en los nuevos proyectos de JavaScript o TypeScript

NPM GUINPM GUI2

Experiencia de Recarga activa para desarrolladores de .NET y C++

A principios de este año anunciamos Recarga activa de .NET, un proyecto muy ambicioso para proporcionar Recarga activa a tantos desarrolladores de .NET como sea posible. Iniciamos este recorrido con una primera versión preliminar disponible en Visual Studio 2019 y prometimos mucho más en Visual Studio 2022, donde estaría disponible toda la experiencia. Hoy me complace compartir los detalles de lo que hemos conseguido en la versión de disponibilidad general de Visual Studio 2022.

Para cualquier persona que no conozca Recarga activa, esta es una introducción rápida. La experiencia de Recarga activa en Visual Studio funciona tanto para las aplicaciones .NET administradas como para las aplicaciones nativas de C++. Independientemente del tipo de aplicación en la que esté trabajando, la intención de Recarga activa es ahorrar tantos reinicios de la aplicación entre ediciones como sea posible, lo que le hace más productivo al reducir el tiempo que dedica a esperar a que las aplicaciones se recompilen, reinicien, vuelvan a desplazarse a la ubicación anterior donde estaba en la propia aplicación, etc.

Esto se logra al hacer posible la edición de los archivos de código de la aplicación y aplicar los cambios de código inmediatamente a la aplicación en ejecución, también conocida como “Recarga activa”. Una vez aplicados los cambios, simplemente vuelva a ejecutar el código mediante una acción en la propia aplicación (o mediante algún tipo de temporizador, por ejemplo) y vea los cambios inmediatamente. No es necesario pausar la aplicación mediante puntos de interrupción.

Si quiere ver algunas demostraciones en directo de esta característica, puede echar un vistazo a uno de estos vídeos:

Experiencia del usuario de Recarga activa en Visual Studio

La Recarga activa para desarrolladores de .NET y C++ en Visual Studio 2022 también ha experimentado mejoras importantes. La barra de herramientas ahora tiene la implementación de destino del botón "Recarga activa" con una apariencia mejorada y más funcionalidad.

Lo primero que observará es el nuevo botón de estilo desplegable con un icono nuevo. Se ha cambiado el nombre del comando de "aplicar cambios de código" (desde las primeras versiones preliminares) a "Recarga activa".

Hot Reload User Experience in Visual Studio 2022

Al expandir los botones, se revela un acceso rápido a características como reiniciar aplicaciones en ejecución, un botón opcional de alternancia para Recarga activa al guardar y acceso rápido al nuevo panel de configuración.

A continuación se incluye más información sobre cada una de las nuevas características:

  • Reinicio sencillo de las aplicaciones: ahora puede reiniciar fácilmente la aplicación en ejecución si es necesario aplicar una edición superficial por medio de una recompilación, con independencia de si la aplicación se ha iniciado con el depurador o sin él (nuevo para aplicaciones de .NET 6).
  • Recarga activa al Guardar: en versiones preliminares anteriores, solo podía aplicar cambios de Recarga activa al guardar en proyectos de ASP.NET, para todos los demás proyectos, tenía que hacer clic explícitamente en el botón de Recarga activa. En la versión final, ahora es posible usar la Recarga activa con la tecla de guardado para cualquier tipo de proyecto. Esta opción es opcional, pero una vez habilitada se aplicará a todas las sesiones futuras de Visual Studio a menos que la desactive.
  • Acceso sencillo a la configuración: hemos agregado un panel de opciones de Recarga activa para ofrecer más control cuando se habilita o deshabilita Recarga activa. Puede acceder a esta configuración en Visual Studio "Opciones > Recarga activa de .NET / C++", o bien desde el menú desplegable de los botones Recarga activa si hace clic en Configuración.

También hemos agregado un cuadro de diálogo de edición superficial mejorado que está disponible al ejecutar la aplicación .NET sin el depurador.

New Rude Edit dialog for Hot Reload in Visual Studio 2022

Este nuevo cuadro de diálogo tiene varias mejoras, como:

  • Una opción optativa de la sesión de Visual Studio para volver a generar y aplicar cambios en cada edición superficial de Recarga activa. Una vez activada, se aplica a todas las ediciones superficiales futuras hasta que se reinicie Visual Studio.
  • Un comando de recompilación y aplicación de cambios de código que se puede realizar con un solo clic, en lugar de varios pasos manuales.
  • Y fácil acceso a la configuración.

El cuadro de diálogo también le permite seguir editando si no desea realizar ninguna acción automatizada como antes.

Hay una limitación conocida: este nuevo cuadro de diálogo no estará disponible en la versión de disponibilidad general al usar el depurador, pero el trabajo para que esté disponible en este escenario se completará en una actualización futura.

Compatibilidad con C++

Al usar Visual Studio 2022 e iniciar la aplicación con el depurador, ahora es posible volver a cargar de forma activa una aplicación nativa de C++ cuando se ejecuta en el depurador (F5) mediante el botón ‘Recarga activa’. Recarga activa también se admite para aplicaciones creadas con proyectos de CMake y OpenFolder.

Esta experiencia está respaldada por la tecnología nativa Editar y continuar. Para ver las ediciones admitidas, consulte nuestra documentación.

Escenarios y marcos de trabajo de aplicaciones .NET admitidos

Desde que anunciamos Recarga activa en mayo de 2021, una pregunta muy habitual de los desarrolladores de .NET ha sido "¿funcionará Recarga activa con mi combinación de versión o marco de aplicaciones .NET?". Hemos progresado mucho para que la respuesta sea SÍ en la mayoría de las situaciones, estos son los aspectos destacados.

  • Al usar Visual Studio 2022 e iniciar la aplicación con el depurador, la experiencia básica de Recarga activa funciona con la mayoría de los tipos de aplicaciones .NET y versiones de marco, esto incluye .NET Framework, .NET Core y .NET 5+ (para C# y VB.NET, según corresponda). El tipo de aplicaciones que se admiten incluyen web (cambios de código subyacente), escritorio, móvil, nube y otros tipos de proyecto. Como regla general, si usa el depurador, puede asumir que Recarga activa estará disponible, pruébelo.
  • Cuando se usa Visual Studio 2022 pero no se usa el depurador (por ejemplo, mediante CTRL-F5 para iniciar la aplicación), Recarga activa ahora está disponible incluso sin el depurador cuando el destino es la mayoría de los tipos de aplicaciones de .NET 6. Esto significa que las aplicaciones que no tienen como destino .NET 6 (.NET 5 o una versión inferior) no admitirán el escenario "sin depurador" y deben usar el depurador para obtener la compatibilidad con Recarga activa.
  • Al usar Visual Studio 2022 con una aplicación .NET 6, se admiten la mayoría de los tipos de escenarios. Esto no se limita a la nueva característica "sin depurador" mencionada anteriormente. También incluye otras nuevas funcionalidades, como la compatibilidad para la Recarga activa en los proyectos de Blazor y, más generalmente, la edición de archivos de Razor en cualquier aplicación ASP.NET Core y Recarga activa de CSS. El uso de Visual Studio 2022 y las aplicaciones que tienen como destino .NET 6 juntos le ofrecerá, definitivamente, la experiencia de Recarga activa más eficaz. Esperamos que la pruebe.

En las secciones siguientes, ofreceremos más información sobre el resumen anterior y profundizaremos más sobre este tema.

Visual Studio 2022 con una aplicación .NET, al usar el depurador

Al usar Visual Studio 2022 e iniciar la aplicación con el depurador, Recarga activa funciona con la mayoría de los marcos de trabajo de la aplicación, incluidos los tipos de aplicación típicos como Console, Windows Forms (WinForms), WPF, UWP, WinUI 3* y la mayoría de los tipos de proyectos web de ASP.NET (para las ediciones de código subyacente), incluidos ASP.NET MVC, API web e incluso proyectos de Web Forms más antiguos. Esta lista también es solo un ejemplo. En verdad, en cualquier lugar que tenga .NET y use el depurador Visual Studio administrado, debe obtener compatibilidad básica de Recarga activa.

Esto significa que incluso los proyectos como Azure Functions funcionarán bien en este escenario. Le recomendamos que pruebe su combinación y nos haga saber si encuentra algún problema.

*WinUI 3 usa de forma predeterminada la depuración en modo mixto, que no admite Recarga activa. Puede modificar esto en la configuración del proyecto habilitando el depurador administrado, lo que permitirá que Recarga activa funcione correctamente.

Cuando se usa Visual Studio 2022 con una aplicación .NET, pero no con el depurador

Recarga activa ahora está disponible sin el depurador al tener como destino la mayoría de los tipos de aplicaciones de .NET 6, incluidos los tipos de proyecto como Console, WPF, Windows Forms (WinForms), ASP.NET Core MVC, Web API y Blazor. Sabemos que algunos desarrolladores tienen una buena razón o preferencia para iniciar sus aplicaciones sin el depurador y esperamos que esta característica adicional les aporte algo a cambio de poco o ningún impacto en el tiempo de inicio.

Esta característica es exclusiva de .NET 6+ y las aplicaciones que no tienen como destino .NET 6 (.NET 5 o una versión inferior) no admitirán el escenario "sin depurador" y deben usar el depurador para obtener acceso a la funcionalidad de Recarga activa.

Además, tenga en cuenta que no todos los tipos de proyecto se admiten para el escenario "sin depurador" en la primera versión. Concretamente:

  • Las aplicaciones para UWP no admiten Recarga activa sin el depurador, esto es así de forma intencionada y no hay ningún plan actual para mejorarlo.
  • Las aplicaciones de Xamarin.Forms destinadas a iOS y Android no admiten Recarga activa de .NET (independientemente de si está iniciando la aplicación con o sin el depurador), pero seguirá siendo compatible con Recarga activa de XAML.
  • Las aplicaciones de .NET MAUI, en un futuro inmediato, no admitirán el escenario sin depurador, pero admitirán Recarga activa de .NET mediante el depurador

Cuando se usa Visual Studio 2022 con una aplicación .NET 6, se admiten la mayoría de los escenarios

Los desarrolladores que puedan usar Visual Studio 2022 y trabajen en aplicaciones orientadas a .NET 6, obtendrán las ventajas de la experiencia de Recarga activa más perfeccionada y capaz.

Aspectos destacados de lo que sí se admite:

  • Aplicaciones Blazor (Server y WebAssembly*)
  • Edición de archivos de Razor tanto en Blazor como en sitios web de ASP.NET Core normales
  • Recarga activa de CSS
  • Recarga activa al ejecutar aplicaciones sin el depurador (como se describió anteriormente con más detalle)

Los desarrolladores que tienen como destino .NET 6 seguirán recibiendo más mejoras en futuras actualizaciones de Visual Studio 2022 y la banda de características de .NET y versiones principales. ¡Esto es solo el principio!

*En la versión de disponibilidad general de Visual Studio 2022, la compatibilidad de la Recarga activa con WebAssembly de Blazor cuando se usa el depurador de Visual Studio no está habilitada actualmente. Todavía puede utilizar Recarga activa si inicia la aplicación mediante Visual Studio sin el depurador, estamos trabajando para resolverlo en una futura actualización Visual Studio.

Servidores de ASP.NET Core admitidos

La experiencia de Recarga activa básica es compatible, generalmente, con muchos escenarios de ASP.NET. La característica más ampliamente disponible es la capacidad de cambiar el código subyacente y otros archivos de clase .NET para la mayoría de los tipos de aplicaciones web. Esta característica funciona al usar el depurador de Visual Studio y está presente en cualquier lugar en el que Editar y continuar estaba disponible anteriormente.

Para los desarrolladores de ASP.NET Core que tienen como destino .NET 6, hay funcionalidades adicionales que no están disponibles en versiones inferiores de .NET, esto incluye mejoras como:

  • CSHTML: la edición de un archivo CSHTML de Razor ahora admite muchos más tipos de ediciones.
  • Actualización del explorador: la edición de un archivo Razor ahora actualizará automáticamente los cambios en el explorador web al realizar la depuración. Anteriormente esto solo estaba disponible al iniciar la aplicación sin el depurador.
  • Recarga activa de CSS: ahora es posible cambiar los archivos CSS mientras se ejecuta la aplicación y los cambios se aplicarán inmediatamente a la aplicación en ejecución a medida que escriba.
  • Sin depurador: ahora obtendrá Recarga activa al usar Visual Studio para iniciar la aplicación web sin el depurador (CTRL-F5).

Nota: al trabajar en una aplicación Blazor Wasm y usar Visual Studio 2022 (17.0), Recarga activa para Razor Pages solo funciona al iniciar aplicaciones sin el depurador. Agregaremos compatibilidad con el depurador en una actualización futura.

Ediciones de .NET admitidas

La experiencia de Recarga activa de .NET cuenta con la tecnología del mecanismo Editar y Continuar, hemos realizado mejoras para admitir tipos adicionales de ediciones que van más allá de lo que era posible originalmente en versiones anteriores. Estas mejoras incluyen:

  • Adición, actualización o eliminación de atributos personalizados
  • Adición o actualización de estructuras de registros
  • Adición o actualización de directivas #line
  • Edición de expresiones Switch
  • Edición de archivos con directivas #line, incluidos los cambios en la propia directiva
  • Edición de instrucciones de nivel superior
  • Edición del código que use cualquiera de las nuevas características de C# 10, como directivas using globales, espacios de nombres con ámbito de archivo, lambdas mejoradas y constructores de struct sin parámetros
  • Cambio de nombre de parámetros lambda
  • Cambio de nombre de los parámetros de los métodos existentes

Las mejoras anteriores están disponibles para las experiencias de Recarga activa y de Editar y Continuar.

Actualizaciones adicionales

  • Recarga activa y Editar y continuar con varios procesos: ahora es posible usar de forma confiable las experiencias Recarga activa y Editar y continuar cuando están asociadas a varios procesos. Anteriormente, esta funcionalidad no era totalmente compatible y no siempre funcionaba correctamente; esto ya se ha corregido.
  • Actualización de los mensajes de error y advertencia: hemos actualizado los mensajes de error y advertencia para que sean más claros cuando los mensajes se aplican tanto a EnC como a Recarga activa. Para ello, los mensajes son más genéricos para que la terminología de edición y continuación no se utilice durante operaciones de Recarga activa
  • Pruebas unitarias más rápidas de aplicaciones .NET: la tecnología de Recarga activa ahora se puede usar como una característica experimental para acelerar las pruebas unitarias al tener como destino .NET 6. Para más información, consulte la sección de pruebas de estas notas de la versión.

Escenarios de .NET no admitidos

Incluso en la versión final, todavía habrá algunos escenarios no admitidos que debe tener en cuenta:

  • Las aplicaciones de Xamarin.Forms no admiten los escenarios de Recarga activa de .NET en iOS y Android. Al dirigirse a una aplicación para UWP, tendrá compatibilidad parcial con Recarga activa. Esto es así de forma intencionada y no esperamos realizar ninguna otra mejora. (Nota: Recarga activa de XAML seguirá estando disponible y compatible con los clientes de Xamarin.Forms en el SDK más reciente).
  • Las aplicaciones de .NET MAUI no se admiten en esta versión, para trabajar con .NET MAUI y Recarga activa consulte las notas de la versión de Visual Studio 2022 Update 1 Preview 1 para obtener más información.
  • Las aplicaciones creadas con F# o las que tienen como destino .NET Native no admitirán Recarga activa.

Productividad de .NET

Ahora la refactorización de espacios de nombres de sincronización está disponible en el menú contextual de un proyecto o una carpeta del Explorador de soluciones, lo que permite sincronizar fácilmente los espacios de nombres para que coincidan con la estructura de carpetas.

Sync namespaces from Solution Explorer

Ahora la configuración del análisis de código en segundo plano está disponible en el menú contextual del Explorador de soluciones. Haga clic con el botón derecho en el nodo de la solución en el Explorador de soluciones y seleccione Análisis y limpieza de código. Después, seleccione Establecer ámbito del análisis a fin de configurar el ámbito para el análisis de código en segundo plano.

  • Ahora hay una refactorización que introduce un parámetro que moverá una expresión de una implementación de método a sus llamadores agregando un nuevo parámetro. Coloque el cursor en la línea que contiene la expresión o resalte la expresión. Presione (Ctrl+.) para activar el menú Quick Actions and Refactorings (Acciones rápidas y refactorizaciones). Seleccione Introduce parameter for{0} (Introducir parámetro para ) o Introduce parameter for all occurrences of {0} (Introducir parámetro para todas las repeticiones de ). Ambas opciones tendrán tres opciones de control flotante para (1) insertar la expresión actualizada en todos los sitios de llamada; (2) extraer y crear un nuevo método que devuelva la expresión y agregue un argumento en los sitios de llamada; o (3) crear una sobrecarga del método que contenga la expresión y llame al método original.

Introduce parameter from Quick Actions menu

  • Hay un nuevo comando denominado Track Value Source (Seguimiento de origen de valor) que permite realizar el análisis del flujo de datos para determinar cómo se podrían haber pasado determinados valores en un punto determinado y dónde se podrían pasar. Haga clic con el botón derecho en cualquier miembro determinado y seleccione Track Value Source (Seguimiento de origen de valor) en el menú contextual.

Track value source in right click menu

  • Se abrirá la ventana Value Tracking (Seguimiento de valores), que le permite analizar los resultados:

Track Value Source Window

  • Se ha agregado una opción para subrayar las variables que se reasignan. Esta opción está desactivada de forma predeterminada, por lo que tendrá que activarla en Herramientas > Opciones > Editor de texto > C# o Basic > Opciones avanzadas y seleccionar Underline reassigned variables (Subrayar variables reasignadas).

Underline reassigned variables in Editor

  • Hemos agregado una opción de búsqueda en el cuadro de diálogo Generates Overrides (Generar invalidaciones), que le permite buscar y seleccionar rápidamente miembros para invalidar.

Search in Generate Overrides Dialog

  • La información rápida de las <etiquetas> XML ahora conserva los espacios en blanco y los bloques CDATA. mantenga el cursor sobre el elemento. Información rápida mostrará los estilos admitidos de los comentarios XML encima del código.

Quick Info for XML preserves whitespace

  • La ventana Buscar todas las referencias ahora agrupará proyectos de varios destinos para ayudar a reducir el ruido visual.

Find All Reference Groups Multi-Targeted Projects

  • Ahora hay una refactorización que quita los tipos repetitivos en Visual Basic.
  • Ir a implementación ya no llevará a los miembros con declaraciones abstractas, que también se invalidan.

Herramientas del lenguaje de programación C#

En C# 8.0 se han incluido tipos de referencia que admiten un valor NULL, que permiten declarar si se espera un valor NULL. Para usar tipos de referencia que admiten un valor NULL, debe agregar el elemento <Nullable>enable</Nullable> al archivo de proyecto o agregar el elemento #nullable enable pragma a cada archivo de código fuente del proyecto. Para ayudar a simplificar este proceso, ahora se incluye automáticamente el elemento <Nullable>enable</Nullable> para nuevos proyectos de .NET.

En C# 10.0 presentamos un File-scoped namespace (Espacio de nombres con ámbito de archivo) que ofrece la opción de no anidar definiciones de clase dentro de un espacio de nombres. Ahora tenemos una refactorización para convertir un espacio de nombres en un espacio de nombres con ámbito de archivo. Para usar el espacio de nombres con ámbito de archivo, primero debe agregar el elemento <LangVersion>preview</LangVersion> al archivo del proyecto. A continuación, coloque el cursor en un espacio de nombres. Presione (Ctrl+. ) para activar los menús Acciones rápidas y refactorizaciones. Seleccione Convert to file-scoped namespace (Convertir en espacio de nombres con ámbito de archivo).

File-scoped namespace refactoring

Ahora hay una refactorización que prefiere is not null por encima de is object cuando se aplica a los tipos de valores. Para usar esta nueva refactorización, coloque el cursor en una comprobación de tipos. Presione (Ctrl+. ) para activar los menús Acciones rápidas y refactorizaciones. Seleccione Prefer null check over type check (Preferir comprobación NULL sobre la comprobación de tipo).

Navegación a orígenes descompilados

Ahora la opción Navigate to Decompiled Sources (Navegar a orígenes descompilados) está habilitada de forma predeterminada, lo que le permite navegar a declaraciones de tipos de biblioteca. La opción Navigate to Decompiled Sources (Navegar a orígenes descompilados) está habilitada al invocar Ir a definición en un símbolo de biblioteca en el código fuente y en orígenes descompilados.

Mejoras en el editor

Los comentarios XML ahora generarán automáticamente una etiqueta <exception> dentro de una etiqueta <summary>, lo que le permite agregar una descripción cuando un método produce excepciones explícitamente.

En Visual Studio 2019 se publicó Inheritance Margin (Margen de herencia), que agrega iconos a los márgenes que representan las implementaciones e invalidaciones del código. Al hacer clic en el icono del margen de herencia se mostrarán las opciones de herencia que puede seleccionar para navegar a ellas. En esta versión, la opción Inheritance Margin (Margen de herencia) está habilitada de forma predeterminada. Para deshabilitar esta opción, vaya a Herramientas>Opciones>Editor de texto>C# o Básico>Avanzado y anule la selección de Enable Inheritance Margin (Habilitar margen de herencia).

Inheritance Margin

Lenguajes de programación

C# 10

  • Estructuras de registros y expresiones with en estructuras (record struct Point(int X, int Y);, var newPoint = point with { X = 100 };).
  • Directivas using globales: las directivas global using evitan repetir las mismas directivas using en muchos archivos del programa.
  • Asignación definitiva mejorada: el análisis de asignación definitiva y nulabilidad controla mejor patrones comunes como dictionary?.TryGetValue(key, out value) == true.
  • Cadenas interpoladas constantes: las cadenas interpoladas compuestas por constantes son en sí mismas constantes.
  • Patrones de propiedad extendidos: los patrones de propiedad permiten acceder a miembros anidados (if (e is MethodCallExpression { Method.Name: "MethodName" })).
  • Registro ToString sellado: un registro puede heredar un registro base con un objeto ToString sellado.
  • Generadores de código fuente incrementales: mejore la experiencia de generación de código fuente en proyectos grandes mediante el desglose de la canalización de generación de código fuente y el almacenamiento en caché de los resultados intermedios.
  • Deconstrucciones mixtas: se pueden combinar asignaciones de desconstrucción y declaraciones de desconstrucción ((existingLocal, var declaredLocal) = expression).
  • AsyncMethodBuilder de nivel de método: el objeto AsyncMethodBuilder que se usa para compilar un método async se puede invalidar localmente.
  • Directiva de intervalo #line: permite a los generadores de código fuente, como Razor, el control específico de la asignación de líneas con directivas #line que especifican el intervalo de destino (#line (startLine, startChar) - (endLine, endChar) charOffset "fileName").
  • Mejoras en expresiones lambda: se permiten atributos y tipos de valor devuelto en las expresiones lambda; las expresiones lambda y los grupos de métodos tienen un tipo de delegado natural (var f = short () => 1;).
  • Controladores de cadena interpolada: los tipos de controlador de cadena interpolada permiten aplicar un formato eficaz a las cadenas interpoladas en asignaciones e invocaciones.
  • Espacios de nombres con ámbito de archivo: los archivos con un único espacio de nombres no necesitan llaves adicionales ni sangría (namespace X.Y.Z;).
  • Constructores de estructuras sin parámetros: admiten constructores sin parámetros e inicializadores de campo de instancia para tipos de estructura.
  • CallerArgumentExpression: este atributo permite capturar las expresiones que se pasan a un método como cadenas.

Consulte el estado de la característica de lenguaje de C# y los cambios importantes para obtener más información.

Editor de Razor (ASP.NET Core)

  • Ahora hay compatibilidad con Recarga activa en los archivos de Razor.

Reload Support in Razor Files

  • Hemos realizado mejoras significativas en el rendimiento del editor de Razor.

  • Hemos mejorado el formato y la sangría, lo que hace que sea más confiable y bastante más rápido.

  • Hemos agregado nuevos colores de Razor. Estos colores se pueden personalizar en Herramientas > Opciones > Entorno > Fuentes y colores.

  • Los elementos TagHelper ahora están coloreados y tienen compatibilidad con la clasificación en información rápida y en informaciones sobre herramientas de finalización de IntelliSense.

TagHelpers Classification Support

  • Hemos mejorado el resaltado de llave angular y la navegación para construcciones de Razor.

  • Los comentarios ahora tienen finalización automática, sangría inteligente, inclusión automática de continuaciones de comentarios y navegación por comentarios en bloque.

Pruebas remotas de la versión preliminar experimental temprana

Tenemos una versión preliminar experimental muy temprana de la habilitación de ejecución de pruebas en entornos remotos, como contenedores Linux, WSL y a través de conexiones SSH. Aunque se trata de una funcionalidad muy valiosa, le pedimos paciencia, ya que esta característica todavía está en una etapa experimental muy temprana mientras recopilamos comentarios. Es posible que no experimente la fluidez que normalmente obtiene, ya que, como puede imaginar, hay una gran cantidad de escenarios en cuanto a la forma en que podemos comunicar y administrar un entorno conectado desde Visual Studio. Estos son algunos requisitos para usar esta versión experimental de pruebas remotas:

  • Debe instalar las dependencias necesarias en el entorno de destino. Esto significa que, si quiere que las pruebas destinadas a .NET 3.1 se ejecuten en un contenedor de Linux, debe asegurarse de que el contenedor tenga instalado .NET 3.1 a través del Dockerfile. Algún día nos gustaría crear una experiencia de instalación que permita la adquisición fácil de cualquiera de las dependencias de prueba, pero, por ahora, estamos dejando la mayor parte del aprovisionamiento del entorno a la especificación del usuario.
  • Planee la supervisión del estado de conexión al entorno remoto a través del panel Salida > Pruebas. Por ejemplo, si el contenedor se ha detenido, aparecerá un mensaje en el panel Salida > Pruebas. Es posible que no detectemos todos los escenarios, así que compruebe la salida si parece que la conexión se ha perdido. En concreto, si el panel Salida no está establecido en "Prueba", es posible que no vea inmediatamente el mensaje. Todavía estamos experimentando con el modelo de notificación mejor cuando se pierden las conexiones, por lo que agradecemos sus comentarios. Si parece que la conexión se ha perdido, puede usar la lista desplegable de entornos de pruebas remotas en el Explorador de pruebas para volver a establecer la conexión con el entorno local y, luego, seleccionar de nuevo el entorno remoto para volver a iniciar la conexión.
  • Por ahora, la versión preliminar experimental solo va dirigida a las pruebas de .NET. Somos conscientes del interés en admitir experiencias de pruebas remotas en C++ y esperamos proporcionarlas también en algún momento.

¿Cómo puedo probar las pruebas remotas?

  • Los documentos oficiales llegarán después del período experimental. Por ahora, esto es lo que necesita para empezar las pruebas.
  • Los entornos se especifican mediante testenvironments.json en la raíz de la solución. La estructura de archivos JSON sigue el esquema siguiente:
{
    "version": "1", // value must be 1
    "environments": [
        { "name": "<unique name>", ... },
        ...
    ]
}
  • Conexiones de contenedor local
    • Para conectarse a un contenedor que se ejecuta localmente, debe tener Docker Desktop en la máquina local. Opcionalmente, habilite la integración con WSL2 para mejorar el rendimiento.
    • Para Dockerfile, el entorno se puede especificar en testEnvironments.json en la raíz de la solución:
          {
          "name": "<name>",
          "localRoot": "<path to local environment>", // optional
          "type": "docker",
          "dockerImage": "<docker image tag>",
          }
      
      Por ejemplo:
      {
      "version": "1",
      "environments": [
          {
          "name": "linux dotnet-core-sdk-3.1",
          "type": "docker",
          "dockerImage": "testenv"
          }
      ]
      }
      
    • Este es un ejemplo de Dockerfile para ejecutar pruebas destinadas a .NET 3.1.
      FROM mcr.microsoft.com/dotnet/core/sdk:3.1
      
    • Compile el contenedor con el siguiente comando (incluya el "." al final): docker build -t <docker image name> -f <path to Dockerfile> .
  • Conexiones WSL2 locales
    • Debe habilitar la integración con WSL2 en la máquina local.
    • El entorno se puede especificar en testEnvironments.json en la raíz de la solución mediante este esquema:
      {
      "version": "1",
      "environments": [
          {
          "name": "WSL-Ubuntu",
          "type": "wsl",
          "wslDistribution": "Ubuntu"
          }
      ]
      }
      
  • Conexiones SSH
    • Vaya a Herramientas > Opciones > Multiplataforma > Administrador de conexiones para agregar o quitar conexiones SSH. Al seleccionar "Agregar", podrá escribir el nombre de host, el puerto y las credenciales que necesite.
    • El entorno se puede especificar en testEnvironments.json en la raíz de la solución de la manera siguiente:
      {
      "version": "1",
      "environments": [
          {
          "name": "ssh-remote",
          "type": "ssh",
          "remoteUri": "ssh://user@hostname:22"
          }
      ]
      }
      
  • El entorno activo se selecciona a través de una lista desplegable de la barra de herramientas del Explorador de pruebas. Actualmente, solo un entorno de prueba puede estar activo a la vez.

Remote testing environment drop down in Test Explorer

  • Una vez seleccionado un entorno, las pruebas se detectan y se ejecutan en el nuevo entorno.

Tests are discovered and executed in remote environments

  • Ahora puede ejecutar y depurar las pruebas dentro del entorno remoto.

    View test results from remote environment in the test explorer

  • El Explorador de pruebas puede solicitarle que instale algunos requisitos previos del entorno que faltan y que intente instalarlos, pero en última instancia, dejamos la mayor parte del aprovisionamiento del entorno remoto a la especificación del usuario.

Recarga activa en el Explorador de pruebas [experimental]: Ahora es posible probar una nueva característica experimental que agiliza la experiencia de pruebas mediante la tecnología de Recarga activa en segundo plano. Esto significa que, después de la primera ejecución de pruebas en la que todavía se requiere una compilación completa, puede realizar pequeños cambios, ejecutar las pruebas y todas esas actualizaciones se reflejarán sin tener que volver a realizar una compilación completa. Para empezar a trabajar y conocer más advertencias, consulte los detalles siguientes:

Hot reload for the Test Explorer in Visual Studio enables you to run tests without requiring a build between minor edits

  • Esta experiencia solo está disponible para los proyectos que tienen como destino .NET 6 y debe ir a "Herramientas > Opciones > Prueba"

Screenshot of Visual Studio showing enable hot reload option in Tools > Options > Test.

  • Cuando esta opción está habilitada, las pruebas se actualizan incluso con cambios no guardados en el editor. No estamos compilando, por lo que los archivos binarios del disco de la carpeta bin están obsoletos. Esto significa que es posible que vea discrepancias entre lo que hay en el disco y los resultados de las pruebas en Visual Studio. Para resolverlos y antes de insertar en el repositorio, asegúrese de realizar una compilación completa con (Ctrl+Mayús+B). Cualquier compilación explícita reemplazará los resultados de las pruebas de recarga activa por los resultados de pruebas de compilación completa normales.

  • Hay ciertos tipos de ediciones que la recarga activa no puede recoger y, en esos casos, volverá al comportamiento anterior de realizar una compilación completa de forma predeterminada. Tenga en cuenta también que solo se realiza un seguimiento de los cambios en Visual Studio, los casos opacos en el editor, como el cambio de destinos, pueden volver a requerir una compilación completa de forma predeterminada.

  • Ciertos cambios grandes (como cambiar el nombre de más de 1000 nombres de método) pueden tardar más tiempo en generar una recargar activa que simplemente volver a compilar. En estos casos, se mostrará un mensaje en la salida que solicita a los usuarios que realicen una nueva compilación completa en lugar de esperar a la recarga activa.

  • Los seguimientos de la pila aún no están disponibles con la recarga activa en el Explorador de pruebas. Si necesita usar el seguimiento de la pila, le recomendamos que realice una compilación completa.

Herramientas de prueba

  • Mostrar en el Explorador de pruebas (Ctrl+E,S) : es la capacidad de saltar desde la posición del cursor en un método de prueba en el editor hasta la posición de la prueba en el Explorador de pruebas. Esto puede recordarle una característica similar denominada Sincronizar con el documento activo que mantiene resaltado el documento en el que trabaja actualmente en el Explorador de soluciones. Este fue uno de los elementos más votados en Developer Community, por lo que agradecemos a todos los usuarios que han votado y nos han ayudado a priorizar esta característica. Mostrar en el Explorador de pruebas también está disponible en el menú contextual del editor, el glifo de prueba de CodeLens y el clic con el botón derecho en el Explorador de soluciones.

    Show in Test Explorer from right-click menuShow in Test Explorer from CodeLens

  • Actualización de compatibilidad con Prueba de carga web y Prueba automatizada de IU: la grabadora de pruebas de carga web está disponible en Visual Studio 2022. La grabadora de pruebas automatizadas de IU no se incluirá en Visual Studio 2022. Todavía podrá ejecutar pruebas automatizadas de IU y crear pruebas si escribe código en Visual Studio 2022, pero la grabadora se basa en dependencias de 32 bits que no se pueden portar. Todavía puede instalar Visual Studio 2019 en paralelo para usar la grabadora de pruebas automatizadas de IU. Como recordatorio, la prueba de carga web y la prueba automatizada de IU quedaron en desuso en 2019 y tenemos previsto quitarlas del producto cuando podamos minimizar el impacto en los usuarios. Animamos encarecidamente a los usuarios interesados en las pruebas de IU web a que adopten el nuevo marco de pruebas web multiplataforma y de código abierto Playwright. Además de admitir todos los exploradores principales y un mejor control del código asincrónico, Playwright también tiene integrada la funcionalidad de grabación de pruebas.

Ubicaciones de confianza

  • Como parte de la renovación "Configuración de confianza", quitamos la comprobación "Marca de web" y agregamos un cuadro de diálogo de advertencia que se muestra al intentar abrir código (por ejemplo, archivos, proyectos o carpetas) en el que no se confiaba previamente.
  • Ahora se puede confiar en el código en la carpeta actual o en la ubicación de la carpeta primaria.
  • Los proyectos creados por el usuario se agregan automáticamente a la lista de ubicaciones de confianza del usuario.
  • Puede omitir las comprobaciones de confianza para las ubicaciones temporales creadas por la funcionalidad de Visual Studio.

Antes de que el contenido (por ejemplo, solución, proyecto, archivo o carpeta) se abra dentro del IDE, comprobaremos si la ubicación de la carpeta ha sido de confianza previamente.

Si se detecta código que no es de confianza, se mostrará un cuadro de diálogo de advertencia que le avisará de las implicaciones de seguridad y le pedirá que confíe en el código antes del funcionamiento normal del IDE.

Nota: aunque esta característica está desactivada actualmente de forma predeterminada, se puede habilitar en Opciones > Configuración de confianza > Require a trust decision before opening content (Requerir una decisión de confianza antes de abrir el contenido).

Actualizaciones del nodo Orígenes externos

El nodo Orígenes externos del Explorador de soluciones ahora también tiene compatibilidad con C++. Además, se ha agregado un nuevo subnodo que le ofrece todos los módulos con símbolos que aún no se han cargado.

External Sources node in Solution explorer supports C++

También puede usar el menú contextual para cargar los símbolos directamente desde el Explorador de soluciones para que los módulos puedan aparecer en los nodos de origen externos. Ahora los archivos del nodo Orígenes externos también se ordenan alfabéticamente.

External Sources menu

Iconografía actualizada

  • Como parte de nuestro objetivo de actualizar la interfaz de usuario de Visual Studio 2022, encontrará iconos recién actualizados en todo el IDE atendiendo a la coherencia, la legibilidad y la familiaridad.

Examples of new icons with dark and light backgrounds

Recarga activa de XAML

Hemos actualizado la configuración de Recarga activa de XAML y las barras de herramientas en la aplicación para proporcionar claridad de que la configuración y las experiencias en la aplicación están relacionadas con Recarga activa de XAML y no con Recarga activa de .NET.

Updated in-app toolbar in XAML apps

También hemos simplificado el panel de configuración para organizar mejor las opciones comunes.

Updated XAML Settings options panel

XAML Live Preview

XAML Live Preview ya está disponible para los desarrolladores de WPF, UWP, WinUI y Xamarin.Forms que ejecutan sus aplicaciones en Android Emulator o como una aplicación de escritorio para UWP. Live Preview captura una interfaz de usuario de aplicaciones en ejecución y la incluye en una ventana acoplada dentro Visual Studio. Esto facilita el uso de Recarga activa de XAML para cambiar la aplicación mientras se ven esos cambios en el propio Visual Studio, sin necesidad de cambiar de pestaña entre la aplicación en ejecución y Visual Studio mientras se hacen cambios en el código XAML activo.

Live Preview of XAML Desktop Apps UI

Primeros pasos:

  • Inicialización de una aplicación compatible mediante el depurador
  • Active XAML Live Preview, ya sea mediante una búsqueda rápida escribiendo "XAML Live Preview" o con el botón "Show in XAML Live Preview" (Mostrar en XAML Live Preview) en las barras de herramientas de la aplicación.

Una vez iniciada la experiencia, estarán disponibles las siguientes características:

  • Desplazamiento y zoom: puede desplazarse y acercar la ventana que captura la interfaz de usuario de la aplicación, lo que le permite ajustarla a sus necesidades para mostrar la aplicación completa o solo las partes que intenta editar. El desplazamiento funciona con un panel táctil (desplazamiento con dos dedos), la rueda de desplazamiento del mouse o Ctrl+Clic para arrastrar el contenido.
  • Reglas: puede agregar una o varias reglas horizontales o verticales para superponer la aplicación en ejecución. Estas líneas se pueden mover a su posición con el mouse o el teclado. Al mover las reglas con el teclado, use las teclas de dirección para un posicionamiento preciso y Ctrl+tecla de flecha para un posicionamiento rápido. También puede eliminar reglas seleccionándolas (haciendo clic en ellas) y presionando la tecla de eliminación.
  • Selección de elementos y sugerencias de información: con la selección de elementos, puede seleccionar el elemento XAML que quiere editar con la misma característica a la que podría estar acostumbrado desde el Árbol visual dinámico o la barra de herramientas de la aplicación. Una vez seleccionado, también puede habilitar la nueva característica "sugerencias de información" para obtener información adicional sobre el elemento seleccionado, como la fuente, el color, la información de margen o relleno, etc. Al usar Selección de elementos, considere la posibilidad de habilitar Vista previa del elemento seleccionado, ya sea a través del botón de la barra de herramientas Árbol visual dinámico o mediante Depurar > Opciones > Hot Reload settings (Configuración de Recarga activa) para ir al XAML de origen.
  • Cambio de ventana: puede controlar cuál de las ventanas de la aplicación se captura.

Mejora de la experiencia de enlace XAML

  • Se han mejorado los iconos de enlace de datos en el Inspector de propiedades. Ahora puede acceder rápidamente al cuadro de diálogo enlace de datos haciendo clic en un icono de "cilindro" junto a una propiedad y puede borrar el enlace haciendo clic en el icono "x".

Binding icons in Property Inspector

  • Se ha agregado la pestaña Enlace en Acciones rápidas para que pueda crear enlaces con solo unos pocos clics desde el diseñador XAML.

Binding tab in Quick Actions

  • Se ha agregado el cuadro combinado Propiedad de destino al cuadro de diálogo Enlace de datos para seleccionar la propiedad en cualquier lugar.

Updated Data Binding Dialog with Target Property combo box

Problemas más votados de Developer Community

Vea nuestra lista completa de correcciones de Developer Community en esta versión.


Problemas conocidos

Vea todos los problemas abiertos y las soluciones alternativas disponibles en Visual Studio 2022 en el vínculo siguiente.

Comentarios y sugerencias

Nos encantaría que nos diera su opinión. Puede notificar un problema o sugerir una característicaFeedback Icon mediante el icono Enviar comentarios en la esquina superior derecha del instalador o del IDE de Visual Studio, o bien desde Ayuda > Enviar comentarios. Puede realizar un seguimiento de sus incidencias en Developer Community de Visual Studio, donde puede agregar comentarios o encontrar respuestas. También puede obtener ayuda gratuita para la instalación a través de nuestro servicio de soporte técnico de chat en directo.


Blogs

Saque partido de la información y de las recomendaciones disponibles en los blogs de Developer Tools que le mantendrán al día sobre las nuevas versiones y con publicaciones con mucha información sobre una gran variedad de características.


Principio de página