Notes de publication Visual Studio 2017 version 15.8
Communauté des développeurs | Configuration système requise | Compatibilité | Code distribuable | Termes du contrat de licence | Blogs | Problèmes connus
Remarque
Il ne s’agit pas de la dernière version de Visual Studio. Pour télécharger la version la plus récente, veuillez vous rendre sur le site de Visual Studio.
Délai de prise en charge
Cette version n’est plus prise en charge. Pour plus d’informations sur la prise en charge de Visual Studio, consultez la Stratégie de prise en charge pour Visual Studio 2017.
Reportez-vous à la version la plus récente des notes de publication ou rendez-vous sur visitez le site de Visual Studio pour télécharger la version prise en charge de Visual Studio 2017 la plus récente.
Blog Visual Studio
Le blog Visual Studio est la source officielle où l’équipe d’ingénierie de Visual Studio partage des informations sur le produit. Vous trouverez des informations détaillées sur Visual Studio 2017 version 15.8 dans les billets suivants :
- Visual Studio 2017 version 15.8 -- Lisez le dernier billet de blog !
Publications de Visual Studio 2017 version 15.8
- 2 novembre 2018 -- Visual Studio 2017 version 15.8.9 Mise à jour de maintenance
- 24 octobre 2018 -- Visual Studio 2017 version 15.8.8 - Mise à jour de maintenance
- 10 octobre 2018 -- Visual Studio 2017 version 15.8.7 - Mise à jour de maintenance
- 2 octobre 2018 -- Visual Studio 2017 version 15.8.6 - Mise à jour de maintenance
- 20 septembre 2018 -- Visual Studio 2017 version 15.8.5 - Mise à jour de maintenance
- 11 septembre 2018 -- Visual Studio 2017 version 15.8.4 Mise à jour de maintenance
- 6 septembre 2018 -- Visual Studio 2017 version 15.8.3 Mise à jour de maintenance
- 28 août 2018 -- Visual Studio 2017 version 15.8.2 - Mise à jour de maintenance
- 17 août 2018 -- Visual Studio 2017 version 15.8.1 - Mise à jour de maintenance
- 14 août 2018 -- Visual Studio 2017 version 15.8 Version mineure
Important
Visual Studio 2017 version 15.8 - Avis de sécurité
- 10 octobre 2018 -- Visual Studio 2017 version 15.8.7 - Mise à jour de maintenance
- 11 septembre 2018 -- Visual Studio 2017 version 15.8.4 Mise à jour de maintenance
- 14 août 2018 -- Visual Studio 2017 version 15.8
- 10 juillet 2018 -- Visual Studio 2017 version 15.8 Préversion 4
- 26 juillet 2018 -- Visual Studio 2017 version 15.8 Préversion 3
- 8 mai 2018 -- Visual Studio 2017 version 15.8 Préversion 1
Récapitulatif des nouvelles fonctionnalités importantes de la version 15.8
- Le programme d’installation permet désormais de télécharger tous les fichiers avant de démarrer l’installation.
- Nous avons amélioré les performances pendant le déchargement/rechargement du projet et le changement de branches.
- Vous pouvez accélérer le chargement de la solution en désactivant la restauration automatique de documents.
- Nous avons apporté d’importantes améliorations aux performances des tests lors de l’exécution de grandes solutions avec plusieurs projets de test.
- Visual Basic vous offre désormais une amélioration significative des performances.
- Le profilage des performances permet maintenant de suspendre/reprendre la collecte de données, et un nouvel outil Suivi d’allocation d’objets .NET a été ajouté.
- Nous avons apporté des améliorations à l’outil Utilisation de l’UC pour le profilage des performances.
- Nous avons ajouté de nouvelles fonctionnalités de productivité, comme le nettoyage du code, la refactorisation de l’instruction invert-if, Accéder au bloc englobant, la prise en charge de plusieurs signes d’insertion et de nouveaux profils de clavier.
- Vous pouvez choisir votre instance cible quand vous déboguez des extensions.
- Lancez le Débogueur de capture instantanée directement à partir de la page de résumé de la publication.
- Nous avons introduit F# 4.5, une nouvelle version de langage qui prend entièrement en charge
Span<'T>
et qui contient des améliorations significatives des piles de trace pour le code asynchrone. - Nous avons amélioré les performances et ajouté de nouvelles fonctionnalités dans les outils F#, comme Ctrl+clic pour atteindre la définition.
- Les améliorations apportées à l’ensemble d’outils C++ incluent des améliorations de l’éditeur de liens et de l’optimiseur SSA.
- Les ajouts du développement multiplateforme C++ incluent des mises à jour de ClangFormat, ainsi que des modèles de configuration dans CMake et l’option Ouvrir le dossier pour MinGW, Linux et Windows.
- Les changements apportés à la productivité de C++ incluent IntelliSense pour les modèles, les info-bulles Info express sur les macros, les ampoules de conversion en constexpr, le soulignement ondulé de l’analyse du code dans l’éditeur, et plus encore.
- Les améliorations du débogage C++ incluent des mises à jour Uniquement mon code et des nouveaux points d’arrêt sur variable.
- Il existe de nombreuses fonctionnalités et améliorations JavaScript et TypeScript.
- Vous pouvez désormais gérer les bibliothèques côté client dans vos projets web.
- Nous avons ajouté une nouvelle expérience de conteneur Docker pour les projets web ASP.NET Core.
- Vous pouvez maintenant personnaliser le mot clé d’une image Docker avec les améliorations de la publication apportées dans cette version.
- Les améliorations Xamarin incluent la prise en charge de Xcode 9.4 et de builds incrémentielles Android plus intelligentes.
- Vous pouvez utiliser l’émulateur Android de Google côte-à-côte avec Hyper-V sur la mise à jour Windows du 10 avril 2018.
- Nous avons ajouté un éditeur à écran divisé pour le concepteur Xamarin.Android.
- Le Générateur d’aperçu Xamarin.Forms prend désormais en charge la boîte à outils, et nous l’avons déplacé vers un éditeur à écran divisé.
- Vous pouvez maintenant utiliser le débogage multilangage avec Python 3.7.0rc1.
- Les paramètres de migration de la fonction Azure locale vers Azure affichent désormais de nouvelles valeurs.
- Avec la une prise en charge supplémentaire d’Azure Functions, vous avez maintenant un nouvel hôte cible dans la boîte de dialogue Configurer la livraison continue dans Azure.
- L’amélioration du volet de résumé de l’Explorateur de tests fournit maintenant un état des tests plus détaillé.
- Extensions de l’adaptateur de test .NET : changement cassant et dépréciation.
- Nous avons ajouté une prise en charge native pour le protocole de serveur de langage.
- Vous disposez maintenant d’une prise en charge des secrets pour les projets ASP.NET .NET Framework.
- Visual Studio vous aide à présent à mettre à niveau les applications ASP.NET .NET Framework pour améliorer les performances de génération.
- Visual Studio propose désormais des outils de développement .NET Framework 4.7.2 aux plateformes prises en charge avec le runtime 4.7.2 inclus.
- Les packages à chargement automatique asynchrones sont différés tant que le démarrage et le chargement de la solution ne sont pas effectués.
- Microsoft Build Tools dans Visual Studio 2017 prend maintenant en charge Workflow et inclut l’extensibilité Visual Studio.
- La mise à jour des états GIT et TFS s’effectue désormais correctement pour les changements de fichiers externes dans les projets .NET Core.
- Le SDK .NET Core 2.1.400 est inclus.
Principaux problèmes corrigés dans la version 15.8
Voici les problèmes signalés par les clients et traités dans la version 15.8 :
- SSDT non présent dans Visual Studio Build Tools 2017.
- Échec de la désinstallation d’Anaconda pendant la mise à niveau (erreur 87).
- La mise à niveau vers la version 15.7 génère l’erreur : PackageId:Anaconda3.Exe.x64;PackageAction:Uninstall;ReturnCode:87;.
- La mise à jour de Visual Studio génère les erreurs UWP BuildError at MakePri 0x80073b0f and 0xdef00532 au niveau de Ma solution.
- Visual Studio 2017 rencontre des problèmes avec la fonctionnalité de modèle d’exportation ASP.NET Core.
- Explorateur de tests (Tests SpecFlow) : accède au fichier de classe de fonctionnalité, et non pas au fichier de fonctionnalité.
- Le modèle de projet exporté à partir d’un projet C++ contient uniquement un fichier vcxproj et un fichier vcxproj.filters, mais aucune source ni aucun en-tête.
- Codegen incorrect sur x64.
- Le fait de cliquer avec le bouton droit sur le menu contextuel d’un dossier de solution n’a aucun effet dans Enterprise 15.8 Preview 2.
- VS2017 ne mémorise pas la position et la taille de l’écran pour une utilisation sur 3 moniteurs.
- Une nomenclature autre qu’UTF8 entraîne l’affichage d’un avertissement d’encodage erroné dans la fenêtre de comparaison.
- Un double-clic sur un mot sélectionne le début du mot uniquement, et non la totalité du mot.
- VS2015 et VS2017 créent un dossier Debug vide dans le chemin défini par $(SolutionDir) alors que $(OutDir) et $(IntDir) utilisent des paramètres complètement différents.
- Si vous créez un projet basé sur une boîte de dialogue MFC dans un environnement japonais avec VS2017, la modification de la boîte de dialogue entraîne des erreurs dans la build.
- Affichage du texte de progression du téléchargement sur Visual Studio Installer.
- Le fait de cliquer avec le bouton droit sur un projet exécutable dans l’Explorateur de solutions -> Déboguer -> Démarrer une nouvelle instance sélectionne un projet aléatoire dans la solution à démarrer.
- Échec de la génération en ligne de commande DEVENV avec un message indiquant que cette opération peut uniquement avoir lieu dans le thread d’interface utilisateur.
- Les opérations de recherche et remplacement mémorisent les types de fichiers.
- Les messages d’erreur sont illisibles dans la console du Gestionnaire de package en raison de la couleur de police et de la couleur d’arrière-plan.
- L’aperçu de publication web de Visual Studio Community 2017 15.4.1 échoue avec un message de non-autorisation.
- Ouvrez les résultats de test dans VS 2017 pour les builds XAML.
Consultez tous les problèmes signalés par les clients et corrigés dans Visual Studio 2017 version 15.8.
Détails des nouveautés de la version 15.8
Visual Studio 2017 version 15.8.0
publiée le 14 août 2018
Nouvelles fonctionnalités de la version 15.8
Installer
Vous pouvez désormais télécharger tous les fichiers d’installation avant de commencer votre installation.
- Pour utiliser cette nouvelle option, sélectionnez l’option « Tout télécharger, puis installer » dans le programme d’installation (Figure 1). Nous vous suggérons cette option si vous avez une connexion Internet plus lente.
- L’option par défaut reste « Installer pendant le téléchargement ». Elle effectue le téléchargement et l’installation en parallèle.
Performances
Cette version contient les améliorations des performances suivantes :
- Le changement de branches pour les projets C#, VB et C++ est beaucoup plus rapide pour les grandes solutions, car il n’est plus nécessaire de les recharger.
- Nous sommes passés de plusieurs minutes à quelques secondes pour le déchargement et le rechargement d’un petit ensemble de projets C# et VB dans les grandes solutions.
- Nous avons ajouté une option permettant de désactiver la réouverture des documents qui étaient ouverts dans la session précédente. En effet, la réouverture de certains types de fichiers ou concepteurs peut retarder le chargement des solutions.
- Activez/désactivez cette option dans Outils > Options > Projets > Solutions > Général.
Tester les performances
Nous avons amélioré de manière significative les performances lors de l’exécution de quelques tests dans une grande solution avec plusieurs projets de test. Dans nos labs, l’exécution d’un test unique par une solution comprenant plus de 10 000 MSTests a été jusqu’à 82 % plus rapide !
Amélioration du niveau de performance de Visual Basic
Visual Basic apporte désormais une amélioration significative des performances quand vous utilisez le modèle CInt(Fix(number))
pour convertir les types non entiers en entiers.
Profilage des performances
Cette version comprend les améliorations du profilage des performances suivantes :
Nous avons ajouté la possibilité de démarrer le profilage dans un état suspendu :
Vous pouvez désormais démarrer l’outil Utilisation de l’UC dans le Profileur de performances (ALT-F2) dans un état suspendu (Figure 2). Cela peut être utile quand vous attendez un scénario nécessitant un examen de l’utilisation de l’UC. Si la collecte de l’utilisation de l’UC est désactivée au démarrage, le Profileur de performances ne collecte pas d’échantillons de données de la pile d’utilisation de l’UC tant que cette collecte n’est pas spécifiquement activée. Cela réduit considérablement la quantité de données résultante à collecter et à analyser, ce qui améliore l’efficacité de l’examen des performances.
Pour démarrer une session avec la collecte d’échantillons d’utilisation de l’UC désactivée, cliquez sur l’icône d’engrenage en regard de Utilisation de l’UC dans la page de lancement du Profileur de performances. Dans la page de propriétés d’Utilisation de l’UC, décochez la case Activer le profilage de l’UC (échantillonnage) et cliquez sur OK pour enregistrer les paramètres.
Une fois que vous démarrez l’application cible (cliquez sur Démarrer dans la page de lancement du Profileur de performances), vous voyez un graphe d’utilisation de l’UC (Figure 3) qui vous permet de contrôler le profilage de l’UC. Pour activer la collecte d’échantillons de données de la pile de l’utilisation de l’UC, sélectionnez Activer le profilage de l’UC au milieu de la vue ou cliquez sur le bouton Enregistrer le profil du processeur juste sous le graphe d’utilisation de l’UC. Vous pouvez cliquer sur Enregistrer le profil du processeur pour activer/désactiver la collecte d’un échantillon de données autant de fois que vous le souhaitez. La couleur du graphique d’utilisation de l’UC change pour indiquer si la collecte de l’échantillon est activée/désactivée à ce moment précis.
Nous avons ajouté un outil Suivi d’allocation d’objets .NET :
- L’outil Suivi d’allocation d’objets .NET joint la famille d’outils disponibles à partir du Profileur de performances. L’appel de cet outil pour une session de profileur de performances lance la collecte d’une trace de la pile pour chaque allocation d’objet .NET qui se produit dans l’application cible. Les données de cette pile sont analysées en même temps que les informations de type et de taille d’objet pour afficher les détails de l’activité de la mémoire de votre application. Vous pouvez rapidement déterminer les modèles d’allocation dans votre code et identifier les anomalies. De plus, pour les événements de garbage collection (GC), vous pouvez facilement déterminer les objets qui ont été collectés et conservés, et identifier rapidement les types d’objets qui dominent l’utilisation de la mémoire par l’application.
- C’est particulièrement utile pour les writers d’API afin de réduire les allocations. De nombreuses applications dépassent les limites de la mémoire tampon impliquées dans la collecte de données de diagnostic, mais les petites applications de test utilisant des scénarios clés d’une API peuvent être parfaitement diagnostiquées. Pendant l’exécution de votre application de test, le Profileur de performances affiche un graphe linéaire d’objets dynamiques (nombre), ainsi qu’un histogramme du delta de l’objet (% de changement).
- Pour utiliser l’outil Suivi d’allocation d’objets .NET, affichez la page de lancement du Profileur de performances (Figure 4), sélectionnez une cible à profiler (la cible par défaut est le projet de démarrage dans la solution), cochez Suivi d’allocation d’objets .NET sous Outils disponibles, puis cliquez sur Démarrer.
Profilage du niveau de performance (Utilisation de l’UC)
Cette version contient les améliorations suivantes de l’outil Utilisation de l’UC du Profileur de performances (disponible avec ALT-F2) :
- La vue Arborescence des appels affiche désormais par défaut l’exécution asynchrone par pile des appels logiques. Vous pouvez désactiver ce comportement en décochant l’option Code asynchrone d’agrafage dans la liste déroulante de filtre de la vue principale Utilisation de l’UC.
- Nous avons ajouté une vue Modules/Fonctions qui affiche des informations sur les performances par module (dll) et par fonction dans un module. Il est possible d’afficher la vue Modules/Fonctions dans le menu contextuel disponible en sélectionnant une fonction dans la vue principale Utilisation de l’UC, ou à partir de la liste déroulante des vues, dans les vues Arborescence des appels ou Appelant/appelé.
- Une indication d’instance a été ajoutée au graphe Utilisation de l’UC dans la vue principale de l’outil Utilisation de l’UC. Vous pouvez afficher les instances quand une fonction est exécutée (par exemple, sur la pile) en double-cliquant sur une fonction répertoriée dans l’une des vues Utilisation de l’UC.
Productivité
Cette version contient les améliorations de la productivité suivantes :
- Vous pouvez effectuer un nettoyage du code supplémentaire avec Mettre le document en forme (Ctrl+K, D ou Ctrl+E, D) pour le développement C#. Configurez le nettoyage en accédant à Outils>Options>Éditeur de texte>C#>Style de code>Mise en forme>Général.
- Nous avons ajouté des refactorisations et des actions rapides à l’aide de Ctrl + . ou Alt + Enter :
- L’instruction Invert If vous permet d’inverser votre logique dans les instructions if-else. Placez votre curseur dans le mot clé
if
pour déclencher cette refactorisation. - Ajouter un paramètre à partir d’un site d’appel de méthode vous permet d’ajouter un paramètre à une méthode en ajoutant un argument à un site d’appel de méthode puis en déclenchant Actions rapides et refactorisations.
- Supprimer les parenthèses inutiles supprime les parenthèses qui entourent les opérateurs binaires qui ne sont pas indispensables pour la compilation. Vous pouvez configurer cette règle de style avec Outils> Options>Éditeur de texte>C#>Style de code>Général ou .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
- L’option Utiliser des conditions ternaires dans les affectations et les instructions return peut également être configurée en tant que règle de style dans Outils>Options>... ou avec .editorconfig :
dotnet_style_prefer_conditional_expression_over_assignment
dotnet_style_prefer_conditional_expression_over_return
- L’instruction Invert If vous permet d’inverser votre logique dans les instructions if-else. Placez votre curseur dans le mot clé
- Nous avons ajouté de nouvelles commandes et des améliorations de la fenêtre Atteindre tout :
- Accéder au bloc englobant (Ctrl+Alt+Flèche haut) vous permet de naviguer rapidement vers le haut jusqu’au début du bloc de code englobant.
- Accéder au problème suivant/précédent(Alt+Pg. préc/Pg. suiv) vous permet d’ignorer le problème suivant/précédent (erreur, ligne ondulée, ampoule).
- Atteindre le membre (Ctrl+T, M) est désormais limité par défaut au fichier. Vous pouvez rétablir la valeur par défaut dans la solution en basculant la Portée sur Document actif (Ctrl+Alt+C).
- Vous pouvez maintenant créer des points d’insertion et des sélections à plusieurs emplacements arbitraires dans un fichier avec la prise en charge des signes insertion multiples. Cela vous permet d’ajouter, de modifier ou de supprimer du texte simultanément à plusieurs endroits.
- Insérez des signes insertion avec Ctrl+Alt+Clic gauche de la souris.
- Ajoutez une sélection et un signe insertion à l’emplacement suivant correspondant à la sélection actuelle avec Maj+Alt+Inser.
- Pour obtenir la liste complète des actions, consultez Modifier > Signes insertion multiples.
- Accédez à un menu de navigation contextuel avec Alt+'.
- Maintenez la cohérence de vos combinaisons de touches avec deux nouveaux profils de clavier : Visual Studio Code et ReSharper (Visual Studio). Ces schémas sont disponibles sous Outils > Options > Environnement > Clavier et dans le menu déroulant supérieur.
Débogage
Cette version contient les améliorations du débogage suivantes :
Quand plusieurs instances de Visual Studio 2017 sont installées, vous pouvez maintenant sélectionner celle sur laquelle déployer votre extension lors du débogage (Figure 5). Ainsi, vous pouvez par exemple développer dans le canal des versions de Visual Studio tout en déboguant dans le canal des préversions.
Vous pouvez maintenant attacher le Débogueur de capture instantanée directement à partir de la page de résumé de la publication (Figure 6).
Nous prenons désormais en charge l’affichage de Tâches gérées par le biais de la fenêtre Tâches pendant le débogage de minidumps avec segment de mémoire.
Outils pour les développeurs de la plateforme Windows universelle
Nous avons apporté de nombreuses améliorations importantes au concepteur XAML pour les projets ciblant la plateforme Windows universelle avec une version de plateforme cible de Windows 10 Fall Creators Update (build 16299) ou une version ultérieure. Ces améliorations sont notamment les suivantes :
- Vous pouvez maintenant modifier les collections dans l’Inspecteur de propriété.
- Le concepteur permet maintenant la modification des styles et des modèles, notamment quand les définitions de ces entités sont définies dans d’autres documents.
- Les propriétés de type IconElement (comme l’icône dans un AppBarButton) disposent désormais d’un éditeur personnalisé dans l’Inspecteur de propriété, ce qui simplifie la définition de ces propriétés.
- Le concepteur, l’éditeur et la fonctionnalité Modifier et Continuer doivent maintenant tous fonctionner correctement avec x:DefaultBindMode.
- L’expérience du Gestionnaire d’état visuel dans Blend prend désormais en charge AdaptiveTrigger.
Outils F# 4.5 et F# pour Visual Studio
Nous avons introduit le langage F# version 4.5 avec cette version. Cela correspond également à la nouvelle famille 4.5.x de FSharp.Core (la bibliothèque principale F#). Vous pouvez lire les spécifications de chacun de ces changements dans le référentiel RFC F#. De nombreuses améliorations ont également été apportées aux outils F# pour Visual Studio avec cette version.
F# 4.5
Voici quelques-uns des points importants avec le langage F# version 4.5 :
Prise en charge de Span<'T>
Nous avons implémenté Span<'T>
et des fonctionnalités associées afin de permettre une consommation et une production efficaces des API à l’aide de constructions de type Span
, Memory
et ref
avec F#. Les fonctionnalités disponibles à ces fins sont notamment les suivantes :
- Nouveau type
voidptr
. - Nouvelles fonctions
NativePtr.ofVoidPtr
etNativePtr.toVoidPtr
dans FSharp.Core. - Nouveaux types
inref<'T>
etoutref<'T>
, qui sont respectivement des types byref en lecture seule et des types byref en écriture seule. Cela correspond àin ref
et àout ref
en C#. - Possibilité de produire des structs
ByRefLike
(commeSpan
etReadOnlySpan
). - Possibilité de produire des structs
IsReadOnly
. - Déréférencement implicite des retours
byref
etinref
à partir de méthodes. - Possibilité de produire des membres d’extension sur
byref
/inref
/outref
.
Cet ensemble de fonctionnalités résout un bogue dans la conception initiale des retours byref
en F# 4.1, où les fonctions, les méthodes et les propriétés retournant des types byref
ne déréférençaient pas implicitement la valeur de retour. Nous apportons ce changement pour rendre la fonctionnalité conforme à la façon dont C# gère les retours ref
. Un message d’erreur est utilisé quand une annotation de type indique qu’un déréférencement implicite d’un retour ref
est maintenant utilisé.
De plus, cet ensemble de fonctionnalités corrige également un bogue dans le compilateur F# où le « remplacement de struct Evil » était possible, c’est-à-dire que l’appel d’une méthode sur un struct F# pouvait remplacer le struct réel appelé par une autre méthode. Le paramètre this
sur un struct est maintenant considéré comme un inref<MyStruct>
, avec une erreur qui vous suggère d’ajouter un champ mutable si vous souhaitez modifier le struct.
Vous pouvez en savoir plus sur les constructions de type span
et ref
dans les RFC pour cet ensemble de fonctionnalités.
Match! dans les expressions de calcul
F# 4.5 introduit match!
, un nouveau mot clé à utiliser dans les expressions de calcul, entièrement réalisé par John Wostenberg. Ce liant syntaxique équivaut à un let!
suivi d’un match
sur le résultat. Vous pouvez en savoir plus dans la RFC pour match!
.
Assouplissement de la nécessité d’effectuer le cast d’un type dérivé avec yield
dans des expressions de séquence, de liste et de tableau
F# 4.5 assouplit maintenant certains cas où le cast d’un type dérivé était nécessaire lors de l’utilisation de yield
pour convertir un sous-type en un supertype. Cette restriction n’était déjà pas nécessaire pour ces expressions depuis F# 3.1 quand yield
n’était pas utilisé. Cela rend donc les choses plus cohérentes avec le comportement existant. Vous pouvez en savoir plus dans la RFC pour cette fonctionnalité.
Autorisation de mise en retrait sur les crochets de liste et de tableau
F# 4.5 assouplit la règle de mise en retrait des crochets de liste et de tableau, selon laquelle les crochets devaient faire l’objet d’une mise en retrait supplémentaire quand ils étaient sur leur propre ligne. Cette précédente exigence a toujours été assez déroutante, en particulier pour les débutants en F#. De plus, elle n’est pas applicable pour les expressions de séquence F#. Cela met les expressions de liste et de tableau dans le même état cohérent que les expressions de séquence. Vous pouvez en savoir plus dans la RFC pour cette fonctionnalité.
Cas d’énumération émis comme publics
F# 4.5 émet désormais les incidents d’énumération comme publics en toutes circonstances, pour se conformer à la façon dont C# émet les incidents d’énumération. Cela permet aux outils de profilage d’analyser plus facilement les journaux du code F#, où la valeur plutôt que le nom d’étiquette a été émise. Vous pouvez en savoir plus dans la RFC pour cette fonctionnalité.
Améliorations du compilateur F#
Outre les fonctionnalités de langage précédemment mentionnées, les améliorations apportées au compilateur F# se trouvent dans F# 4.5. Il s’agit notamment des paramètres suivants :
- Nous avons amélioré les tâches liées aux performances du compilateur en supprimant jusqu’à 2,2 % de l’ensemble des allocations dans le compilateur F# (dans différents scénarios).
- Nous avons résolu un bogue qui entraînait un
AccessViolatioNException
lors de l’utilisation deyield!
avec des énumérables basés sur des structs. - Il est désormais possible d’hériter à nouveau de
FSharpFunc
. - Les appels tail sont désactivés par défaut pour les builds de débogage de F# pour .NET Core. Ils sont activées pour la mise en production et correspondent ainsi au compilateur F# de bureau.
- La normalisation de référence F# a été corrigée pour vous permettre de contrôler les références d’assembly transitives écrites dans un fichier de sortie. Cela vous permet d’effectuer l’équivalent de la redirection d’assembly sur .NET Core.
- Nous avons résolu un bogue dans lequel le message d’erreur utilisé lors de la tentative d’utilisation d’un appel dynamique sur les fonctions inline était ignoré. Le message d’erreur se propage désormais.
- F# respecte désormais l’indicateur
WarningsNotAsErrors
que vous pouvez définir dans les fichiers projet. - Quand des branches d’une correspondance au modèle ne retournent pas la même condition de type, le message d’erreur a été mis à jour par Isaac Abraham pour être plus convivial.
- Un bogue qui provoquait une erreur interne lors de la compilation d’une implémentation d’interface qui ne disposait pas d’une implémentation de méthode surchargée a été résolu par Steffen Forkmann.
- La copie inutile de certains tableaux dans la phase d’analyse du compilateur a été supprimée par Gauthier Segay.
- Les correspondances au modèle incomplètes sur des énumérations F# génèrent maintenant un avertissement détaillé qui donne l’exemple d’un incident non couvert, grâce à la contribution de John Wostenberg.
- '#nowarn « 2003 » est maintenant respecté, grâce à la contribution de Matthias Diitrich.
- Un bogue où l’utilisation de méthodes d’extension C# pouvait échouer dans une résolution de surcharge F# a été résolu par Steffen Forkmann.
- Un bogue de structure de données QueueList interne a été résolu par Steffen Forkmann.
- Plusieurs optimisations et efforts de nettoyage du code de plus petite envergure ont été fournis par Steffen Forkmann, Eugene Auduchinok et ncave.
Bibliothèque principale F# 4.5.x
Les ajouts suivants apportés à la bibliothèque principale F# sont désormais disponibles :
- Un travail considérable a été effectué pour améliorer les traces de pile pour les expressions de calcul
async { }
. Vous devez maintenant être en mesure de voir le code utilisateur et les numéros de ligne utilisateur dans les traces de pile. Vous pouvez en savoir plus dans la RFC pour cette fonctionnalité. - Les API
FuncConvert.FromFunc
etFuncConvert.FromAction
API que les typesSystem.Func
etSystem.Action
surchargent, afin de faciliter l’interopérabilité avec C#. Vous pouvez en savoir plus dans la RFC pour cette fonctionnalité. ValueOption
est un nouveau type disponible. Il est le premier d’un ensemble de futures fonctionnalités dont l’objectif final est d’améliorer les performances des modèles actifs. Vous pouvez en savoir plus dans la RFC pour cette fonctionnalité.TryGetValue
est maintenant un nouveau membre sur le type de mappage F#. Vous pouvez en savoir plus dans la RFC pour cette fonctionnalité.- Nous avons corrigé l’utilisation élevée de l’UC lors du premier appel de
MailboxProcessor.TryReceive
. - La comparaison de
bool
utilise maintenant une comparaison générique rapide, grâce à la contribution de Vasily Kirichenko. - Le texte récapitulatif pour
Array.allPairs
a été mis à jour pour être correct, grâce à la contribution de Patrick McDonald
Améliorations des outils F#
Cette version inclut des améliorations significatives des outils F#, comme l’amélioration du niveau de performance et de nouvelles fonctionnalités de l’éditeur. Comme toujours, avec un grand nombre de contributions de la communauté Open Source de F#. Voici les points principaux :
- Nous avons amélioré les performances d’IntelliSense pour les projets de style SDK .NET de tous les formulaires, dont ceux qui utilisent le multiciblage.
- Un effort communautaire pour analyser et améliorer les performances d’IntelliSense pour les fichiers très volumineux a été fourni par Vasily Kirichenko, Steffen Forkmann et Gauthier Segay. Désormais, IntelliSense dans les fichiers très volumineux (plus de 10 000 lignes de code) est environ deux fois plus rapide.
- L’avertissement concernant un FSharp.Core obsolète (malgré l’installation du package) n’est plus présent dans les projets de style SDK .NET.
- L’info-bulle de description qui affiche de la documentation XML sur un membre après
.
dans IntelliSense n’expire plus après 10 secondes. - Un bogue où vous ne pouviez pas définir de points d’arrêt dans des arguments de constructeur d’objet a été résolu.
- Un bogue où un symbole renommé était dupliqué quand il était un paramètre générique a été résolu.
- Les modèles du .NET Framework (modèles F# classiques) consomment désormais FSharp.Core à partir d’un package NuGet pour s’aligner avec les modèles F# du SDK .NET.
- La saisie automatique transactionnelle d’accolades est maintenant disponible pour les paires
()
,[]
,{}
,[||]
et[<>]
. Nous avons fait ce travail en collaboration avec Gibran Rosa. - Vous pouvez maintenant accéder à la définition avec Ctrl + clic sur un symbole F#. Les paramètres de cette action sont aussi respectés dans la fenêtre Outils > Options.
- L’interface utilisateur des performances d’IntelliSense a été modifiée pour autoriser la configuration d’informations typecheck obsolètes sur diverses fonctionnalités de l’IDE. Des explications pour chaque option sont maintenant présentes dans les info-bulles des paramètres.
- La surbrillance de la correspondance d’accolades met correctement en évidence les accolades, corrigée en collaboration avec Vasily Kirichenko.
- L’accès à Atteindre la définition est maintenant correct quand un type est défini de manière récursive, avec la contribution de Vasily Kirichenko.
- Un bogue où un espace de noms importé automatiquement n’était pas ouvert quand la partie supérieure d’un fichier était vide a été résolu par Vasily Kirichenko.
- Un bogue où les spécificateurs
printf
qui contenaient des points n’avaient pas la bonne couleur a été résolu par Vasily Kirichenko. - Un bogue où toutes les ouvertures étaient considérées comme inutilisées dans un module récursif a été résolu par Vasily Kirichenko.
- Les performances de l’analyseur Ouvertures inutilisées ont été améliorées considérablement par Vasily Kirichenko.
- La saisie semi-automatique d’attributs propose uniquement des options qui sont en fait des attributs, avec la contribution de Vasily Kirichenko.
- Les info-bulles d’aide sur les signatures sont maintenant générées pour les paramètres statiques Fournisseur de type sur le site d’appel du constructeur, avec la contribution de Vasily Kirichenko.
- Un bogue où les types valeur utilisés en tant qu’unités de mesure étaient colorés comme des types référence a été résolu par Vasily Kirichenko.
- Un bogue où la colorisation sémantique pouvait disparaître de certains fichiers pendant le défilement a été résolu par Vasily Kirichenko.
- Il existe maintenant une implémentation de CodeLens expérimentale, avec la contribution de Victor Peter Rouven Müller. Vous pouvez l’activer dans Options > Éditeur de texte > F#> Code Lens.
- Un bogue où le service du compilateur F# élidait incorrectement les noms de module dans la documentation XML a été résolu par Sebastian Urban.
- Le code qui utilise
Dictionary
avecContainsKey
et les appelsItem
suivants a été modifié pour utiliserTryGetValue
, par Eugene Auduchinok. - Jakob Majoka a également contribué au processus de consommation d’une API différente pour les info-bulles.
Améliorations apportées à l’infrastructure, à l’empaquetage et au code open source
Nous avons apporté les améliorations suivantes à l’infrastructure, à l’empaquetage et à notre expérience de contribution open source :
- Le compilateur F# distribué avec Visual Studio ne s’installe plus en tant que singleton dans l’emplacement du SDK du compilateur F#. Il est désormais côte-à-côte avec Visual Studio, ce qui signifie que les installations côte à côte de Visual Studio proposent enfin de vraies expériences de langage et d’outils F# côte-à-côte.
- Le package NuGet FSharp.Core est maintenant signé.
- La journalisation ETW a été ajoutée aux outils et au compilateur F#.
- Dans FSharp.Core, les très gros fichiers
control.fs
/control.fsi
ont été divisés enasync.fs
/async.fsi
,event.fs
/event.fsi
,eventmodule.fs
/eventmodule.fsi
,mailbox.fs
/mailbox.fsi
etobservable.fs
/observable.fsi
. - Nous avons ajouté les versions de style du kit SDK .NET de nos artefacts de stress de contrainte de performances de projet.
- Nous avons supprimé Newtonsoft.json de notre base de code, donc vous avez maintenant un package en moins téléchargé pour les contributeurs OSS.
- À présent, nous utilisons les dernières versions de System.Collections.Immutable et System.Reflection.Metadata.
Améliorations de la conformité et de l’ensemble d’outils C++
Cette version contient les améliorations des performances et de l’ensemble d’outils C++ suivantes :
- Un nouveau préprocesseur expérimental basé sur les jetons conforme aux normes C++ 11 (y compris les fonctionnalités du préprocesseur C99), activé avec le commutateur /experimental:preprocessor. C’est géré avec la macro
_MSVC_TRADITIONAL
, définie sur 1 quand vous utilisez le préprocesseur traditionnel et sur 0 quand vous utilisez le nouveau préprocesseur expérimental conforme aux normes. - L’invite de commandes développeur Visual Studio prend en charge l’activation des runtimes atténués Spectre Variant 1 de Visual C++ (
-vcvars_spectre_libs = spectre
). Pour plus d’informations sur les solutions d’atténuation de Spectre, consultez le blog de l’équipe Visual C++. - Deux nouveaux ajouts à l’optimiseur SSA portant sur la génération de code C++ moderne : élimination de magasin redondant et pliage des branches redondantes.
- Optimisation de la mémoire mappée aux performances d’E/S dans l’éditeur de liens pour réduire les durées de lien.
Développement multiplateforme C++
Nous avons ajouté et amélioré le code suivant pour le développement multiplateforme C++ de cette version :
- Ajout du modèle Ajouter>Nouvel élément pour générer un fichier au format .clang conforme à la convention de codage spécifiée pour ClangFormat dans Outils>Options. Si la convention Visual Studio est sélectionnée, le fichier généré essaie de faire correspondre la configuration de mise en forme Visual Studio actuelle de l’utilisateur dans Outils > Options.
- Mise à jour de la version livrée de clang-format.exe avec la version 6.0.0.
- Modèles pour simplifier l’ajout de configurations dans CppProperties.json.
- Ajout de modèles pour simplifier l’ajout de configurations dans CMakeSettings.json (Figure 7).
Productivité de C++
Nous avons apporté les améliorations et avancées suivantes à la productivité de C++ :
- Les info-bulles Info express C++ des macros montrent maintenant ce qu’elles développent, plutôt que juste leur définition. C’est particulièrement utile pour les macros complexes qui référencent d’autres macros parce que cela clarifie par quoi l’identificateur de la macro est remplacé par le préprocesseur.
- Ajout d’une ampoule de correctif rapide pour convertir des macros de base en constexpr en guise de nouvel outil pour moderniser le code.
- IntelliSense pour les modèles vous donne plus de détails sur les arguments de modèle pour tirer pleinement parti d’IntelliSense dans le corps de votre modèle (Figure 8).
- En ce moment, nous travaillons à l’actualisation de notre expérience d’analyse de code. Vous pouvez maintenant activer les nouvelles fonctionnalités en cours de développement sous Outils>Options>Éditeur de texte>C++>Expérimental> Analyse du code. L’analyse du code peut s’exécuter en arrière-plan quand les fichiers sont ouverts ou enregistrés et les résultats sont affichés dans la liste d’erreurs avec un soulignement ondulé vert dans l’éditeur (Figure 9).
Améliorations du débogage C++
Nous avons apporté les améliorations de débogage suivantes :
- Uniquement mon code vous permet maintenant de procéder à un pas à pas principal du code à partir des bibliothèques C++ système ou tierces, en plus de réduire ces appels dans la fenêtre de la pile des appels. Vous pouvez gérer ce comportement dans toutes les bibliothèques C++ quand votre code est compilé avec /JMC et que les chemins des bibliothèques non-utilisateurs sont spécifiés dans un fichier .natjmc. Si la bibliothèque système appelle dans le code utilisateur, quand vous procédez au pas à pas détaillé, le débogueur ignore tout le code système et s’arrête à la première ligne du rappel du code utilisateur (Figure 10).
- Les points d’arrêt sur variable peuvent maintenant être définis dans les fenêtres Espion, Espion express, Automatique et Variables locales, ce qui vous permet d’arrêter quand une valeur stockée en mémoire change en quelques clics rapides.
- Lien source vous permet d’incorporer les informations d’un fichier exécutable ou du code source d’origine d’une bibliothèque dans le fichier PDB pendant la compilation.
- Lors du débogage, la fenêtre de console reste maintenant ouverte par défaut quand le programme termine l’exécution (comme pour l’exécution du programme sans le débogueur). Il est possible de revenir à la fermeture automatique de la console dans Outils > Options > Débogage > Général.
Améliorations de JavaScript et TypeScript
TypeScript 3.0
Visual Studio 2017 version 15.8 inclut désormais TypeScript 3.0 par défaut. Pour plus d’informations sur cette version, consultez l’annonce relative au lancement de TypeScript 3.0.
Prise en charge améliorée de Vue.js
La prise en charge de la bibliothèque Vue.js a été améliorée, notamment la prise en charge des fichiers .vue, également appelés « composants monofichiers ». Elle offre des améliorations lors de la modification de blocs de script à l’intérieur de fichiers .vue, notamment la prise en charge des blocs de script créés en TypeScript par le biais de l’attribut lang="ts"
sur l’élément de script. (Remarque : Vous devez utiliser un processus de build à l’aide de WebPack ou similaire pour convertir les fichiers .vue en fichiers HTML et JS nécessaires au moment de l’exécution. Pour plus d’informations, consultez la page sur les composants monofichiers).
Si la charge de travail Node.js est installée, il y aura désormais des modèles de « Application web Vue.js de base » sous les chemins « JavaScript / Node.js » ou « TypeScript / Node.js » dans la boîte de dialogue Nouveau projet. Vous trouverez ci-dessous un exemple de modification de code TypeScript à l’intérieur d’un bloc de script dans un fichier .vue (Figure 11).
Améliorations relatives à ESLint
Nous avons réimplémenté la prise en charge d’ESLint pour cette version. ESLint présente les améliorations suivantes :
- Au lieu de vérifier (linting) uniquement les fichiers enregistrés, Visual Studio vérifie désormais également les fichiers JavaScript à mesure que vous modifiez.
- Les résultats peuvent être signalés pour tous les fichiers JS dans votre projet, pas simplement pour les fichiers ouverts. S’il y a des parties de votre projet que vous ne souhaitez pas vérifier, vous pouvez désormais utiliser un fichier .eslintignore pour spécifier les répertoires et fichiers qui doivent être ignorés.
- ESLint a été mis à jour pour utiliser ESLint 4 par défaut, mais si votre projet a une installation locale d’ESLint, il utilisera plutôt cette version.
Vous pouvez désactiver ESLint globalement dans Visual Studio en décochant le paramètre Activer ESLint dans ** Outils > Options > Éditeur de texte > Javascript/Typescript > Linting ** (Figure 12).
Améliorations liées à Ouvrir un dossier pour Node.js
Il existe de nombreuses améliorations liées à l’utilisation de JavaScript et TypeScript dans le scénario Ouvrir un dossier quand la « charge de travail Node.js » est installée, par exemple gestion des packages NPM, génération TypeScript, lancement et débogage avec Node.exe, exécution de scripts NPM et exécution de tests unitaires.
Pour plus d’informations, consultez Développer du code JavaScript et TypeScript dans Visual Studio sans solutions ni projets.
Amélioration des performances de l’Éditeur
Dans les versions précédentes, toutes les opérations de service de langage JavaScript et TypeScript étaient traitées par un seul processus Node.js. Cela pouvait entraîner des retards de l’éditeur si des commandes affectant la saisie de l’utilisateur (par exemple la mise en forme automatique après un saut de ligne) étaient envoyées pendant qu’une opération potentiellement longue (telle que l’analyse du code afin de détecter les erreurs) était déjà en cours. Pour atténuer ce risque, un processus distinct est désormais utilisé pour les opérations qui affectent le plus la modification. Ce processus a beaucoup moins d’impact sur les ressources système que le processus de service de langage existant. Toutefois, si vous souhaitez désactiver le nouveau processus, cochez la case Désactivez le processus de syntaxe dédié dans Outils > Options > Éditeur de texte > JavaScript/TypeScript >Service de langage.
Outils web Visual Studio
Le Gestionnaire de bibliothèques est une nouvelle fonctionnalité de Visual Studio 2017. Il vous permet de gérer les bibliothèques côté client dans vos projets web.
Outils de conteneur
Nous avons ajouté une nouvelle expérience de conteneur Docker pour les projets web ASP.NET Core. Elle vient en complément des outils de conteneur Docker Compose existants et offre un moyen plus simple et plus rapide de créer, déboguer et générer des conteneurs Docker directement de Visual Studio.
Vous pouvez ajouter la prise en charge de Docker lors de la création du projet (Figure 13) :
Ou, vous pouvez activer la prise en charge de Docker sur un projet existant par le biais du menu contextuel du projet dans l’Explorateur de solutions (Figure 14). Une fois fait, Visual Studio crée un fichier Dockerfile dans le projet. Vous avez la possibilité de choisir Windows ou Linux.
Visual Studio ajoute également un profil de lancement du débogueur (Figure 15) pour Docker afin de pouvoir déboguer le projet quand il s’exécute dans un conteneur.
Si vous avez une solution avec plusieurs projets Docker, par défaut, un seul conteneur s’exécute lorsque vous choisissez de démarrer la solution. Si vous souhaitez exécuter simultanément plusieurs conteneurs, vous pouvez cliquer avec le bouton droit sur la solution dans l’Explorateur de solutions et sélectionner Définir les projets de démarrage et Plusieurs projets de démarrage, puis sélectionner Démarrer ou Démarrer sans débogage dans la liste déroulante Action pour tous les projets que vous souhaitez exécuter.
Une fois que votre projet conteneurisé s’exécute comme vous le souhaitez, vous pouvez cliquer avec le bouton droit sur le projet et sélectionner Générer une image Docker pour générer une image localement, quand vous êtes prêt à l’envoyer vers Azure Container Registry ou DockerHub.
Vous pouvez également ajouter les fonctionnalités Docker Compose existantes dans un projet web ASP.NET Core grâce à la nouvelle option Prise en charge de l’orchestrateur de conteneurs(Figure 16). Cliquez avec le bouton droit sur le projet web ASP.NET Core dans l’Explorateur de solutions, sélectionnez Ajouter > Prise en charge de l’orchestrateur de conteneurs, puis Docker Compose dans le menu déroulant.
Améliorations de la publication
Cette version contient les améliorations de publication suivantes :
- Quand vous publiez un conteneur Docker dans un registre de conteneurs, vous pouvez maintenant personnaliser le mot clé de l’image. Vous pouvez ajouter manuellement un mot clé (la valeur par défaut est « dernier ») ou utiliser un mot clé généré automatiquement pour être sûr que chaque mot clé est unique.
- Quand vous créez un service d’application Azure, vous pouvez également configurer Application Insights pour collecter automatiquement la télémétrie. Si vous choisissez une région qui a également Application Insights, cette option est activée par défaut. Si vous choisissez une région qui ne contient pas encore Application Insights, vous pouvez spécifier manuellement une autre région pour votre ressource Application Insights dans la liste déroulante.
- Lors de la publication de projets Azure Functions, vous pouvez choisir de publier avec la nouvelle fonctionnalité Run-From-Zip.
Visual Studio Tools pour Xamarin
Cette version contient les mises à jour suivantes pour Xamarin :
- Nous avons ajouté la prise en charge de Xcode 9.4.
- Lorsque vous créez un projet Xamarin.Forms, l’option de partage de code par défaut est maintenant .NET Standard. L’option de projet partagé est toujours disponible.
- Nous avons apporté des améliorations aux builds incrémentielles Android. Xamarin.Android utilise des fichiers générés dans le répertoire de sortie intermédiaire pour réaliser des builds incrémentielles plus rapides que les builds complètes. Avant, si vous changiez le framework cible de votre projet, les fichiers étaient invalidés et une build complète était générée lors de l’exécution suivante. Dans cette version, nous conservons les fichiers dans des dossiers par framework pour vous permettre de basculer entre les différents frameworks cibles et de continuer à bénéficier des builds incrémentielles. En nettoyant le projet, vous pouvez récupérer l’espace disque utilisé par les fichiers conservés.
- Nous avons ajouté une prise en charge minimale des projets de liaison Xamarin.Mac dans Visual Studio 2017. Ainsi, Visual Studio peut charger et reconnaître les projets de liaison Xamarin.Mac comme pris en charge. Vous pouvez également créer des projets de liaison Xamarin.Mac. Toutefois, le processus de génération est effectué localement sans utiliser la chaîne d’outils Mac native pour que les assemblys de langage intermédiaire générés ne puissent pas être utilisés pour exécuter ou déboguer dans les applications.
Prise en charge de l’Émulateur Android Hyper-V
Cette version ajoute la prise en charge de l’émulateur Google Android qui est compatible avec Hyper-V quand il est exécuté sur la Mise à jour du 10 avril 2018 de Windows (Figure 17). Ainsi, vous pouvez utiliser l’émulateur Android de Google côte à côte avec d’autres technologies Hyper-V, notamment les machines virtuelles Hyper-V, les outils Docker, l’émulateur HoloLens et plus encore. Les développeurs d’applications mobiles qui utilisent Hyper-V ont maintenant accès à un émulateur Android rapide qui prend en charge les dernières API Android, fonctionne avec Google Play Services et prend en charge toutes les fonctionnalités de l’émulateur Android, notamment l’appareil photo, la géolocalisation et Quick Boot.
Designer Xamarin.Android
Nous avons apporté des améliorations significatives à l’expérience du concepteur pour Xamarin.Android. Parmi les points clés :
- Un éditeur à écran divisé a été introduit pour vous permettre de créer, modifier et prévisualiser vos présentations en même temps (Figure 18).
- Amélioration de l’expérience IntelliSense et de la fiabilité des contrôles personnalisés.
- Prise en charge des exemples de données pour les valeurs fournies par le système.
Générateur d’aperçu Xamarin.Forms
Le Générateur d’aperçu Xamarin.Forms prend maintenant en charge la boîte à outils quand Xamarin.Forms version 3.1.0.583944 ou ultérieure est utilisé. Les commandes Xamarin.Forms apparaissent dans la boîte à outils pour que ceux qui débutent avec les outils puissent les découvrir plus facilement. Vous pouvez également glisser-déplacer une commande dans l’éditeur de code XAML pour l’ajouter dans la page. Le Générateur d’aperçu Xamarin.Forms fait désormais partie de l’éditeur XAML. Vous pouvez l’ouvrir et le fermer avec l’icône de développement qui se trouve au bord du volet de l’éditeur.
Python
Cette version ajoute les améliorations suivantes pour les développeurs Python :
- Python IntelliSense utilise maintenant des définitions typeshed afin de fournir des résultats plus complets pour les bibliothèques où la saisie automatique ne peut pas être déduite par analyse statique.
- Le débogueur expérimental, d’abord annoncé dans les préversions 15.7, est maintenant le moteur de débogage par défaut utilisé pour Python. Il offre un débogage plus rapide et plus fiable du code Python.
- Nous avons ajouté la prise en charge de Python 3.7, notamment des correctifs pour activer le débogage, le profilage, ainsi que des fonctionnalités de débogage en mode mixte (multilingue).
- Pour plus d’informations sur les fonctionnalités ci-dessus, consultez notre billet de blog Python in Visual Studio 2017 version 15.8.
Migrer les paramètres d’une fonction Azure locale
La boîte de dialogue « Paramètres d’application managés » disponible dans la page de résumé de publication affiche désormais les valeurs de votre fichier local.settings.json pour vous permettre de les migrer vers votre application de fonction Azure distante hébergée dans Azure.
Services connectés
Vous pouvez maintenant configurer la livraison continue de fonctions Azure directement de Visual Studio 2017 pour les solutions avec des projets de fonction Azure.
Amélioration de l’explorateur de test
L’Explorateur de tests affiche maintenant un volet récapitulatif de l’état des tests plus complet (volet inférieur de l’Explorateur de tests) quand l’un des regroupements dans la vue de la hiérarchie est sélectionné. Le volet montre combien de tests ont échoué, réussi ou n’ont pas été exécutés dans ce regroupement.
Nouvelles fonctionnalités d’extensibilité
Protocole de serveur de langage
Visual Studio présente maintenant une prise en charge native du protocole de serveur de langage. Les auteurs d’extension peuvent créer des extensions qui communiquent avec des serveurs de langage existants pour ajouter une autre prise en charge de langage dans Visual Studio. Les utilisateurs d’extension peuvent installer ces extensions pour commencer à utiliser leur langage préféré dans Visual Studio, tel que Rust.
Modèle de package asynchrone
Les auteurs d’extension peuvent maintenant utiliser des modèles d’élément pour créer de packages asynchrones afin d’optimiser les performances de leur extension. En savoir plus sur AsyncPackages.
Packs d’extensions
Partagez facilement votre ensemble préféré d’extensions ou configurez une nouvelle installation de Visual Studio avec toutes vos extensions en utilisant un pack d’extensions. Les packs d’extension vous permettent de créer une liste d’extensions, de les empaqueter dans une extension et de l’utiliser rapidement pour installer ces extensions en bloc.
Publication d’extensions avec la ligne de commande
Publiez vos extensions sur Visual Studio Marketplace à l’aide d’une ligne de commande.
Kit SDK .NET Core 2.1.400
Visual Studio 2017 version 15.8 inclut le SDK .NET Core 2.1.400. Les nouvelles fonctionnalités du SDK sont les suivantes :
- Ajout de modèles NUnit
- Ajout de la prise en charge des outils globaux signés
- Amélioration du texte d’aide pour une meilleure clarté
32 problèmes ont été fermés dans l’interface CLI .NET Core.
20 problèmes ont été fermés dans le kit SDK .NET Core.
Contrôle de code source
Pour les projets .NET Core, les fichiers ajoutés directement au projet par le biais de l’Explorateur de fichiers affichent désormais les bonnes icônes de suivi Git et TFS dans l’Explorateur de solutions sans qu’il soit nécessaire de recharger la solution.
Extension de l’adaptateur de test .NET
L’adaptateur de test .NET présente le changement cassant et la dépréciation suivants :
- Changement cassant : Tous les projets de test doivent inclure leur référence d’adaptateur de test .NET NuGet dans leur csproj. Dans le cas contraire, cette sortie de test s’affiche dans le projet si la découverte par une extension de l’adaptateur de test est lancée après une build ou si l’utilisateur tente d’exécuter les tests sélectionnés :
- Le projet de test {<Chemin complet du projet de test>} ne fait référence à aucun adaptateur NuGet .NET. La découverte ou l’exécution de tests risquent de ne pas fonctionner pour ce projet. Il est recommandé de référencer les adaptateurs de test NuGet dans chaque projet de test de la solution.
- Les frameworks de test .NET ont publié leurs adaptateurs dans les packages NuGet et se sont départis des extensions Visual Studio. La livraison d’adaptateurs de test .NET par le biais d’extensions est dépréciée, mais toujours prise en charge. Cela signifie que deux nouvelles options sont disponibles dans Outils > Options > Test.
- La première option permet à Visual Studio d’utiliser uniquement les adaptateurs de test qu’il trouve dans le dossier d’assembly de test (où se trouve la référence d’adaptateur de test NuGet) ou comme spécifié dans le fichier runsettings.
- La seconde option permet à Visual Studio de « se replier » à l’ancien comportement et de rechercher les extensions d’adaptateur de test pour les projets qui n’ont pas de référence d’adaptateur de test NuGet. Les deux options sont cochées par défaut, donc aucun comportement par défaut ne va changer dans cette version.
- Remarque : Les adaptateurs de test non-.NET ne sont pas affectés par ce changement.
Prise en charge des secrets .NET Framework ASP.NET
Pour les projets du .NET Framework ASP.NET qui ciblent .NET Framework 4.7.1 ou ultérieur, vous pouvez maintenant ouvrir et stocker les secrets que vous ne voulez pas dans votre code source dans usersecrets.xml en cliquant avec le bouton droit sur le projet et en sélectionnant « Secrets utilisateur managés ».
Améliorer les performances .NET Framework ASP.NET
Si le package .NET Compiler référencé est obsolète dans un projet ASP.NET .NET Framework, Visual Studio vous invite à mettre le package à niveau quand vous ouvrez le projet afin d’améliorer les performances de génération.
.NET Framework 4.7.2
Visual Studio 2017 version 15.8 propose désormais les outils de développement .NET Framework 4.7.2 à toutes les plateformes prises en charge avec le runtime 4.7.2 inclus. Le .NET Framework 4.7.2 offre plusieurs nouvelles fonctionnalités et améliorations ainsi que de nombreux correctifs pour la fiabilité, la stabilité, la sécurité et les performances.
Vous trouverez plus de détails sur .NET Framework 4.7.2 dans les articles suivants :
- Blog .NET Framework 4.7.2 RTM
- Notes de publication de .NET Framework 4.7.2
- Problèmes connus de .NET Framework 4.7.2
- Compatibilité des applications dans .NET Framework 4.7.2
- Modifications d’API
Différer le chargement de package
Visual Studio diffère le chargement des packages asynchrones qui sont configurés pour se charger automatiquement tant que l’IDE Visual Studio n’a pas totalement démarré et que la solution n’a pas été chargée. Ce changement n’affecte pas les packages chargés automatiquement de façon synchrone. Les utilisateurs peuvent consulter le Centre d’état des tâches en bas à gauche de la barre d’état pour suivre la progression. Les auteurs d’extensions qui créent des packages asynchrones doivent tester leur extension. Pour plus d’informations, consultez Improving the responsiveness of critical scenarios by updating auto load behavior for extensions.
---
Visual Studio 2017 version 15.8 - Avis de sécurité
Visual Studio 2017 version 15.8.7 Service Release -- Publication : 10 octobre 2018
CVE-2018-8292Vulnérabilité sur la divulgation d’informations .NET Core
Il existe une vulnérabilité de contournement d’une fonctionnalité de sécurité dans .NET Core quand les informations d’authentification HTTP sont exposées par inadvertance dans une requête sortante qui rencontre une redirection HTTP. Un attaquant qui parvient à exploiter cette vulnérabilité peut utiliser les informations pour compromettre davantage l’application web. La mise à jour de sécurité élimine la vulnérabilité en corrigeant la façon dont les applications .NET Core gèrent les redirections HTTP.
Visual Studio 2017 version 15.8.4 Service Release -- Publication : 11 septembre 2018
CVE-2018-8409 Vulnérabilité de déni de service .NET Core
Une vulnérabilité de déni de service existe dans .NET Core 2.1 quand System.IO.Pipelines gère incorrectement les requêtes. Un attaquant qui parvenait à exploiter cette vulnérabilité pouvait provoquer un déni de service sur une application utilisant System.IO.Pipelines. La vulnérabilité peut être exploitée à distance, sans authentification. Un attaquant distant non authentifié pouvait exploiter cette vulnérabilité en émettant des requêtes spécialement conçues pour une application.
CVE-2018-8409 Vulnérabilité de déni de service ASP.NET Core
Une vulnérabilité de déni de service existe dans ASP.NET Core 2.1 qui gère incorrectement les requêtes web. Un attaquant qui parvenait à exploiter cette vulnérabilité pouvait provoquer un déni de service sur une application web ASP.NET Core. La vulnérabilité peut être exploitée à distance, sans authentification. Un attaquant distant non authentifié pouvait exploiter cette vulnérabilité en émettant des requêtes web spécialement conçues pour l’application ASP.NET Core.
Visual Studio 2017 version 15.8 -- Publication : 14 août 2018
CVE-2018-0952 Vulnérabilité liée à l’élévation de privilèges du collecteur standard du hub de diagnostic
Il existe une vulnérabilité liée à l’élévation de privilèges dans un service Visual Studio qui peut entraîner l’octroi de privilèges système à un utilisateur non-administrateur lors de l’écriture de fichiers. Un attaquant qui exploiterait cette vulnérabilité pourrait écrire des fichiers en tant que fichiers système tout en ayant uniquement un accès de niveau utilisateur. Cette mise à jour de sécurité résout ce problème en empruntant l’identité de l’utilisateur actuel pour valider l’accès à l’emplacement du fichier.
Visual Studio 2017 version 15.8 Préversion 4 -- publiée le 10 juillet 2018
CVE-2018-8172 Vulnérabilité liée à l’exécution de code à distance de Visual Studio
Une vulnérabilité d’exécution de code à distance pouvant conduire à l’exploitation de l’ordinateur d’un utilisateur en ouvrant un projet ou un fichier de ressources spécialement conçu. La mise à jour de sécurité élimine la vulnérabilité en corrigeant la façon dont Visual Studio vérifie le balisage source d’un fichier.
CVE-2018-8260 Vulnérabilité liée à l’exécution de code à distance du .NET Framework
Il existe une vulnérabilité d’exécution de code à distance dans le logiciel .NET qui peut entraîner l’exploitation de l’ordinateur d’un utilisateur en permettant à des attaquants d’exécuter du code arbitraire dans le contexte de l’utilisateur actuel. La mise à jour de sécurité élimine la vulnérabilité en corrigeant la façon dont .NET vérifie le balisage source d’un fichier.
CVE-2018-8232 Vulnérabilité liée à la falsification de .NET Microsoft Macro Assembler
Vulnérabilité de falsification liée à la validation incorrecte du code par Microsoft Macro Assembler. La mise à jour de sécurité corrige la vulnérabilité en garantissant que Microsoft Macro Assembler valide correctement la logique du code.
CVE-2018-8171 Vulnérabilité liée au contournement d’une fonctionnalité de sécurité d’ASP.NET Core
Il existe une vulnérabilité de contournement d’une fonctionnalité de sécurité d’ASP.NET Core quand le nombre de tentatives de connexion incorrectes n’est pas vérifié, ce qui peut permettre à un attaquant d’effectuer des tentatives d’authentification en nombre infini. La mise à jour corrige la vulnérabilité en vérifiant le nombre de tentatives de connexion incorrectes.
Visual Studio 2017 version 15.8 Préversion 3 -- publiée le 26 juin 2018
CVE-2018-11235 Avis de sécurité Microsoft concernant une faille de sécurité Git
Nous avons corrigé une faille de sécurité dans Git, signalée par la communauté Git. Cette vulnérabilité peut entraîner une exécution de code arbitraire quand un utilisateur clone un référentiel malveillant.
Visual Studio 2017 version 15.8 Préversion 1 -- publiée le 8 mai 2018
CVE-2018-0765 Avis de sécurité Microsoft concernant une vulnérabilité de déni de service .NET Core
- Microsoft publie cet avis de sécurité pour fournir des informations sur une vulnérabilité dans .NET Core et .NET Native version 2.0. Cet avis propose aussi des conseils sur ce que les développeurs peuvent faire pour mettre à jour leurs applications afin d’éliminer cette vulnérabilité.
- Microsoft a connaissance d’une vulnérabilité de déni de service qui apparaît quand le .NET Framework et .NET Core ne traitent pas correctement des documents XML. Un attaquant qui parvenait à exploiter cette vulnérabilité pouvait provoquer un déni de service sur une application .NET Framework, .NET Core ou .NET Native.
- La mise à jour corrige la vulnérabilité en changeant la manière dont les applications .NET Framework, .NET Core et .NET Native gèrent le traitement des documents XML.
- Si votre application est une application ASP.NET Core, il est également conseillé aux développeurs d’effectuer une mise à jour vers ASP.NET Core 2.0.8.
Visual Studio 2017 version 15.8.1
publiée le 17 août 2018
Principaux problèmes corrigés dans la version 15.8.1
Voici les problèmes résolus dans la version 15.8.1 :
- Correction d’un problème qui faisait que Visual Studio se fermait inopinément quand une fenêtre de navigateur était fermée pendant le débogage d’un projet web.
Visual Studio 2017 version 15.8.2
publiée le 28 août 2018
Principaux problèmes corrigés dans la version 15.8.2
Voici les problèmes signalés par les clients et traités dans la version 15.8.2 :
- Élément de menu contextuel Publier un seul fichier manquant.
- Échec des opérations réseau GIT : impossible de générer git-askpass.exe.
- Échec du chargement de « Programme Éditeur de ressources Visual C++ ».
- L’aperçu de la transformation génère une erreur.
- Impossible de taper une accolade fermante.
- Objet de référence non défini à une instance d’un objet lors du déploiement de projet Service Fabric après la mise à jour 15.8.0.
- Erreur d’installation « Le format du chemin donné n’est pas pris en charge ».
- Échec de la tâche ExpandPriContent. Caractères non conformes dans le chemin d’accès.
- Erreur de programme d’installation « Impossible de créer l’instance de type System.Collections.Genertic.Iset'1[Signer].
- Le déploiement de Service Fabric échoue dans la version 15.8.0.
- Impossible de créer un package d’application pour Windows Store.
- Génération de code incorrecte pour les ressources fortement typées.
- Liaison du clavier pour la disposition italienne.
- IntelliSense rompu #9999.
- Quand vous travaillez sur un projet Unity et que Unity réécrit plusieurs fichiers projet, les Outils Visual Studio pour Unity rechargent désormais automatiquement la solution.
- Le client reçoit maintenant une boîte de dialogue lui permettant de fermer les applications Office si elles bloquent l’installation de Visual Studio et sont à l’origine d’une erreur 1303.
Visual Studio 2017 version 15.8.3
publiée le 6 septembre 2018
Principaux problèmes corrigés dans la version 15.8.3
Voici les problèmes signalés par les clients et traités dans la version 15.8.3 :
- Visual Studio 2017 version 15.8.2 contenait une build de la préversion du kit SDK .NET Core 2.1.401 qui n’était pas compatible avec Visual Studio. Nous avons résolu ce problème dans Visual Studio 2017 version 15.8.3.
- Échec de création des cas de test VSCppUnit.
- Python IntelliSense ne fonctionnait pas sur Python 2.7.
- Le Concepteur XAML entraînait la fermeture inattendue de Visual Studio.
Visual Studio 2017 version 15.8.4
publiée le 11 septembre 2018
Principaux problèmes corrigés dans la version 15.8.4
Voici les problèmes signalés par les clients et traités dans la version 15.8.4 :
- La fonction Constexpr avec des paramètres (void) explicites bloque MSVC version 15.8.0.
- TypeScriptLspCodeActionProvider a rencontré une erreur et a été désactivé.
- Le package « Composants web partagés » ne se chargeait pas correctement.
- L’édition d’une feuilles de style en cascade avec Lien de navigateur activé peut bloquer Visual Studio.
- Le déploiement de Service Fabric échoue dans la version 15.8.0.
- Erreur incorrecte pour le pointeur constexpr sur les membres avec VS2017 15.8.
- Constexpr ne prend pas en charge __declspec (dllimport) dans VS2017 15.8.
- Différence de C++ VS 2017 Update 8 dans le pointeur de fonction de membre entre les modes C++14 et C++17 qui conduit à des incidents.
- TestExplorer bloque l’IU dans la dernière build.
- [WebKit] « Symbole déjà défini » pour la définition de membre de modèle statique (régression).
- Erreur interne du compilateur VS 15.8.0.
- Erreur interne du compilateur dans la fonction constexpr.
- La fenêtre Explorateur de tests reste vierge avec Express.
- Visual Studio 2017 ne s’ouvre pas sur un ordinateur compatible FIPS.
- Erreur interne du compilateur VS2017 15.8 'msc1.cpp', ligne 1518 lors de l’évaluation de fonction constexpr simple.
- Erreur irrécupérable C1001 après la mise à jour vers VS 15.8.0.
- Migration vers VS2017 15.8 : erreur interne du compilateur lors de l’utilisation de fonctions constexpr comme paramètres de modèle.
- Erreur interne du compilateur lors de la compilation d’une fonction de modèle avec constexpr dans VC++ 15.8.0.
- Le code généré par le compilateur VC 15.8.1 entraîne un blocage.
Avis de sécurité
- CVE-2018-8409 Vulnérabilité de déni de service .NET Core
- CVE-2018-8409 Vulnérabilité de déni de service ASP.NET Core
Visual Studio 2017 version 15.8.5
publiée le 20 septembre 2018
Récapitulatif des nouveautés de la version 15.8.5
- Prise en charge de Xcode 10 par Visual Studio Tools pour Xamarin.
Principaux problèmes corrigés dans la version 15.8.5
Voici les problèmes signalés par les clients et traités dans la version 15.8.5 :
- L’info-bulle du débogueur ne se développe pas dans la session de débogage de Xamarin.iOS.
- Le débogueur m’empêche de quitter le point d’exécution (Android).
- Après la mise à jour vers la version 15.8.1, l’info-bulle ne s’affiche pas durant le débogage.
- L’info-bulle du débogueur ne se développe pas [éditeur].
- Exception:MSB0001: Erreur MSBuild interne : déjà inscrit(e) pour la génération.
- Chemin de ressource incorrect dans le manifeste pour ClickOnce après la mise à niveau vers VS 15.8.1.
- Erreur de manifeste ClickOnce dans la version 15.8.
- La publication ClickOnce ne contient pas certaines références.
- ClickOnce : fichier de langue copié à un emplacement incorrect.
- Référence manquante dans le dossier de publication ClickOnce.
- La compilation de projets F# non SDK .NET génère une erreur MSBuild interne, sauf si le parallélisme MSBuild a la valeur 1.
- F# ne fait pas l’objet d’un NGEN dans Visual Studio.
- F# déploie la ressource binaire FSharp.Core 4.5.0.0 à l’emplacement 4.4.3.0.
Détails des nouveautés de la version 15.8.5
Visual Studio Tools pour Xamarin
Visual Studio Tools pour Xamarin prend désormais en charge Xcode 10, qui vous permet de générer et déboguer des applications pour iOS 12, tvOS 12 et watchOS 5. Pour plus d’informations sur les nouvelles fonctionnalités disponibles, voir Guide pratique pour se préparer à iOS 12 et notre introduction à iOS 12.
Visual Studio 2017 version 15.8.6
publiée le 2 octobre 2018
Récapitulatif des nouveautés de la version 15.8.6
- La dernière version du SDK Windows 10 est disponible.
Principaux problèmes corrigés dans la version 15.8.6
Voici les problèmes signalés par les clients et traités dans la version 15.8.6 :
- Les packages NuGet pour Intellisense sont cassés.
- Visual Studio se ferme après l’ouverture de sln.
- L’éditeur XML App.Config se bloque toujours dans 15.8.4.
Détails des nouveautés de la version 15.8.6
SDK Windows 10 le plus récent pour les développeurs de la plateforme Windows universelle
Le Kit SDK Windows 10 (build 17763) est désormais disponible sous forme de composant facultatif pour la charge de travail de développement pour la plateforme Windows universelle. Vous pouvez ajouter ce SDK à la charge de travail en cochant la case SDK Windows 10 (10.0.17763.0).
Visual Studio 2017 version 15.8.7
publiée le 10 octobre 2018
Nouveautés de la version 15.8.7
Azure DevOps
Visual Studio Team Services devient Azure DevOps ! Vous verrez ce nouveau nom de produit dans Team Explorer et en référence dans Visual Studio.
Avis de sécurité
CVE-2018-8292Vulnérabilité sur la divulgation d’informations .NET Core
Visual Studio 2017 version 15.8.8
Publication : 24 octobre 2018
Principaux problèmes corrigés dans la version 15.8.8
Voici les problèmes signalés par les clients et traités dans 15.8.8 :
- /DEBUG:FASTLINK : aucune information de débogage pour les types STL via PCH.
- Codegen incorrect observé dans le compilateur RTW 15.8.
- Endommagement du tas dans le déroulement de la pile quand une fonction est ajoutée inline.
- L’éditeur de liens consomme 6 Go de mémoire pour un cas de test spécifique.
Visual Studio 2017 version 15.8.9
Publication : 2 novembre 2018
Principaux problèmes corrigés dans la version 15.8.9
Voici les problèmes signalés par les clients et traités dans la version 15.8.9 :
- Prise en charge ajoutée pour Xcode 10.1 dans Visual Studio Tools pour Xamarin.
- Mise à jour du modèle Xamarin.Forms avec Xamarin.Forms 3.3.0.
- La mise à jour 15.8.6 rend les projets du programme d’installation inutilisables.
- Erreur interne du compilateur dans VS15.8 msc1.cpp ligne 1518.
- Projets du programme d’installation Microsoft Visual Studio 2017 0.8.8 et VS 15.8.6.
- SFINAE n’arrive pas à détecter la fonction surchargée correspondante dans preview VS preview 3 15.9.0.
- Plantage du concepteur XAML à la fermeture de Visual Studio.
Problèmes connus
Passez en revue tous les problèmes connus et les solutions de contournement disponibles dans Visual Studio 2017 version 15.8.
Commentaires et suggestions
Nous sommes à votre écoute ! Pour tout problème, signalez-les en utilisant l’option Signaler un problème en haut à droite du programme d’installation ou de l’IDE Visual Studio. L’icône se trouve en haut à droite. Vous pouvez faire une suggestion de produit ou suivre vos problèmes sur le site Visual Studio Developer Community, où vous pouvez poser des questions, trouver des réponses et proposer de nouvelles fonctionnalités. Vous pouvez également obtenir une aide gratuite pour l’installation via notre support Live Chat.
Blogs
Tirez parti des insights et des recommandations disponibles sur le site Developer Tools Blogs pour rester informé de toutes les nouvelles versions Release et des publications contenant des informations approfondies sur un large éventail de fonctionnalités.
Historique des notes de publication de Visual Studio 2017
Pour plus d’informations sur les versions précédentes de Visual Studio 2017, consultez la page Historique des notes de publication de Visual Studio 2017.