Notas de la versión 15.8 de Visual Studio 2017
Comunidad de desarrolladores | Requisitos del sistema | Compatibilidad | Código distribuible | Términos de licencia | Blogs | Problemas conocidos
Nota:
Esta no es la versión más reciente de Visual Studio. Para descargar la versión más reciente, visite el sitio de Visual Studio.
Período de tiempo de soporte técnico
Esta versión ya no es compatible. Para obtener más información sobre la compatibilidad con Visual Studio, revise la directiva de compatibilidad para Visual Studio 2017.
Consulte la versión más reciente de las notas de la versión o visite el sitio de Visual Studio para descargar la versión más reciente compatible de Visual Studio 2017.
Blog de Visual Studio
El blog de Visual Studio es la fuente oficial de información sobre el producto de la mano del equipo de ingeniería de Visual Studio. Encontrará información detallada sobre las versiones 15.8 de Visual Studio 2017 en las entradas siguientes:
- Visual Studio 2017 versión 15.8 -- Leer entrada de blog más reciente
Versiones de la versión 15.8 de Visual Studio 2017
- 2 de noviembre de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.9
- 24 de octubre de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.8
- 10 de octubre de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.7
- 2 de octubre de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.6
- 20 de septiembre de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.5
- 11 de septiembre de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.4
- 6 de septiembre de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.3
- 28 de agosto de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.2
- 17 de agosto de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.1
- 14 de agosto de 2018: versión secundaria de Visual Studio 2017, versión 15.8
Importante
Avisos de seguridad de Visual Studio 2017, versión 15.8
- 10 de octubre de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.7
- 11 de septiembre de 2018: actualización de mantenimiento de Visual Studio 2017, versión 15.8.4
- 14 de agosto de 2018: Visual Studio 2017, versión 15.8
- 10 de julio de 2018: Visual Studio 2017, versión 15.8 Preview 4
- 26 de junio de 2018: Visual Studio 2017, versión 15.8 Preview 3
- 8 de mayo de 2018: Visual Studio 2017, versión 15.8 Preview 1
Resumen de las nuevas características importantes de la versión 15.8
- El instalador ahora ofrece la opción de descargar todos los archivos antes de empezar la instalación.
- Se mejoró el rendimiento durante la carga y recarga del proyecto y la conmutación de rama.
- Los tiempos de carga de una solución se pueden mejorar al deshabilitar la restauración automática de documentos.
- Se han realizado importantes mejoras en el rendimiento de las pruebas mientras se ejecutan soluciones de gran tamaño con varios proyectos de prueba.
- Visual Basic ahora proporciona una importante mejora en el rendimiento.
- La característica Generación de perfiles de rendimiento ahora ofrece la posibilidad de pausar o reanudar la recopilación de datos. También se ha agregado una nueva herramienta Seguimiento de asignación de objetos de .NET.
- Se han realizado mejoras en la herramienta Uso de CPU para la generación de perfiles de rendimiento.
- Se agregaron nuevas características de productividad, como limpieza del código, refactorización Invert-If, Go to Enclosing Block (Ir a bloque de inclusión), compatibilidad con varios símbolos de inserción y nuevos perfiles de teclado.
- Puede elegir la instancia de destino al depurar las extensiones.
- Inicie Snapshot Debugger directamente desde la página Resumen de publicación.
- Se introdujo F# 4.5, una versión de lenguaje nueva que admite completamente
Span<'T>
y contiene importantes mejoras para los seguimientos de la pila para código asincrónico. - Se ha mejorado el rendimiento y se han agregado características nuevas en las herramientas de F#, como Ctrl+Clic para Ir a la definición.
- Las mejoras en el conjunto de herramientas de C++ incluyen mejoras en el enlazador y el optimizador de SSA.
- Las adiciones de desarrollo multiplataforma de C++ incluyen actualizaciones de ClangFormat y plantillas de configuración en carpeta abierta y CMake para MinGW, Linux y Windows.
- Los cambios en la productividad de C++ incluyen IntelliSense para plantilla, información rápida en macros, conversión a bombillas de constexpr, subrayados ondulados de análisis de código en el editor, etc.
- Las mejoras en la depuración de C++ incluyen actualizaciones de Solo mi código y nuevos puntos de interrupción de datos.
- Se han implementado bastantes mejoras y características de JavaScript y TypeScript.
- Ahora puede administrar bibliotecas de cliente en los proyectos web.
- Se agregó una nueva experiencia de contenedor Docker de proyecto único para los proyectos web de ASP.NET Core.
- Ahora puede personalizar la etiqueta de una imagen de Docker con las mejoras en la publicación hechas en esta versión.
- Las mejoras de Xamarin incluyen compatibilidad con Xcode 94. y compilaciones incrementales de Android más inteligentes.
- Puede usar el emulador Android de Google en paralelo con Hyper-V en la actualización de abril de 2018 de Windows 10.
- Se agregó un editor de vistas en dos paneles para el diseñador de Xamarin.Android.
- Ahora, el Controlador de vista previa de Xamarin.Forms tiene compatibilidad con el cuadro de herramientas y lo hemos movido a un editor de vista en dos paneles.
- Ahora puede usar la depuración entre lenguajes con Python 3.7.0rc1.
- La función de migración de la configuración de Azure Functions local a Azure ahora muestra valores nuevos.
- Con compatibilidad agregada de Azure Functions, ahora tiene un nuevo host de destino en el cuadro de diálogo Configurar la entrega continua a Azure.
- La mejora en el panel de resumen del Explorador de pruebas ahora ofrece un estado de prueba más informativo.
- Extensiones del adaptador de prueba de .NET: cambio importante y desuso.
- Se agregó compatibilidad nativa para el Protocolo de servidor de lenguaje.
- Ahora existe compatibilidad de secretos con los proyectos de .NET Framework de ASP.NET.
- Visual Studio ahora permite actualizar aplicaciones de .NET Framework de ASP.NET para mejorar el rendimiento de la compilación.
- Ahora, Visual Studio ofrece las herramientas de desarrollo de .NET Framework 4.7.2 en todas las plataformas que incluyan el entorno de ejecución 4.7.2.
- Los paquetes asincrónicos de carga automática se retrasan hasta que finalizan el inicio y la carga de la solución.
- Visual Studio Build Tools 2017 ahora admite Flujo de trabajo e incluye el VSSDK.
- Estado de TFS y Git ahora se actualiza correctamente para reflejar los cambios de archivos externos de los proyectos de .NET Core.
- Se incluye el SDK de .NET Core 2.1.400.
Principales problemas corregidos en la versión 15.8
Estos son los problemas notificados por los clientes que se han solucionado en la versión 15.8:
- No se encuentra SSDT en Visual Studio Build Tools 2017.
- Error al desinstalar Anaconda durante la actualización (error 87).
- La actualización a 15.7 genera un error: PackageId:Anaconda3.Exe.x64;PackageAction:Uninstall;ReturnCode:87;.
- La actualización de Visual Studio genera los errores UWP BuildError en MakePri 0x80073b0f y 0xdef00532 en Mi solución.
- VS 2017 tiene problemas con la característica de plantilla de exportación de ASP.NET Core.
- Explorador de pruebas (pruebas SpecFlow): va al archivo de clase de característica, no al archivo de característica.
- La plantilla de proyecto exportada de un proyecto de C++ solo contiene vcxproj y vcxproj.filters, no orígenes ni encabezados.
- Generación de código incorrecta en x64.
- Clic con el botón derecho en el menú contextual de una carpeta de solución no hace nada en Enterprise 15.8 Preview 2.
- VS2017 no recuerda la posición en pantalla ni el tamaño para usar en 3 monitores.
- BOM no UTF8 hace que distintas ventanas muestren advertencias de codificación erróneas.
- Doble clic en una palabra solo selecciona el inicio de la palabra y no toda la palabra.
- VS2015 y VS2017 crear una carpeta de depuración vacía en la ruta de acceso que se define en $(SolutionDir), a pesar de que $(OutDir) y $(IntDir) usan configuraciones totalmente distintas.
- Si crea un proyecto basado en diálogo MFC en un entorno en japonés con VS2017, editar el diálogo generará errores en la compilación.
- Presentación del texto Progreso de la descarga en el Instalador de Visual Studio.
- Clic con el botón derecho en el proyecto ejecutable en Explorador de soluciones -> Depurar -> Iniciar nueva instancia elige un proyecto aleatorio desde la solución para empezar.
- La compilación de línea de comandos DEVENV genera este error: Esta operación solo se puede realizar en el subproceso de UI.
- Buscar y reemplazar recuerda los tipos de archivo.
- Los mensajes de error no se pueden leer en la consola del administrador de paquetes debido al color de la fuente y al color de fondo.
- La versión preliminar de la publicación web de Visual Studio Community 2017 15.4.1 genera un error del tipo "no autorizado".
- Apertura de resultados de pruebas en VS 2017 para compilaciones de XAML.
Vea todos los problemas detectados por los clientes que se han solucionado en Visual Studio 2017, versión 15.8.
Detalles de las novedades de la versión 15.8
Visual Studio 2017, versión 15.8.0
publicado el 14 de agosto de 2018
Nuevas características de la versión 15.8
Instalar
Ahora tiene la opción de descargar todos los archivos de instalación antes de iniciar la instalación.
- Para usar esta nueva opción, seleccione la opción "Download all, then install" (Descargar todo e instalar después) en el instalador (figura 1). Se recomienda esta opción si tiene una conexión a Internet más lenta.
- La opción predeterminada sigue siendo "Install while downloading" (Instalar durante la descarga), que descarga e instala en paralelo.
Rendimiento
Esta versión contiene las siguientes mejoras en el rendimiento:
- La conmutación de rama para proyectos de C#, VB y C++ es mucho más rápida para las soluciones de gran tamaño, porque ya no se requiere recargar la solución.
- El tiempo para descargar y recargar un pequeño conjunto de proyectos de C# y VB en soluciones de gran tamaño se redujo de minutos a varios segundos.
- Se agregó una opción para deshabilitar la reapertura de documentos que se abrieron en la sesión anterior, porque reabrir ciertos tipos de archivos o diseñadores puede retrasar la carga de la solución.
- Alterne esta opción en Herramientas > Opciones > Proyectos > Soluciones > General.
Rendimiento de las pruebas
Se mejoró considerablemente el rendimiento al ejecutar algunas pruebas en una solución de gran tamaño con varios proyectos de prueba. En nuestros laboratorios, una solución con más de 10 000 MSTests ejecutó una prueba única hasta más de un 82 % más rápido.
Mejora en el rendimiento de Visual Basic
Visual Basic ahora proporciona una mejora importante en el rendimiento cuando se usa el patrón CInt(Fix(number))
para convertir desde tipos no enteros a enteros.
Generación de perfiles de rendimiento
Esta versión contiene las siguientes mejoras en la generación de perfiles de rendimiento:
Se ha agregado la funcionalidad para iniciar la generación de perfiles en un estado pausado:
La herramienta Uso de CPU del generador de perfiles de rendimiento (ALT-F2) ahora se puede iniciar en un estado pausado (figura 2). Esto puede ser útil mientras se espera un escenario que merece una investigación de Uso de CPU. Si la recopilación de Uso de CPU está deshabilitada al iniciar, el generador de perfiles de rendimiento no recopila datos de la pila de muestras de Uso de CPU hasta que se habilita específicamente. Esto da lugar a una cantidad de datos para recopilar y analizar mucho más pequeña, lo que hace que las investigaciones de rendimiento sean más eficaces.
Para iniciar una sesión con la recopilación de muestras de Uso de CPU deshabilitada, haga clic en el icono de engranaje situado junto a Uso de CPU en la página de inicio del generador de perfiles de rendimiento. En la página de propiedades de Uso de CPU, desactive Habilitar generación de perfiles de CPU (muestreo) y haga clic en Aceptar para guardar la configuración.
Una vez que se inicia la aplicación de destino, al hacer clic en Iniciar en la página de inicio del generador de perfiles de rendimiento, se ve un gráfico de uso de la CPU (figura 3) que permite controlar la generación de perfiles de la CPU. Para habilitar la recopilación de datos de la pila de muestras de Uso de CPU, seleccione Habilitar generación de perfiles de CPU en el centro de la vista, o bien haga clic en Registrar perfil CPU, justo debajo del gráfico de uso de la CPU. Puede hacer clic en Registrar perfil CPU para habilitar o deshabilitar la recopilación de datos de muestras tantas veces como quiera. El color del gráfico de uso de la CPU cambia para indicar si la colección de muestras está habilitada o deshabilitada en ese momento determinado.
Se agregó una herramienta para el seguimiento de asignación de objetos de .NET:
- La herramienta de seguimiento de asignación de objetos de .NET se une a la familia de herramientas disponibles en el Generador de perfiles de rendimiento. La invocación de esta herramienta para una sesión del generador de perfiles de rendimiento inicia la recopilación de un seguimiento de la pila de cada asignación de objetos de .NET que se produce en la aplicación de destino. Estos datos de la pila se analizan junto con la información de tamaño y tipo de objeto para revelar detalles de la actividad de memoria de la aplicación. Puede determinar rápidamente los patrones de asignación del código e identificar las anomalías. Además, en los eventos de recolección de elementos no utilizados (GC), puede determinar fácilmente los objetos que se han recopilado y conservado, e identificar con rapidez los tipos de objetos que dominan el uso de memoria de la aplicación.
- Esto resulta especialmente útil para los escritores de API con el fin de ayudar a minimizar las asignaciones. Muchas aplicaciones saturan los límites del búfer que participa en la recopilación de datos de diagnóstico, pero las aplicaciones de prueba pequeñas que prueban escenarios clave de una API se pueden diagnosticar bastante bien. Mientras la aplicación de prueba se ejecuta, el generador de perfiles de rendimiento muestra un gráfico de líneas de Objetos activos (recuento), así como un gráfico de barras de Diferencias de objetos (% de cambio).
- Para usar la herramienta Seguimiento de asignación de objetos de .NET, abra la página de inicio del generador de perfiles de rendimiento (figura 4), seleccione un destino para el perfil (el destino predeterminado es el proyecto de inicio de la solución), active Seguimiento de asignación de objetos de .NET en la lista de herramientas disponibles y, luego, haga clic en Iniciar.
Generación de perfiles de rendimiento (Uso de CPU)
Esta versión contiene las siguientes mejoras en la herramienta Uso de CPU del Generador de perfiles de rendimiento (disponible a través de ALT-F2):
- La vista Árbol de llamadas ahora muestra la ejecución asincrónica por pila de llamadas lógicas de manera predeterminada. Para desactivar este comportamiento, desactive la opción Stitch Async Code (Unir el código asincrónico) en el menú desplegable Filtro de la vista principal de Uso de CPU.
- Se ha agregado una vista Módulos/funciones que muestra la información de rendimiento por módulo (dll) y por función dentro de un módulo. El usuario puede mostrar la vista Módulos/funciones desde el menú contextual disponible cuando se selecciona una función en la vista principal de Uso de CPU o desde el menú desplegable Ver en las vistas Árbol de llamadas o Llamador y destinatario.
- Se ha agregado la indicación de instancia al gráfico Uso de CPU en la vista principal de la herramienta Uso de CPU. Puede ver las instancias cuando se ejecuta una función (por ejemplo, en la pila) si hace doble clic en una función que aparezca en cualquiera de las vistas de Uso de CPU.
Productividad
Esta versión contiene las siguientes mejoras en la productividad:
- Puede realizar una limpieza de código adicional con Dar formato al documento (Ctrl + K, D o Ctrl + E, D) para el desarrollo de C#. Para configurar la limpieza, vaya a Herramientas>Opciones>Editor de texto>C#>Estilo de código>Formato>General.
- Se agregaron más acciones rápidas y refactorizaciones mediante Ctrl + . o Alt + Entrar:
- Invert If le permite invertir la lógica en las instrucciones if-else. Coloque el cursor en la palabra clave
if
para desencadenar esta refactorización. - Add parameter from method callsite (Agregar parámetro desde el sitio de la llamada del método) permite agregar un parámetro a un método si agrega un argumento a un sitio de la llamada del método y desencadena Acciones rápidas y refactorizaciones.
- Remove unnecessary parentheses (Quitar los paréntesis no necesarios) quita los paréntesis alrededor de los operadores binarios que no son fundamentales para la compilación. Puede configurar esta regla de estilo mediante Herramientas>Opciones>Editor de texto>C#>Estilo de código>General o .editorconfig:
dotnet_style_parentheses_in_arithmetic_binary_operators
dotnet_style_parentheses_in_relational_binary_operators
dotnet_style_parentheses_in_other_binary_operators
dotnet_style_parentheses_in_other_operators
- Use ternary conditionals in assignments and return statements (Uso de condicionales ternarias en asignaciones e instrucciones de devolución) también se puede configurar como una regla de estilo en Herramientas>Opciones>... o mediante .editorconfig:
dotnet_style_prefer_conditional_expression_over_assignment
dotnet_style_prefer_conditional_expression_over_return
- Invert If le permite invertir la lógica en las instrucciones if-else. Coloque el cursor en la palabra clave
- Se agregaron nuevos comandos y mejoras a la ventana Ir a todo:
- Go to Enclosing Block (Ir a bloque de inclusión) (Ctrl + Alt + FlechaArriba) permite navegar rápidamente hasta el inicio del bloque de código de inclusión.
- Go to Next/Previous Issue (Ir al problema siguiente/anterior) (Alt + RePág/AvPág) permite pasar al problema siguiente o al anterior (error, subrayado ondulado, bombilla).
- Go to Member (Ir a miembro) (Ctrl + T, M) ahora tiene como ámbito el archivo de manera predeterminada. Puede cambiar el valor predeterminado de vuelta a la solución si cambia el ámbito a Documento actual (Ctrl + Alt + C).
- Ahora puede crear puntos de inserción y selecciones en varias ubicaciones arbitrarias de un archivo con compatibilidad para varios símbolos de inserción. Esto permite agregar, editar o eliminar texto de manera simultánea en varios lugares.
- Inserte símbolos de inserción con Ctrl + Alt + clic con el botón izquierdo.
- Agregue una selección y un símbolo de inserción en la ubicación siguiente que coincida con la selección actual con Mayús + Alt + Ins.
- Vea Editar > Varios símbolos de inserción para obtener una lista completa de las acciones.
- Acceso al menú de navegación contextual con Alt + `.
- Los enlaces de teclado deben ser coherentes con dos perfiles de teclado nuevos: Visual Studio Code y ReSharper (Visual Studio). Puede encontrar estos esquemas en Herramientas > Opciones > Entorno > Teclado y el menú desplegable superior.
Depuración
Esta versión contiene las siguientes mejoras en la depuración:
Cuando hay más de una instancia de Visual Studio 2017 instalada, ahora se puede seleccionar en qué instancia implementar la extensión cuando realice la depuración (figura 5). De este modo puede, por ejemplo, desarrollar en el canal de versión de Visual Studio mientras depura en el canal de versión preliminar.
Ahora puede asociar Snapshot Debugger directamente desde la página Resumen de publicación (figura 6).
Ahora se permite ver Tareas administradas a través de la ventana Tareas durante la depuración de minivolcados con montón.
Herramientas para desarrolladores de Plataforma universal de Windows
Realizamos muchas mejoras importantes en el Diseñador de XAML para los proyectos destinados a la Plataforma universal de Windows con una versión de plataforma de destino de Windows 10 Fall Creators Update (compilación 16299) o posterior. Estas mejoras incluyen:
- Las colecciones ahora se pueden editar en el inspector de propiedad.
- El diseñador ahora permite editar plantillas y estilos, incluso cuando las definiciones de esas entidades se definen en otros documentos.
- Las propiedades de tipo IconElement (como un icono en un elemento AppBarButton) ahora tienen un editor personalizado en el inspector de propiedad para que sea más sencillo establecer estas propiedades.
- El diseñador, el editor y la característica Editar y continuar ahora deben funcionar correctamente con x:DefaultBindMode.
- La experiencia de Visual State Manager en Blend ahora admite AdaptiveTrigger.
Herramientas de F# 4.5 y F# para Visual Studio
En este lanzamiento se presenta la versión 4.5 del lenguaje F#. Esto también se corresponde con la nueva familia 4.5.x de FSharp.Core (la biblioteca principal de F#). Puede leer las especificaciones de cada uno de estos cambios en el repositorio RFC de F#. Con esta versión, también hay muchas mejoras en las herramientas de F# para Visual Studio.
F# 4.5
Estos son algunos de los aspectos destacados de la versión 4.5 del lenguaje F#:
Compatibilidad con Span<'T>
Se implementó Span<'T>
y características relacionadas para que el consumo eficaz y la producción de API con construcciones similares a Span
, Memory
y ref
sean posibles con F#. Entre las características de esto se incluyen:
- Nuevo tipo
voidptr
. - Nuevas funciones
NativePtr.ofVoidPtr
yNativePtr.toVoidPtr
en FSharp.Core. - Se han agregado los uevos tipos
inref<'T>
youtref<'T>
, que son byrefs de solo lectura y byrefs de solo escritura, respectivamente. Se corresponde conin ref
yout ref
en C#. - La capacidad de generar estructuras
ByRefLike
(comoSpan
yReadOnlySpan
). - La capacidad de generar estructuras
IsReadOnly
. - La desreferencia implícita de devoluciones de
byref
yinref
desde los métodos. - La capacidad de generar miembros de extensión en
byref
/inref
/outref
.
Este conjunto de características corrige un error en el diseño inicial de las devoluciones de byref
en F# 4.1, donde las funciones, los métodos y las propiedades que devuelven byref
no desreferenciaban implícitamente el valor devuelto. Este cambio se hizo para que la característica esté alineada con la manera en que C# controla las devoluciones de ref
. Se usa un mensaje de error cuando una anotación de tipo indica que ahora se usa una desreferencia implícita de una devolución de ref
.
Además, este conjunto de características también corrige un error en el compilador de F# que consistía en que era posible el "reemplazo de una estructura peligrosa", es decir, la llamada a un método en una estructura de F# podía reemplazar la estructura real a la que se llamaba por una distinta. El parámetro this
de una estructura ahora se considera inref<MyStruct>
, con un error que sugiere agregar un campo mutable si desea modificar la estructura.
Puede obtener más información sobre las construcciones similares a span
y ref
en RFC para este conjunto de características.
Match! en expresiones de cálculo
F# 4.5 presenta match!
, una palabra clave nueva para usarla dentro de expresiones de cálculo, una contribución completa de John Wostenberg. Esta simplificación sintáctica equivale a let!
seguido de match
en el resultado. Puede obtener más información en RFC para match!
.
Relajo en la necesidad de conversión a tipo básico con yield
en expresiones de secuencia, lista y matriz
F# 4.5 ahora relaja algunos casos en los que la conversión a tipo básico cuando se usaba yield
era necesaria para convertir un subtipo en un supertipo. Esta restricción había dejado de ser necesaria para estas expresiones desde F# 3.1 cuando no se usaba yield
, por lo que esta mejora es más coherente con el comportamiento que ya existe. Puede obtener más información sobre esta característica en RFC.
Sangría permitida en corchetes de matriz y lista
F# 4.5 ahora relaja la regla de sangría para corchetes de matriz y lista que exigía la aplicación de sangría un ámbito hacia adelante cuando estaban en su propia línea. Este requisito anterior siempre ha sido muy confuso, particularmente para usuarios principiantes de F#. Además, no se requiere para las expresiones de secuencia de F#. Este cambio hace que las expresiones de lista y matriz tengan el mismo estado coherente que las expresiones de secuencia. Puede obtener más información sobre esta característica en RFC.
Casos de enumeración emitidos como públicos
F# 4.5 ahora emite casos de enumeración como públicos en todas las circunstancias, para alinearlos con cómo C# emite los casos de enumeración. Esto también facilita que las herramientas de generación de perfiles analicen los registros de código F#, donde se emitió el valor en lugar del nombre de la etiqueta. Puede obtener más información sobre esta característica en RFC.
Mejoras del compilador de F#
Las mejoras del compilador de F# además de las características de lenguaje anteriormente mencionadas están en F# 4.5. Entre ellas se incluyen las siguientes:
- Se mejoró el trabajo de rendimiento del compilador al quitar hasta un 2,2 % de todas las asignaciones del compilador de F# (en diversos escenarios).
- Se ha corregido un error que resultaba en
AccessViolatioNException
cuando se usabayield!
con enumerables basados en estructura. - Ahora es posible volver a heredar de
FSharpFunc
. - Las llamadas de cola están deshabilitadas de manera predeterminada para las compilaciones de depuración de F# para .NET Core. Están habilitadas para la versión, con lo que coinciden con el compilador de F# de escritorio.
- Se corrigió la normalización de la referencia de F# para permitirle controlar las referencias de ensamblado transitivas escritas en un archivo de salida. Esto le permite realizar el equivalente del redireccionamiento de ensamblado de .NET Core.
- Se ha corregido un error que consistía en la omisión del mensaje de error usado al intentar emplear la invocación dinámica en las funciones insertadas. El mensaje de error ahora se propaga.
- F# ahora respeta la marca
WarningsNotAsErrors
que puede establecer en los archivos del proyecto. - Isaac Abraham ha actualizado el mensaje de error que aparece cuando las ramas de una coincidencia de patrón no devuelven la misma condición de tipo para que sea más fácil de usar.
- Steffen Forkmann ha corregido un error interno al compilar una implementación de interfaz que carece de una implementación de método sobrecargado.
- Gauthier Segay quitó las copias de matriz innecesarias en la fase de léxico del compilador.
- Las coincidencias de patrón incompletas en las enumeraciones de F# ahora generan una advertencia detallada que brinda un ejemplo de un caso no cubierto. Colaboración de John Wostenberg.
- Ahora se respeta `#nowarn "2003". Colaboración de Matthias Diitrich.
- Steffen Forkmann corrigió un error donde el consumo de los métodos de extensión de C# podía generar un error en la resolución de sobrecarga de F#.
- Steffen Forkmann corrigió un error interno de la estructura de datos de QueueList.
- Steffen Forkmann, Eugene Auduchinok y ncave colaboraron con varias optimizaciones pequeñas y esfuerzos de limpieza de código.
Biblioteca principal de F# 4.5.x
Ahora están disponibles las siguientes incorporaciones a la Biblioteca principal de F#:
- Se realizó un importante trabajo para mejorar los seguimientos de la pila para las expresiones de cálculo de
async { }
. Ahora debería poder ver el código de usuario y los números de línea de usuario en los seguimientos de la pila. Puede obtener más información sobre esta característica en RFC. - API
FuncConvert.FromFunc
yFuncConvert.FromAction
que escriben sobrecargas deSystem.Func
ySystem.Action
para ayudar en la interoperación con C#. Puede obtener más información sobre esta característica en RFC. ValueOption
es un tipo nuevo disponible, el primero de un conjunto de futuras características destinadas en última instancia a mejorar el rendimiento de los modelos activos. Puede obtener más información sobre esta característica en RFC.TryGetValue
ahora es un nuevo miembro del tipo de asignación de F#. Puede obtener más información sobre esta característica en RFC.- Se corrigió el uso elevado de la CPU después de la primera invocación de
MailboxProcessor.TryReceive
. - La comparación de
bool
ahora usa la comparación genérica rápida (colaboración de Vasily Kirichenko). - Se actualizó y mejoró el texto de resumen de
Array.allPairs
(colaboración de Patrick McDonald).
Mejoras en las herramientas de F#
En esta versión hay mejoras considerables en las herramientas de F#, como mejoras en el rendimiento y algunas características nuevas del editor. Como siempre, con una gran cantidad de contribuciones de la comunidad de código abierto de F#. Estos son los aspectos destacados:
- Se mejoró el rendimiento de IntelliSense para los proyectos con el estilo del SDK de .NET de todas las formas, incluidas las que usan varios destinos.
- Vasily Kirichenko, Steffen Forkmann y Gauthier Segay colaboraron con un esfuerzo impulsado por la comunidad para analizar y mejorar el rendimiento de IntelliSense de archivos de gran tamaño. IntelliSense en archivos de gran tamaño (más de 10 000 líneas de código) es aproximadamente el doble de rápido ahora.
- La advertencia de FSharp.Core obsoleto (a pesar del paquete que se está instalando) ya no existe en los proyectos con el estilo del SDK de .NET.
- La información sobre herramientas de la descripción que muestra la documentación de XML para un miembro después de
.
en IntelliSense ya no desaparece después de 10 segundos. - Se corrigió un error en el que no podía establecer puntos de interrupción en los argumentos del constructor de objetos.
- Se corrigió un error en el que el símbolo renombrado se podría duplicar cuando se tratara de un parámetro genérico.
- Las plantillas para .NET Framework (plantillas de F# clásicas) ahora consumen FSharp.Core desde un paquete NuGet para alinearse con las plantillas de F# del SDK de .NET.
- La finalización de llave transaccional automática ahora está disponible para los pares de llaves
()
,[]
,{}
,[||]
y[<>]
. Este trabajo lo hicimos en colaboración con Gibran Rosa. - Ahora puede ir a la definición con Ctrl + clic en un símbolo de F#. La configuración de este gesto también se respeta en la ventana Herramientas > Opciones.
- La interfaz de usuario de rendimiento de IntelliSense se modificó para permitir la configuración de la información de una comprobación de tipos obsoleta para distintas características de IDE. Las explicaciones de cada opción ahora están en la información sobre herramientas correspondiente a la configuración.
- El resaltado de coincidencia de llaves ahora resalta correctamente las llaves, algo que se completó en colaboración con Vasily Kirichenko.
- La función Ir a definición ahora se desplaza correctamente cuando un tipo se define de manera recursiva, una colaboración deVasily Kirichenko.
- Vasily Kirichenko corrigió un error en el que un espacio de nombres importado automáticamente no se abría cuando la parte superior de un archivo estaba vacía.
- Vasily Kirichenko corrigió un error en el que los especificadores
printf
que contenían puntos estaban indicados con los colores incorrectos. - Vasily Kirichenko corrigió un error en el que todas las aperturas se consideraban no utilizadas dentro de un módulo recursivo.
- Vasily Kirichenko mejoró considerablemente el rendimiento del analizador de aperturas no utilizadas.
- La característica autocompletar de atributos ahora solo sugiere opciones que son realmente atributos, una colaboración de Vasily Kirichenko.
- La información sobre herramientas de Ayuda para la firma ahora se genera para los parámetros estáticos de proveedor de tipos en el sitio de la llamada del constructor, una colaboración de Vasily Kirichenko.
- Vasily Kirichenko corrigió un error en el que los tipos de valores usados como unidades de medida se coloreaban como tipos de referencia.
- Vasily Kirichenko corrigió un error en el que la coloración semántica podía desaparecer para algunos archivos en el desplazamiento.
- Ahora hay una implementación de CodeLens experimental, una colaboración de Victor Peter Rouven Müller. Puede activarla en Opciones > Editor de texto > F# > CodeLens.
- Sebastian Urban corrigió un error donde el servicio del compilador de F# evitaría incorrectamente los nombres de módulo en la documentación de XML.
- El código que usa
Dictionary
conContainsKey
y las llamadas deItem
subsiguientes se modificó para usarTryGetValue
, de Eugene Auduchinok. - Jakob Majoka también colaboró en el proceso de consumir una API distinta para la información sobre herramientas.
Mejoras en infraestructura, empaquetado y código abierto
Realizamos las mejoras siguientes en la infraestructura, el empaquetado y en nuestra experiencia de colaboración de código abierto:
- El compilador de F# distribuido con Visual Studio ya no se instala como singleton en la ubicación del SDK del compilador de F#. Ahora está completamente en paralelo con Visual Studio, lo que significa que las instalaciones en paralelo de Visual Studio finalmente tendrán experiencias de lenguaje y herramientas de F# en paralelo.
- El paquete FSharp.Core de NuGet ahora está firmado.
- El registro de ETW se agregó al compilador y las herramientas de F#.
- Los archivos
control.fs
/control.fsi
de gran tamaño en FSharp.Core se dividieron enasync.fs
/async.fsi
,event.fs
/event.fsi
,eventmodule.fs
/eventmodule.fsi
,mailbox.fs
/mailbox.fsi
yobservable.fs
/observable.fsi
. - Se agregaron versiones con el estilo del SDK de .NET de los artefactos de prueba de esfuerzo del rendimiento de proyectos.
- Quitamos Newtonsoft.Json de la base de código y ahora los colaboradores de OSS tienen un paquete menos para descargar.
- Ahora se usan las versiones más recientes de System.Collections.Immutable y System.Reflection.Metadata.
Mejoras en el conjunto de herramientas y la conformidad de C++
Esta versión contiene las siguientes mejoras del conjunto de herramientas y la conformidad de C++:
- Un preprocesador nuevo, experimental y basado en token que cumple con los estándares de C++11 (incluidas las características de preprocesador de C99), habilitado con el conmutador /experimental:preprocessor. Se controla con la macro
_MSVC_TRADITIONAL
, que se define como 1 cuando se usa el preprocesador tradicional y como 0 cuando se usa el preprocesador experimental conforme con los estándares. - El Símbolo del sistema para desarrolladores de Visual Studio permite habilitar los entornos de ejecución de mitigación de la variante 1 de Spectre para Visual C++ (
-vcvars_spectre_libs = spectre
). En el blog del equipo de Visual C++ encontrará más información sobre las mitigaciones de Spectre. - Dos adiciones nuevas al Optimizador SSA centradas en la generación de código de C++ moderno: eliminación de almacenes redundantes y plegado de ramas redundantes.
- Se optimizó el rendimiento de E/S asignado en memoria en el vinculador para disminuir los tiempos de vínculo.
Desarrollo multiplataforma de C++
Se agrego y mejoró el siguiente desarrollo multiplataforma de C++ para esta versión:
- Se ha agregado la plantilla Agregar>Nuevo elemento para generar un archivo con formato .clang conforme a la convención de codificación especificada para ClangFormat en Herramientas>Opciones. Si se selecciona la convención de Visual Studio, el archivo generado intenta coincidir con la configuración de formato de Visual Studio actual del usuario de Herramientas > Opciones.
- La versión enviada de clang-format.exe se actualizó a 6.0.0.
- Plantillas para simplificar la incorporación de configuraciones a CppProperties.json.
- Se agregaron plantillas para simplificar la incorporación de configuraciones a CMakeSettings.json (figura 7).
Productividad de C++
Se hicieron las siguientes mejoras en la productividad de C++:
- Las informaciones rápidas de C++ en macros ahora muestran lo que se expande y no solo su definición. Esto resulta especialmente útil para las macros complejas que hacen referencia a otras macros, porque aclara con qué el preprocesador reemplaza el identificador de la macro.
- Se agregó un icono de bombilla de corrección rápida para convertir macros básicas en constexpr como una herramienta nueva para modernizar código.
- IntelliSense para plantillas proporciona más detalles sobre los argumentos de plantilla para aprovechar al máximo IntelliSense dentro del cuerpo de la plantilla (figura 8).
- Estamos trabajando para actualizar la experiencia de análisis de código. Ahora puede habilitar las nuevas características en curso en Herramientas>Opciones>Editor de texto>C++>Experimental>Análisis de código. El análisis de código se puede ejecutar en segundo plano cuando se abren o guardan los archivos y los resultados se muestran en la lista de errores con subrayados ondulados de color verde en el editor (figura 9).
Mejoras en la depuración de C++
Se hicieron las siguientes mejoras en la depuración:
- Solo mi código ahora permite pasar por alto el código de las bibliotecas de C++ del sistema o de terceros, además de contraer esas llamadas en la ventana de la pila de llamadas. Puede controlar este comportamiento en cualquier biblioteca de C++ cuando el código se complica con /JMC y las rutas de acceso a las bibliotecas que no son de usuario se especifican en un archivo .natjmc. Si la biblioteca del sistema llama al código de usuario, cuando el usuario entra, el depurador omite todo el código del sistema y se detiene en la primera línea de la devolución de llamada del código de usuario (figura 10).
- Los puntos de interrupción de datos ahora se pueden establecer dentro de las ventanas Inspección, Inspección rápida, Variables automáticas y Variables locales, lo que le permite desglosar cuándo un valor almacenado en memoria cambia con solo unos pocos clics.
- El vínculo de origen permite insertar información sobre un archivo ejecutable o el código fuente original de una biblioteca en el archivo PDB durante la compilación.
- Al depurar, la ventana de la consola ahora se mantiene abierta de manera predeterminada cuando el programa finaliza su ejecución (de manera similar a la ejecución del programa sin el depurador). Este comportamiento se puede revertir para cerrar automáticamente la consola en Herramientas > Opciones >Depuración > General.
Mejoras en JavaScript y TypeScript
TypeScript 3.0
Visual Studio 2017, versión 15.8, ahora incluye TypeScript 3.0 de forma predeterminada. Para obtener más detalles sobre esta versión, vea el Anuncio de versión de TypeScript 3.0.
Compatibilidad mejorada con Vue.js
Se ha mejorado la compatibilidad con la biblioteca Vue.js, en particular con los archivos .vue, también conocidos como "componentes de único archivo". Esto ofrece mejoras al editar bloques de script dentro de archivos .vue, incluida la compatibilidad con bloques de script creados en TypeScript mediante el atributo lang="ts"
del elemento de script. (Nota: Se debe usar un proceso de compilación mediante WebPack o similar para convertir los archivos .vue en los archivos HTML y JS necesarios en tiempo de ejecución. Consulte la página Componentes de archivo único para obtener más detalles).
Si la carga de trabajo Node.js está instalada, ahora hay plantillas "Aplicación web de Vue.js básico" en las rutas de acceso "JavaScript / Node.js" o "TypeScript / Node.js" del cuadro de diálogo Nuevo proyecto. A continuación se ofrece un ejemplo de edición de código de TypeScript dentro de un bloque de script de un archivo .vue (figura 11).
Mejoras en ESLint
Se ha vuelto a implementar la compatibilidad de ESLint con esta versión. ESLint presenta las siguientes mejoras:
- En lugar de simplemente mejorar los archivos guardados, Visual Studio ahora también mejora los archivos de JavaScript a medida que se editan.
- Se pueden notificar resultados de todos los archivos JS del proyecto, no solo de los abiertos; si hay partes del proyecto que no quiera mejorar, puede usar un archivo .eslintignore para especificar los directorios y los archivos que deban omitirse.
- ESLint se ha actualizado para usar ESLint 4 de forma predeterminada, pero si el proyecto tiene una instalación local de ESLint, se usará esa versión en su lugar.
ESLint se puede deshabilitar globalmente en Visual Studio desactivando el valor Habilitar ESLint en **Herramientas > Opciones > Editor de texto > Javascript/Typescript > Linting ** (figura 12).
Mejoras en Abrir carpeta para Node.js
Hay bastantes mejoras en el trabajo con JavaScript y TypeScript en el escenario Abrir carpeta cuando la "carga de trabajo de Node.js" está instalada. Por ejemplo, la administración de paquetes NPM, la compilación de TypeScript, el inicio y la depuración con Node.exe, la ejecución de scripts NPM y la ejecución de pruebas unitarias.
Vea Desarrollo de código en Visual Studio sin proyectos o soluciones para obtener más información.
Mejoras en el rendimiento del editor
En versiones anteriores, todas las operaciones del servicio de lenguaje de JavaScript y TypeScript se realizaban mediante un solo proceso de Node.js. Esto podía provocar retrasos del editor si los comandos que afectaban al usuario que escribía (por ejemplo, el formato automático después de una nueva línea) se enviaban mientras había una operación potencialmente larga en curso, como el análisis de errores de código. Para mitigar esto, ahora se usa un proceso independiente para las operaciones que afectan a la edición en mayor medida. Este proceso es mucho más ligero para los recursos del sistema que el proceso del servicio de lenguaje existente. Sin embargo, si quiere deshabilitar el nuevo proceso, active la casilla Deshabilite el proceso de sintaxis dedicado en Herramientas > Opciones > Editor de texto > JavaScript/TypeScript > Servicio de lenguaje.
Herramientas web de Visual Studio
Administrador de bibliotecas es una característica nueva incluida en Visual Studio 2017. Ayuda a administrar bibliotecas de cliente en los proyectos web.
Herramientas de contenedor
Se agregó una nueva experiencia de contenedor Docker de proyecto único para los proyectos web de ASP.NET Core. Esto complementa las herramientas de contenedores basados en Docker Compose existentes y proporciona una manera más simple y sencilla para crear, depurar y compilar los contenedores Docker directamente desde Visual Studio.
Puede agregar compatibilidad con Docker al crear el proyecto (figura 13):
O bien, puede habilitar la compatibilidad con Docker para un proyecto existente a través del menú contextual del proyecto en el Explorador de soluciones (figura 14). Una vez que lo haga, Visual Studio crea un solo archivo Dockerfile en el proyecto. Tiene la opción de elegir Windows o Linux.
Visual Studio también agrega un perfil de inicio del depurador (figura 15) para Docker de modo que el proyecto se pueda depurar mientras se ejecuta dentro de un contenedor.
Si tiene una solución con varios proyectos de Docker, de manera predeterminada, solo un contenedor se ejecuta cuando elige iniciar la solución. Si quiere ejecutar varios contenedores de manera simultánea, puede hacer clic con el botón derecho en la solución en el Explorador de soluciones y seleccionar Establecer proyectos de inicio y, luego, en Varios proyectos de inicio y, entonces, establecer el menú desplegable Acción en Iniciar o Iniciar sin depuración para todos los proyectos que quiera ejecutar.
Una vez que el proyecto en contenedores se ejecuta como el usuario quiere, puede hacer clic con el botón derecho en el proyecto y seleccionar Build Docker Image (Compilar imagen de Docker) para compilar una imagen de manera local, cuando esté listo para insertarla en Azure Container Registry o en DockerHub.
También puede agregar la funcionalidad basada en Docker Compose existente a un proyecto web de ASP.NET Core a través de la nueva opción Container Orchestrator Support (Compatibilidad con el orquestador de contenedores) (figura 16). Haga clic con el botón derecho en el proyecto web de ASP.NET Core en el Explorador de soluciones, seleccione Agregar > Container Orchestrator Support (Compatibilidad con el orquestador de contenedores) y, luego, Docker Compose en el menú desplegable.
Mejoras en la publicación
Esta versión contiene las siguientes mejoras en la publicación:
- Cuando se publica un contenedor Docker en un registro de contenedor, ahora puede personalizar la etiqueta de la imagen. También puede agregar manualmente una etiqueta (el valor predeterminado es "latest") o usar una etiqueta generada automáticamente para asegurarse de que cada etiqueta sea única.
- Al crear un nuevo Azure App Service, también puede configurar Application Insights para recopilar telemetría de manera automática. Si elige una región que también tenga Application Insights, se habilitará de manera predeterminada. Si elige una región que todavía no contiene Application Insights, puede especificar manualmente otra región para el recurso de Application Insights en el menú desplegable.
- Al publicar proyectos de Azure Functions, puede elegir publicar mediante la característica Run-From-Zip.
Visual Studio Tools para Xamarin
Esta versión incluye las actualizaciones siguientes para Xamarin:
- Se agregó compatibilidad con Xcode 9.4.
- Cuando se crea un nuevo proyecto de Xamarin.Forms, la opción de uso compartido del código predeterminado opción ahora es .NET Standard. La opción de proyecto compartido sigue estando disponible.
- Se agregaron mejoras en la compilación incremental de Android. Xamarin.Android usa los archivos generados en el directorio de salida intermedio para lograr compilaciones incrementales más rápidas que las compilaciones completas. Anteriormente, si cambiaba la plataforma de destino del proyecto, los archivos se invalidarían y se generaría una compilación completa en la próxima ejecución. En esta versión, ahora se conservan los archivos en carpetas por plataforma para que pueda cambiar entre las diferentes plataformas de destino y continuar beneficiándose de las compilaciones incrementales. Limpiar el proyecto permite reclamar el espacio en disco que usan los archivos conservados.
- Se agregó una compatibilidad mínima para proyectos de enlace de Xamarin.Mac en Visual Studio 2017. Esto permite que Visual Studio cargue y reconozca proyectos de enlace de Xamarin.Mac como compatibles. También puede compilar proyectos de enlace de Xamarin.Mac. Sin embargo, el proceso de compilación se realiza de forma local sin usar la cadena de herramientas nativa de Mac para que los ensamblados de lenguaje intermedio generados no se puedan usar para ejecución ni depuración en las aplicaciones.
Compatibilidad con Android Emulator para Hyper-V
Esta versión agrega compatibilidad con Google Android Emulator, compatible con Hyper-V, cuando se ejecuta en la actualización de abril de 2018 de Windows 10 (figura 17). Esto le permite usar el emulador Android de Google en paralelo con otras tecnologías basadas en Hyper-V, incluidas las máquinas virtuales de Hyper-V, las herramientas de Docker, el emulador de HoloLens, etc. Los desarrolladores de aplicaciones móviles que usan Hyper-V ahora tienen acceso a un emulador Android rápido que siempre admite las API de Android más recientes, que trabaja con Google Play Services de manera inmediata y es compatible con todas las características del emulador de Android, incluida la cámara, la geolocalización y Arranque rápido.
Xamarin.Android Designer
Se hicieron mejoras considerables para la experiencia del diseñador de Xamarin.Android. Algunas funciones destacadas:
- Se ha incorporado un editor de vistas en dos paneles que le permite crear, editar y obtener una vista previa de los diseños al mismo tiempo (figura 18).
- Se mejoró la experiencia de IntelliSense y la confiabilidad de los controles personalizados.
- Compatibilidad de los datos de ejemplo con los valores proporcionados por el sistema.
Controlador de vista previa de Xamarin.Forms
El controlador de vista previa de Xamarin.Forms ahora tiene compatibilidad con el cuadro de herramientas cuando se usa Xamarin.Forms, versión 3.1.0.583944 o superior. Los controles de Xamarin.Forms aparecerán en el cuadro de herramientas para que quienes no estén familiarizados con este puedan encontrarlos fácilmente. También puede arrastrar y colocar un control en el editor de código de XAML para agregar el control a la página. El Controlador de vista previa de Xamarin.Forms ahora forma parte del editor XAML. Puede abrirlo y cerrarlo con el icono Expandir situado en el borde del panel Editor.
Python
Esta versión agrega las siguientes mejoras para desarrolladores de Python:
- IntelliSense para Python ahora usa definiciones de Typeshed para brindar resultados más completos para las bibliotecas donde las finalizaciones automáticas no se pueden inferir a partir del análisis estático.
- El depurador experimental, que se anunció por primera vez en las versiones preliminares 15.7, ahora es el motor de depuración predeterminado que se usa para Python, el que proporciona una depuración más rápida y confiable para el código de Python.
- Se agregó compatibilidad con Python 3.7, incluidas correcciones para habilitar la asociación de depuración, la generación de perfiles y características de depuración de modo combinado (entre lenguajes).
- Para obtener más información sobre las características anteriores, vea la entrada de blog sobre Python en Visual Studio 2017 versión 15.8.
Migración de la configuración de Azure Functions local
El cuadro de diálogo "Managed Application Settings" (Configuración de la aplicación administrada) disponible en la página de resumen de publicación ahora muestra valores del archivo local.settings.json y permite migrar valores a la aplicación de Azure Functions remota hospedada en Azure.
Servicios conectados
Ahora puede configurar la entrega continua de Azure Funtions directamente desde Visual Studio 2017 para soluciones con proyectos de Azure Functions.
Mejora del Explorador de pruebas
El Explorador de pruebas ahora muestra un panel de resumen de estado de prueba más informativo (el panel inferior del Explorador de pruebas) cuando se selecciona una de las agrupaciones de la vista de jerarquía. El panel ahora muestra cuántas pruebas no se completaron correctamente, cuántas sí se completaron correctamente o cuántos no se ejecutaron de esa agrupación.
Nuevas características de extensibilidad
Protocolo de servidor de lenguaje
Visual Studio ahora ofrece compatibilidad nativa para el Protocolo de servidor de lenguaje. Los creadores de extensiones pueden crear extensiones que se comuniquen con los servidores de lenguaje existentes para agregar compatibilidad de lenguaje adicional a Visual Studio. Los usuarios de las extensiones pueden instalar estas extensiones para empezar a usar el lenguaje de su preferencia dentro de Visual Studio, como Rust.
Plantilla de AsyncPackage
Los autores de extensiones ahora pueden usar plantillas de elemento para crear AsyncPackages para optimizar el rendimiento de su extensión. Obtenga más información sobre AsyncPackages.
Paquetes de extensión
Comparta con facilidad el conjunto de extensiones de su preferencia o configure una instalación nueva de Visual Studio con todas las extensiones mediante un paquete de extensión. Los paquetes de extensión permiten crear una lista de extensiones, empaquetarlos en una extensión y usarla rápidamente para instalar esas extensiones de manera masiva.
Publicación de la extensión de línea de comandos
Publique las extensiones en Visual Studio Marketplace a través de la línea de comandos.
SDK de .NET Core 2.1.400
Visual Studio 2017, versión 15.8, incluye el SDK de .NET Core 2.1.400. Las nuevas características del SDK incluyen las siguientes:
- Se agregaron plantillas NUnit
- Se agregó compatibilidad con herramientas globales firmadas
- Se mejoró el texto de ayuda para mayor claridad
Se cerraron 32 problemas en la CLI de .NET Core.
Se cerraron 20 problemas en el SDK de .NET Core.
Control de código fuente
En los proyectos de .NET Core, los archivos agregados directamente al proyecto a través del Explorador de archivos ahora muestran los iconos de seguimiento de TFS y Git correctos en el Explorador de soluciones sin tener que volver a cargar la solución.
Extensión del adaptador de prueba de .NET
El adaptador de prueba de .NET incluye el siguiente cambio importante. Ciertas características también han entrado en desuso:
- Cambio importante: Todos los proyectos de prueba deben incluir la referencia de NuGet del adaptador de prueba de .NET en su propio csproj. Si no lo hacen, el resultado de esta prueba aparecerá en el proyecto si la detección de una extensión de adaptador de prueba se inicia después de una compilación o si el usuario intenta ejecutar las pruebas seleccionadas:
- El proyecto de prueba {<Ruta de acceso completa del proyecto de prueba>} no hace referencia a ningún adaptador NuGet de .NET. La detección o ejecución de pruebas podría no funcionar para este proyecto. Se recomienda hacer referencia a los adaptadores de prueba de NuGet en cada proyecto de prueba de la solución.
- Las plataformas de prueba de .NET han lanzado sus adaptadores en paquetes NuGet y se han apartado de las extensiones de Visual Studio. La compatibilidad con los adaptadores de prueba de .NET ofrecidos a través de extensiones está en desuso, pero todavía se admite. Esto significa que hay dos opciones nuevas en Herramientas > Opciones > Prueba.
- La primera opción permite que Visual Studio solo use los adaptadores de prueba que encuentra en la carpeta de ensamblado de prueba (completado por la referencia de NuGet del adaptador de prueba) o como se especifica en el archivo runsettings.
- La segunda opción permite que Visual Studio "se revierta" al comportamiento anterior y busque las extensiones de adaptador de prueba para los proyectos que no tienen una referencia de NuGet del adaptador de prueba. Ambas opciones están activadas de manera predeterminada, por lo que no habrá ningún cambio en el comportamiento predeterminado en esta versión.
- Nota: Este cambio no afecta a los adaptadores de prueba que no sean de .NET.
Compatibilidad de los secretos de .NET Framework para ASP.NET
En el caso de ASP.NET, los proyectos de .NET Framework para .NET Framework 4.7.1 o posterior, ahora puede abrir y almacenar los secretos que no quiera en el código fuente en usersecrets.xml haciendo con el botón derecho en el proyecto y seleccionando "Managed User Secrets" (Secretos de usuarios administrados).
Mejora del rendimiento de .NET Framework de ASP.NET
Si el paquete del compilador de .NET al que se hace referencia no está actualizado en un proyecto de .NET Framework de ASP.NET, Visual Studio le pedirá que actualice el paquete cuando abra el proyecto para mejorar el rendimiento de compilación.
.NET Framework 4.7.2
Ahora la versión 15.8 de Visual Studio 2017 ofrece las herramientas de desarrollo de .NET Framework 4.7.2 en todas las plataformas compatibles con el entorno de ejecución de 4.7.2 incluido. .NET Framework 4.7.2 ofrece diversas mejoras y características nuevas, así como numerosas correcciones de fiabilidad, estabilidad, seguridad y rendimiento.
Puede encontrar más detalles sobre .NET Framework 4.7.2 en estos artículos:
- .NET Framework 4.7.2 RTM Blog (Blog de .NET Framework 4.7.2 RTM)
- .NET Framework 4.7.2 release notes (Notas de la versión de .NET Framework 4.7.2)
- Known issues in the .NET Framework 4.7.2 (Problemas conocidos de .NET Framework 4.7.2)
- Application Compatibility in the .NET Framework 4.7.2 (Compatibilidad de aplicaciones en .NET Framework 4.7.2)
- Cambios en la API
Retraso en la carga de paquetes
Visual Studio ahora retrasa la carga de paquetes asincrónicos que están configurados para cargarse automáticamente después de que el IDE de Visual Studio se inició completamente y se cargó la solución. Este cambio no afecta a los paquetes cargados automáticamente de manera sincrónica. Los usuarios pueden observar el Centro de estado de tareas en la esquina inferior izquierda de la barra de estado para supervisar el progreso. Los creadores de extensiones que crean paquetes asincrónicos deben probar su extensión. Para más información, consulte Improving the responsiveness of critical scenarios by updating auto load behavior for extensions (Mejora de la capacidad de respuesta de escenarios críticos mediante la actualización del comportamiento de carga automática de las extensiones).
---
Avisos de seguridad de Visual Studio 2017, versión 15.8
Versión de mantenimiento de Visual Studio 2017, versión 15.8.7 : publicada el 10 de octubre de 2018
CVE-2018-8292 vulnerabilidad de divulgación de información de .NET Core
Hay una vulnerabilidad de omisión de característica de seguridad en .NET Core que expone información de autenticación HTTP accidentalmente en una solicitud saliente que se encuentra una redirección HTTP. Un atacante que haya aprovechado correctamente esta vulnerabilidad puede usar la información para poner en peligro la aplicación web. La actualización de seguridad corrige la vulnerabilidad mediante la corrección de cómo controla la aplicación .NET Core las redirecciones HTTP.
Versión de mantenimiento de Visual Studio 2017, versión 15.8.4 : publicada el 11 de septiembre de 2018
CVE-2018-8409 Vulnerabilidad de denegación de servicio de .NET Core
Una vulnerabilidad de denegación de servicio existe en .NET Core 2.1 cuando System.IO.Pipelines gestiona solicitudes de forma incorrecta. Un atacante que aprovechase correctamente esta vulnerabilidad podría producir una denegación de servicio en una aplicación que aprovecha System.IO.Pipelines. La vulnerabilidad se puede aprovechar de forma remota, sin autenticación. Un atacante remoto no autenticado podría aprovechar esta vulnerabilidad si proporciona solicitudes creadas especialmente a la aplicación .
CVE-2018-8409 Vulnerabilidad de denegación de servicio de ASP.NET Core
Existe una vulnerabilidad de denegación de servicio en ASP.NET Core 2.1 que gestiona solicitudes web de forma incorrecta. Un atacante que aprovechase correctamente esta vulnerabilidad podría producir una denegación de servicio en una aplicación web ASP.NET Core. La vulnerabilidad se puede aprovechar de forma remota, sin autenticación. Un atacante remoto no autenticado podría aprovechar esta vulnerabilidad si proporciona solicitudes web creadas especialmente a la aplicación ASP.NET Core.
Visual Studio 2017, versión 15.8 publicado el 14 de agosto de 2018
CVE-2018-0952 Vulnerabilidad de elevación de privilegios del recopilador estándar del concentrador de diagnósticos
Existe una vulnerabilidad de elevación de privilegios en un servicio de Visual Studio que puede dar lugar a la concesión de privilegios del sistema a un usuario no administrativo al escribir archivos. Un atacante que quisiera aprovecharse podría escribir archivos como si fueran del sistema solo con acceso de nivel de usuario. Esta actualización de seguridad soluciona este problema al suplantar al usuario actual para validar el acceso a la ubicación de archivos.
Visual Studio 2017, versión 15.8 Preview 4: publicado el 10 de julio de 2018
CVE-2018-8172 Vulnerabilidad de ejecución remota de código de Visual Studio
Vulnerabilidad de ejecución remota de código que podía dar lugar a la explotación del equipo de un usuario al abrir un proyecto especialmente diseñado, o archivo de recursos. La actualización de seguridad soluciona la vulnerabilidad al corregir la forma en que Visual Studio comprueba el marcado de origen de un archivo.
CVE-2018-8260 Vulnerabilidad de ejecución remota de código de .NET Framework
Existe una vulnerabilidad de ejecución remota de código en el software de .NET que puede dar lugar a la explotación del equipo de un usuario al permitir a los atacantes ejecutar código arbitrario en el contexto del usuario actual. La actualización de seguridad soluciona la vulnerabilidad al corregir la forma en que .NET comprueba el marcado de origen de un archivo.
CVE-2018-8232 Vulnerabilidad de manipulación del macroensamblador de Microsoft de .NET
Vulnerabilidad de manipulación relacionada con la validación incorrecta de código por parte del macroensamblador de Microsoft. La actualización de seguridad soluciona la vulnerabilidad al garantizar que el macroensamblador de Microsoft valide correctamente la lógica del código.
CVE-2018-8171 Vulnerabilidad de omisión de características de seguridad de ASP.NET Core
Vulnerabilidad de omisión de características de seguridad de ASP.NET Core que consistía en que no se validaba el número de intentos incorrectos de inicio de sesión, lo que podía dar lugar a que un atacante realizase infinitos intentos de autenticación. La actualización soluciona la vulnerabilidad al validar el número de intentos de inicio de sesión incorrectos.
Visual Studio 2017, versión 15.8 Preview 3: publicado el 26 de junio de 2018
CVE-2018-11235 Aviso de seguridad de Microsoft sobre vulnerabilidad de la seguridad de Git
Se ha corregido una vulnerabilidad de seguridad en Git que se detectó por la comunidad de Git. La vulnerabilidad puede permitir la ejecución de código arbitrario cuando un usuario clona un repositorio malintencionado.
Visual Studio 2017, versión 15.8 Preview 1: publicado el 8 de mayo de 2018
CVE-2018-0765 Aviso de seguridad de Microsoft sobre una vulnerabilidad de denegación de servicio de .NET Core
- Microsoft publica este aviso de seguridad para proporcionar información sobre una vulnerabilidad de la versión nativa 2.0 de .NET Core y .NET. En este aviso también se proporcionan instrucciones sobre qué deben hacer los desarrolladores para eliminar esta vulnerabilidad.
- Microsoft es consciente de una vulnerabilidad de denegación de servicio que se produce cuando .NET Framework y .NET Core procesan documentos XML de forma incorrecta. Un atacante que aprovechase correctamente esta vulnerabilidad podría producir una denegación de servicio en una aplicación nativa de .NET Framework, .NET Core o .NET.
- En la actualización se elimina la vulnerabilidad corrigiendo la forma de controlar el procesamiento de documentos XML por parte de las aplicaciones nativas de .NET Framework, .NET Core y .NET.
- En el caso de las aplicaciones de ASP.NET Core, también se aconseja a los desarrolladores que hagan la actualización a la versión 2.0.8 de ASP.NET Core.
Visual Studio 2017, versión 15.8.1
publicado el 17 de agosto de 2018
Principales problemas corregidos en la versión 15.8.1
Estos son los problemas solucionados en la versión 15.8.1:
- Se ha corregido un problema que causaba que Visual Studio se cerrara de forma inesperada al cerrar una ventana del explorador durante la depuración de un proyecto web.
Visual Studio 2017, versión 15.8.2
publicado el 28 de agosto de 2018
Principales problemas corregidos en la versión 15.8.2
Estos son los problemas notificados por los clientes que se han solucionado en la versión 15.8.2:
- Publique el elemento del menú contextual de un solo archivo que falta.
- Operaciones de red de Git que no funcionan: no se puede generar git-askpass.exe.
- Error de carga "Paquete del Editor de recursos de Visual C++".
- Obtener vista previa y transformar genera un error.
- No se puede escribir la llave de cierre.
- Referencia de objeto no establecida en una instancia de un objeto al implementar el proyecto de Service Fabric tras la actualización 15.8.0.
- Error de instalación "The given path's format is not supported" (El formato de la ruta de acceso especificada no se admite).
- La tarea ExpandPriContent produjo un error. Caracteres ilegales en la ruta de acceso.
- Error del instalador "Could not create instance of type System.Collections.Genertic.Iset'1[Signer]" (No se puede crear una instancia de tipo System.Collections.Genertic.Iset'1[Signer]).
- La implementación de Service Fabric produce un error en 15.8.0.
- No se puede crear un paquete de aplicación para la tienda Windows.
- Generación de código incorrecto para los recursos fuertemente tipados.
- Enlace de teclado para la disposición italiana.
- IntelliSense interrumpido n.º 9999.
- Cuando se trabaja en un proyecto de Unity y Unity reescribe varios archivos del proyecto, Visual Studio Tools para Unity recargará ahora la solución de forma automática.
- Ahora, el cliente obtendrá un cuadro de diálogo para cerrar las aplicaciones de Office si bloquean la instalación de Visual Studio y provocan un error de 1303.
Visual Studio 2017, versión 15.8.3
publicado el 6 de septiembre de 2018
Principales problemas corregidos en la versión 15.8.3
Estos son los problemas notificados por los clientes que se han solucionado en la versión 15.8.3:
- Visual Studio 2017, versión 15.8.2, contenía una compilación de versión preliminar del SDK de .NET Core 2.1.401 que es incompatible con Visual Studio. Hemos corregido este problema con Visual Studio 2017, versión 15.8.3.
- Error de creación de casos de prueba de VSCppUnit.
- IntelliSense para Python no funciona en Python 2.7.
- El Diseñador XAML provoca que Visual Studio se cierre inesperadamente.
Visual Studio 2017, versión 15.8.4
publicado el 11 de septiembre de 2018
Principales problemas corregidos en la versión 15.8.4
Estos son los problemas notificados por los clientes que se han solucionado en la versión 15.8.4:
- La función Constexpr con parámetro (void) explícito se bloquea en la versión 15.8.0 de MSVC.
- TypeScriptLspCodeActionProvider detectó un error y se ha deshabilitado.
- El paquete "Shared Web Components" no se cargó correctamente.
- La edición de CSS con Vínculo con exploradores habilitado puede bloquearse en Visual Studio.
- La implementación de Service Fabric produce un error en 15.8.0.
- Error incorrecto del puntero constexpr a miembros con VS2017 15.8 .
- Constexpr no admite __declspec(dllimport) en VS2017 15.8.
- La diferencia de C++ VS 2017 Update 8 en el puntero de función miembro entre los modos C++14 y C++17 provoca bloqueos.
- TestExplorer que bloquea la interfaz de usuario en la última compilación.
- [WebKit] "Símbolo ya definido" para la definición de miembro de plantilla estática (regresión).
- Error interno del compilador de VS 15.8.0.
- Error interno del compilador en la función constexpr.
- La ventana del Explorador de pruebas permanece en blanco con Express.
- Visual Studio 2017 no se abre en la máquina compatible con FIPS.
- Error interno del compilador de VS2017 15.8 "msc1.cpp", línea 1518, al evaluar la función constexpr simple.
- Error irrecuperable C1001 tras actualizar a VS 15.8.0.
- Migración a VS2017 15.8: error interno del compilador al usar las funciones constexpr como parámetros de plantilla.
- Error interno del compilador al compilar una función de plantilla con una función constexpr en VC++ 15.8.0.
- Código generado por el responsable del compilador de VC 15.8.1 que se va a bloquear.
Avisos de seguridad
- CVE-2018-8409 Vulnerabilidad de denegación de servicio de .NET Core
- CVE-2018-8409 Vulnerabilidad de denegación de servicio de ASP.NET Core
Visual Studio 2017, versión 15.8.5
publicado el 20 de septiembre de 2018
Resumen de las novedades de la versión 15.8.5
- Visual Studio Tools para Xamarin ahora es compatible con Xcode 10.
Principales problemas corregidos en la versión 15.8.5
Estos son los problemas notificados por los clientes que se han solucionado en la versión 15.8.5:
- La información sobre herramientas del depurador no se expande en la sesión de depuración de Xamarin.iOS.
- El depurador no me deja salir del punto de ejecución (Android).
- Después de actualizar a la versión 15.8.1, la sugerencia de datos no se muestra durante la depuración.
- La sugerencia de datos del depurador no se expande [Editor].
- Excepción: MSB0001: Error interno de MSBuild: Ya se ha registrado para el tiempo de compilación.
- Ruta de acceso incorrecta al recurso en el manifiesto de ClickOnce después de actualizar a VS 15.8.1.
- Error de manifiesto de ClickOnce en la versión 15.8.
- Faltan ciertas referencias al publicar en ClickOnce.
- ClickOnce: El archivo de lenguaje se copia en una ubicación incorrecta.
- Falta una referencia en la carpeta de publicación de ClickOnce.
- La compilación de proyectos de F# que no tienen el estilo del SDK de .NET genera un error interno de MSBuild a menos que el paralelismo de MSBuild esté establecido en 1.
- No se aplica ngen a F# en Visual Studio.
- F# implementa el binario de FSharp.Core 4.5.0.0 en la ubicación de la versión 4.4.3.0.
Detalles de las novedades de la versión 15.8.5
Visual Studio Tools para Xamarin
Visual Studio Tools para Xamarin ahora es compatible con Xcode 10, que le permite compilar y depurar aplicaciones para iOS 12, tvOS 12 y watchOS 5. Para obtener información detallada sobre las nuevas características disponibles, consulte el artículo sobre cómo prepararse para iOS 12 y nuestra introducción a iOS 12.
Visual Studio 2017, versión 15.8.6
publicado el 2 de octubre de 2018
Resumen de las novedades de la versión 15.8.6
- Está disponible la última versión del SDK de Windows 10.
Principales problemas corregidos en la versión 15.8.6
Estos son los problemas notificados por los clientes que se han solucionado en la versión 15.8.6:
- Los paquetes NuGet para Intellisense se han interrumpido.
- Visual Studio se cierra después de abrir sln.
- El editor XML de App.Config todavía se bloquea en 15.8.4.
Detalles de las novedades de la versión 15.8.6
Último SDK de Windows 10 para desarrolladores de Plataforma universal de Windows
El último SDK de Windows 10 (compilación 17763) ahora está disponible como un componente opcional para la carga de trabajo de desarrollo de la Plataforma universal de Windows. Puede agregar este SDK para la carga de trabajo si selecciona la casilla SDK de Windows 10 (10.0.17763.0).
Visual Studio 2017, versión 15.8.7
publicado el 10 de octubre de 2018
Novedades de la versión 15.8.7
Azure DevOps
Visual Studio Team Services es ahora Azure DevOps. Verá esta nueva personalización de marca en Team Explorer y en las referencias de Visual Studio.
Avisos de seguridad
CVE-2018-8292 vulnerabilidad de divulgación de información de .NET Core
Visual Studio 2017, versión 15.8.8
publicado el 24 de octubre de 2018
Principales problemas corregidos en la versión 15.8.8
Estos son los problemas detectados por los clientes que se han solucionado en la versión 15.8.8:
- /DEBUG:FASTLINK sin información de depuración para los tipos STL incluidos mediante PCH.
- Detección de codegen incorrecto en el compilador de RTW 15.8.
- Daños en el montón durante el desenredo de pilas al insertar funciones.
- El vinculador consume 6 GB de memoria para el caso de prueba concreto.
Visual Studio 2017, versión 15.8.9
publicado el 2 de noviembre de 2018
Principales problemas corregidos en la versión 15.8.9
Estos son los problemas notificados por los clientes que se han solucionado en la versión 15.8.9:
- Se ha agregado compatibilidad con Xcode 10.1 en Visual Studio Tools para Xamarin.
- Se ha actualizado la plantilla Xamarin.Forms a Xamarin.Forms 3.3.0.
- La actualización 15.8.6 interrumpe los proyectos del instalador.
- Error interno del compilador en VS15.8 msc1.cpp, línea 1518.
- Proyectos del instalador de Microsoft Visual Studio 2017 0.8.8 y VS 15.8.6.
- Error de SFINAE al detectar una función sobrecargada coincidente en la versión preliminar de VS 3 15.9.0.
- Bloqueo del Diseñador XAML al cerrar Visual Studio.
Problemas conocidos
Vea todos los problemas conocidos y las soluciones alternativas disponibles en Visual Studio 2017, versión 15.8.
Comentarios y sugerencias
Nos encantaría que nos diera su opinión. Puede informarnos de un problema mediante la opción Notificar un problema de la esquina superior derecha del instalador o del propio IDE de Visual Studio. El icono se encuentra en la esquina superior derecha. Puede realizar una sugerencia de producto o un seguimiento de los problemas en la comunidad de desarrolladores de Visual Studio, donde podrá hacer preguntas, encontrar respuestas y proponer nuevas características. 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.
Historial de notas de la versión de Visual Studio 2017
Para obtener más información relacionada con las versiones anteriores de Visual Studio 2017, consulte la página Historial de notas de la versión de Visual Studio 2017.