Visual Stu­dio 2019 : sous le signe de la pro­duc­ti­vi­té et de la col­la­bo­ra­tion

Sous le signe de la pro­duc­ti­vi­té et de la col­la­bo­ra­tion

L'Informaticien - - SOMMAIRE - THIERRY THAUREAUX

La nou­velle mou­ture de Visual Stu­dio, le millésime 2019, vient de sor­tir le 2 avril. Elle in­clut de nom­breuses amé­lio­ra­tions gé­né­rales ain­si que de nou­velles fonc­tion­na­li­tés « vi­sant à op­ti­mi­ser la pro­duc­ti­vi­té des dé­ve­lop­peurs et la col­la­bo­ra­tion entre les équipes » , dixit Mi­cro­soft. Voyons ce qu’il en est dans les faits.

Visual Stu­dio 2019 ar­rive avec son pe­tit lot de nou­veau­tés. D’em­blée, on trouve une nou­velle fe­nêtre de dé­mar­rage sim­pli­fiant l’ac­cès et le lan­ce­ment des pro­jets, des ca­pa­ci­tés de re­cherche ren­for­cées, des performanc­es glo­bales ap­pa­rem­ment amé­lio­rées, une meilleure as­sis­tance grâce à Visual Stu­dio In­tel­liCode AI, un

meilleur sup­port de Py­thon vir­tuel et conda ain­si que la prise en charge des pro­jets . NET Core 3.0, in­cluant les WinForms et WPF.

La boîte de dia­logue

La nou­velle fe­nêtre de dé­mar­rage pré­sente des op­tions à l’aide des­quelles vous pou­vez clo­ner ou ex­traire du code, ou­vrir un pro­jet ou une so­lu­tion, ou­vrir un dos­sier lo­cal ou, tout de même, créer un pro­jet. Le re­grou­pe­ment de ces op­tions dans une boîte de dia­logue unique per­met d’ac­cé­der plus ra­pi­de­ment au code. les ré­sul­tats de re­cherche ap­pa­raissent dy­na­mi­que­ment en fonc­tion et à me­sure que vous sai­sis­sez. Ces ré­sul­tats in­cluent éga­le­ment les rac­cour­cis cla­vier des com­mandes. Cette nou­velle fe­nêtre de dé­mar­rage est mieux adap­tée aux ré­fé­ren­tiels Git ac­tuels – qu’il s’agisse de dé­pôts locaux ou de dé­pôts Git en ligne sur GitHub, Azure Repos ou autre. Un nou­veau work­flow Git- first per­met de clo­ner des dé­pôts Git pu­blics en seule­ment quelques clics. Dans cette nou­velle ver­sion de VS, les icônes ont été mises à jour afin de per­mettre aux dé­ve­lop­peurs d’iden­ti­fier plus ra­pi­de­ment la ver­sion de l’EDI.

Net­toyage du code en un seul clic

Une nou­velle com­mande de net­toyage de code, as­so­ciée à un nou­vel in­di­ca­teur d’in­té­gri­té de do­cu­ment est pro­po­sée. Cette com­mande per­met d’iden­ti­fier les aver­tis­se­ments et les sug­ges­tions et éven­tuel­le­ment de les ré­soudre.

Dé­bo­gage général

D’autres amé­lio­ra­tions ont été faites côté dé­bo­gage. Un vi­sua­li­seur per­son­na­li­sé, com­pa­tible avec . NET Core, est in­té­gré à VS. En sus de la nou­velle fonc­tion­na­li­té de re­cherche qui

per­met de re­trou­ver une chaîne par­mi un en­semble de va­leurs dans la fe­nêtre Es­pion, Visual Stu­dio 2019 « plonge » dans les fenêtres Va­riables lo­cales et Au­to­ma­tique afin de vous ai­der à trou­ver les objets et va­leurs qui vous in­té­ressent. Si vous sou­hai­tez mettre en forme une va­leur afin de chan­ger son ap­pa­rence dans les fenêtres ci­tées ( Es­pion, Var iables lo­cales et Au­to­mat ique), double- cli­quez simplement sur l’un des élé­ments dans les fenêtres et ajou­tez une vir­gule (,) afin d’ac­cé­der à la liste dé­rou­lante des spé­ci­fi­ca­teurs de for­mat dis­po­nibles.

Le mul­ti pla­tes­formes avec . NET Core 3 Pre­view

Visual Stu­dio 2019 est to­ta­le­ment com­pa­tible avec la gé­né­ra­tion d’ap­pli­ca­tions . NET Core 3 qui per­met de dé­ve­lop­per des ap­pli­ca­tions mul­ti plates- formes ( pour Li­nux, Mac OS X et Win­dows). Mi­cro­soft confirme son im­pli­ca­tion dans l’Open Source. Après le . Net Core et po­wer­shell, c’était na­tu­rel­le­ment le tour de Visual Stu­dio. L’éditeur sou­haite que ses ou­tils et sur­tout ses pla­tes­formes, no­tam­ment Azure, per­mettent aux dé­ve­lop­peurs qui les uti­lisent d’em­ployer les lan­gages et les ou­tils de leur choix, et ce, quel que soit le sys­tème d’ex­ploi­ta­tion cible.

Amé­lio­ra­tions de l’IDE

Par­mi les nou­velles fonc­tion­na­li­tés in­cluses dans cette ver­sion, il faut ci­ter In­tel­liCode, pour In­tel­liSense as­sis­té par l’IA, des ca­pa­ci­tés de re­fac­to­ring éten­dues et un dé­bo­gage plus in­tel­li­gent. Les ex­pres­sions ré­gu­lières, que ce soit en C#, Visual Ba­sic ou autre bé­né­fi­cient dé­sor­mais de la co­lo­ra­tion syn­taxique, des diag­nos­tics du com­pi­la­teur et de la cor­rec­tion de code au­to­ma­ti­sée. Ce sup­port d’ana­lyse est ca­pable de re­con­naître les chaînes trans­mises au construc­teur de l’ex­pres­sion ra­tion­nelle ain­si que celles im­mé­dia­te­ment pré­cé­dées d’un com­men­taire conte­nant la chaîne “Lan­guage = re­gex ”. Les ca­rac­té­ris­tiques lin­guis­tiques in­cluses à ce jour sont le classement, la re­cherche d’ac­co­lades, la mise en évi­dence des ré­fé­rences et le diag­nos­tic du com­pi­la­teur. Pour ré­soudre le pro­blème lié au « Flat De­si­gn » af­fec­té aux icônes, Mi­cro­soft a adop­té une ap­proche nom­mée Fluent De­si­gn Sys­tem. Ce­la lui a per­mis d’amé­lio­rer la vi­si­bi­li­té des icônes dans di­vers fonds de cou­leur. Sont à men­tion­ner éga­le­ment l’in­té­gra­tion de nou­velles tech­no­lo­gies web, comme le pro­fi­lage du pro­ces­seur d’ASP. NET, le dé­bo­gage ins­tan­ta­né pour les ap­pli­ca­tions web . NET et une amé­lio­ra­tion du dé­ve­lop­pe­ment mo­bile avec Xa­ma­rin. D’autres fonc­tion­na­li­tés im­por­tantes ont été in­té­grées dans l’IDE pour les dé­ve­lop­peurs . NET :

• la cor­rec­tion de code et la re­fac­to­ri­sa­tion. Il s’agit des cor­rec­tifs de code et des re­fac­to­rings les plus de­man­dés par la com­mu­nau­té des dé­ve­lop­peurs. Les re­fac­to­rings dis­po­nibles sont ac­ces­sibles via les touches CRTL + . ou ALT + En­trée ;

• un in­di­ca­teur de san­té du do­cu­ment per­met de re­cher­cher en un en­droit unique s’il y a des er­reurs de style de code ou si des aver­tis­se­ments sont pré­sents dans les fi­chiers ou­verts. Cet in­di­ca­teur ap­pa­raît dans le coin in­fé­rieur droit de votre éditeur de code, fa­ci­li­tant l’ac­cès aux confi­gu­ra­tions de style et l’exé­cu­tion de net­toyage du code ;

• la com­mande Shift+ F12

per­met de re­cher­cher toutes les ré­fé­rences et Co­deLens et d’af­fi­cher les ré­sul­tats des fi­chiers Ra­zor (. cshtml) dans les pro­jets . NET Core ( versions 2 ou 3) ;

• l’ex­plo­ra­teur de so­lu­tions per­met main­te­nant d’exé­cu­ter des tests ou de dé­bo­guer.

Lan­gages de pro­gram­ma­tion

Les dé­ve­lop­peurs C++ bé­né­fi­cient comme à l’ha­bi­tude d’une nou­velle ver­sion du com­pi­la­teur MSVC ( com­pi­la­teur C++) et de nom­breuses bi­blio­thèques ont été ajou­tées pour amé­lio­rer le dé­ve­lop­pe­ment. Les prin­ci­pales nou­veau­tés côté C++ sont l’ajout du sup­port ini­tial des stan­dards C++ 20 et de la vec­to­ri­sa­tion SIMD OpenMP 4 avec une nou­velle op­tion de com­pi­la­tion (- Ob3). Mi­cro­soft a ga­ran­ti la ré­tro­com­pa­ti­bi­li­té avec le com­pi­la­teur MSVC 2017. L’in­té­gra­tion de cMake, plus ac­com­plie, per­met de dé­tec­ter et d’ac­ti­ver au­to­ma­ti­que­ment les chaînes d’ou­tils Vcpkg pour les pro­jets cMake. Des fonc­tion­na­li­tés ont aus­si été ajou­tées pour les lan­gages C# 8.0, Py­thon et pour . NET en général. Les dé­ve­lop­peurs C# peuvent uti­li­ser les modèles ré­cur­sifs et il est dé­sor­mais pos­sible de créer des ses­sions Visual Stu­dio Live Share pour la col­la­bo­ra­tion sur du code Py­thon. Les dé­ve­lop­peurs Py­thon ont dé­sor­mais le choix de l’in­ter­pré­teur, ce via une nou­velle barre d’ou­tils dé­diée au langage.

Tech­no­lo­gies web

Visual Stu­dio ap­porte éga­le­ment son lot de nou­veau­tés pour les dé­ve­lop­peurs web, comme la prise en charge du dé­bo­gage Ja­vaS­cript pour les tests uni­taires ou le dé­bo­gage des ap­pli­ca­tions ASP. NET si vous uti­li­sez des conte­neurs dans vos dé­ve­lop­pe­ments. Cette ver­sion de VS prend en charge les der­nières images ASP. NET et . NET Core. D’autres ou­tils tels que le der­nier com­pi­la­teur An­droid dex d8 pour les dé­ve­lop­peurs An­droid et Ku­ber­netes sont éga­le­ment in­té­grés à la charge de tra­vail de dé­ve­lop­pe­ment Azure pour une ins­tal­la­tion plus fa­cile. Ce­la ajoute l’ap­pli­ca­tion de conte­neur pour le mo­dèle de pro­jet Ku­ber­netes à Visual Stu­dio et la prise en charge de Ku­ber­netes à une ap­pli­ca­tion ASP. NET Core exis­tante. Une fois le sup­port Ku­ber­netes ajou­té, vous pour­rez créer, exé­cu­ter et dé­bo­guer votre ap­pli­ca­tion dans un clus­ter Live Azure Ku­ber­netes Ser­vice ( AKS) avec Azure Dev Spaces. Un dé­bo­gueur de cap­ture ins­tan­ta­née est in­té­gré à VS pour les ap­pli­ca­tions web . NET s’exé­cu­tant sur des ma­chines vir­tuelles, des en­sembles de ma­chines vir­tuelles et le ser­vice Azure Ku­ber­netes.

UWP

L’ex­ten­si­bi­li­té, les performanc­es Win­dows uni­ver­selles ( UWP) et les tech­no­lo­gies web ont été amé­lio­rées. Concer­nant ces der­nières, des amé­lio­ra­tions vi­suelles lors de la créa­tion d’une ap­pli­ca­tion ASP. NET ont été ap­por­tées. Le déploiemen­t des pé­ri­phé­riques Win­dows Mo­bile ( UWP) ne se­ra plus pris en charge dans Visual Stu­dio 2019. En re­vanche, toute ten­ta­tive de déploiemen­t sur un pé­ri­phé­rique Win­dows 10 Mo­bile pro­vo­que­ra une er­reur in­di­quant que « le déploiemen­t sur des pé­ri­phé­riques Win­dows Mo­bile n’est pas pris en charge dans VS 2019 » , d’après l’équipe de Visual Stu­dio 2019.

NuGet

Visual Stu­dio offre do­ré­na­vant la pos­si­bi­li­té d’uti­li­ser un seul SDK uni­fié dans le pa­ckage NuGet Mi­cro­soft. Vi­sual­Stu­dio. SDK et d’in­clure un pa­quet async à tra­vers une mise à jour du pro­jet VSIX. Cette uni­fi­ca­tion au ni­veau du pa­ckage NuGet dans l’ex­ten­si­bi­li­té de l’IDE de­vrait être très ap­pré­ciée par les dé­ve­lop­peurs.

Contrôle de source, Team Ex­plo­rer et Pull Re­quest

Il est pos­sible de sto­cker tem­po­rai­re­ment les mo­di­fi­ca­tions du code en uti­li­sant les ou­tils Git de Team ex­plo­rer pour Git stash. L’ex­ten­sion fa­cul­ta­tive Pull Re­quests for Visual Stu­dio – dis­po­nible sur le Mar­ket Place Visual Stu­dio – ajoute la ges­tion

des com­men­taires Pull Re­quest dans VS. Cette nou­velle ex­ten­sion vous per­met de pas­ser en re­vue, d’exé­cu­ter et même de dé­bo­guer les de­mandes d’ex­trac­tion de code de votre équipe. Elle est dis­po­nible seule­ment dans Azure Repos pour le mo­ment.

Dé­ve­lop­pe­ment mo­bile avec Xa­ma­rin

Des amé­lio­ra­tions ont été ap­por­tées aux performanc­es de constructi­on ini­tiales et in­cré­men­tielles de Xa­ma­rin. An­droid. Le Xa­ma­rin An­droid De­si­gner été lui aus­si amé­lio­ré.

C# 8.0

C# 8.0, la fu­ture ver­sion ma­jeure du langage phare de la pla­te­forme . Net de Mi­cro­soft, est en pré­pa­ra­tion de­puis pas mal de temps. Il de­vait être li­vré en même temps que . NET Core 3.0. Ses fonc­tion­na­li­tés sont d’ores et dé­jà dis­po­nibles, bien que de ma­nière in­com­plète, dans Visual Stu­dio 2019. Types de ré­fé­rences nul­lables Les types de ré­fé­rences nul­lables consti­tuent l’une des fonc­tion­na­li­tés les plus im­por­tantes de la ver­sion 8.0 de C#. Leur rôle est d’en fi­nir avec les ex­cep­tions ( er­reurs cri­tiques) de type null re­fe­rence, très fré­quentes. Il est dé­sor­mais impossible de mettre null dans des types de ré­fé­rence or­di­naire tels que string. Ces types « simples » se­ront donc, par dé­faut, non nul­lables. Si ce­la ne vous convient pas, vous pour­rez les dé­cla­rer nul­lable en fai­sant suivre la dé­cla­ra­tion de type par « ? » ( char? ou string?, par exemple). Cette fonc­tion­na­li­té de­vrait donc for­cé­ment tou­cher le code exis­tant. Un pro­blème que Mi­cro­soft a dé­ci­dé de gé­rer en dou­ceur, au moins pour l’instant, en gé­né­rant de simples aver­tis­se­ments ( war­nings) et non des er­reurs de com­pi­la­tion. Néan­moins, un code propre au­pa­ra­vant pour­ra gé­né­rer un grand nombre d’aver­tis­se­ments avec cette ver­sion. À vous de choisir d’uti­li­ser ou non cette nou­velle fonc­tion­na­li­té, ce qui peut être ré­glé glo­ba­le­ment au ni­veau du pro­jet ou, de fa­çon plus ato­mique, au ni­veau du fi­chier voire de la ligne de code. Pour illus­trer ce­la, le code qui suit gé­né­re­ra un aver­tis­se­ment si la fonc­tion­na­li­té est ac­ti­vée puisque vous es­sayez d’as­si­gner null à un type non nul­lable : // War­ning : af­fec­ta­tion de la va­leur null à une va­riable de type re­fe­rence non- nul­lable string s = null ; Pour pou­voir le faire, vous de­vez uti­li­ser le type de ré­fé­rence nul­lable as­so­cié ( le type choi­si sui­vi de « ? » ) , c’est- à- dire ici string? : string? s = null

Les flux asyn­chrones

La fonc­tion­na­li­té async/ wait de C#, dis­po­nible de­puis la ver­sion 5.0, vous per­met d’uti­li­ser et de pro­duire des ré­sul­tats asyn­chrones sous forme de code simple, sans call­back. Tou­te­fois, comme l’ex­plique Mi­cro­soft, elle n’est pas très utile si vous sou­hai­tez uti­li­ser ou pro­duire des flux conti­nus de ré­sul­tats, tels que ceux que vous pou­vez ob­te­nir d’un ap­pa­reil IoT ou d’un ser­vice cloud. Les flux asyn­chrones sont donc là pour ré­soudre ce pro­blème. Mi­cro­soft in­tro­duit à cette fin l’in­ter­face IA­syncE­nu­me­rable, la ver­sion asyn­chrone de IE­nu­me­rable. async IA­syncE­nu­me­rable< int> GetBigRe­sultsA­sync() {

await fo­reach ( var re­sult in GetRe­sultsA­sync())

{ if ( re­sult > 20) yield re­turn re­sult; } }

Les types Range et Index

L’éditeur de Seat­tle a ajou­té un type Index des­ti­né à être uti­li­sé, comme son nom l’in­dique, pour l’in­dexa­tion. Vous pou­vez créer une va­riable de ce type à par­tir d’une va­leur en­tière qui se­ra in­cré­men­tée ou, dans l’autre sens, avec un opé­ra­teur de pré­fixe « ^ » pré­cé­dant la va­leur nu­mé­rique en­tière qui se­ra dans ce cas dé­cré­men­tée. index i1 = 1 ; // nu­mé­ro­ta­tion com­men­çant à 1 qui se­ra in­cré­men­tée index i2 = ^ 10; // nu­mé­ro­ta­tion com­men­çant à 10 qui se­ra dé­cré­men­tée Mi­cro­soft a éga­le­ment in­tro­duit un type Range, com­po­sé de deux index, un pour le dé­but et un pour la fin : var slice = a [ i1.. i2] ;

Modèles ré­cur­sifs et in­ter­faces im­plé­men­tées

C# 8 int ro­duit aus si le s mo­dèle s ré­cur si f s – le s modèles conte­nant d’autres modèles –, et l’im­plé­men­ta­tion par dé­faut des membres d’une in­ter­face, comme en Ja­va. Jus­qu’alors, lors­qu’une in­ter­face évo­luait, l’ajout de membres obli­geait à mo­di­fier le code des classes qui l’im­plé­men­tait. Dans C# 8.0, les nou­velles in­ter­faces im­plé­men­tées per­mettent de four­nir un corps pour des membres, des mé­thodes no­tam­ment. Ce­la per­met es­sen­tiel­le­ment de ne pas dé­sta­bi­li­ser le code exis­tant lors­qu’une in­ter­face évo­lue en four­nis­sant une im­plé­men­ta­tion par dé­faut aux classes qui im­plé­mentent l’in­ter­face en ques­tion. Ce­la peut aus­si per­mettre, de fa­çon quelque peu dé­tour­née, de mettre en place une sorte d’hé­ri­tage mul­tiple.

Les ex­pres­sions switch

C# 8.0 ap­porte aus­si les ex­pres­sions Switch. Les ins­truc­tions Switch uti­li­sant des ex­pres­sions ré­gu­lières, ou ra­tion­nelles, du C# 7.0 sont dé­jà as­sez puis­santes, mais elles peuvent être un peu dif­fi­ciles à écrire. Les ex­pres­sions Switch en sont, en quelque sorte, une ver­sion plus lé­gère. En voi­ci un exemple ( source : mi­cro­soft), à par­tir d’une énu­mé­ra­tion ( enum) qui liste les cou­leurs de l’arc- en- ciel : pu­blic enum Rain­bow { Red, Orange, Yel­low, Green, Blue, In­di­go, Vio­let } Le code sui­vant uti­lise l’ins­truc­tion switch, « à l’an­cienne » : pu­blic FromRain­bowC­las­sic( sta­tic RGBCo­lor Rain­bow co­lorBand) { switch ( co­lorBand) { case Rain­bow. Red: re­turn new RGBCo­lor( 0xFF, 0x00, 0x00); case Rain­bow. Orange: re­turn new RGBCo­lor( 0xFF, 0x7F, 0x00); case Rain­bow. Yel­low: re­turn new RGBCo­lor( 0xFF, 0xFF, 0x00); case Rain­bow. Green: re­turn new RGBCo­lor( 0x00, 0xFF, 0x00); case Rain­bow. Blue: re­turn new RGBCo­lor( 0x00, 0x00, 0xFF); case Rain­bow. In­di­go: re­turn new RGBCo­lor( 0x4B, 0x00, 0x82); case Rain­bow. Vio­let: re­turn new RGBCo­lor( 0x94, 0x00, 0xD3); de­fault: throw new Ar­gu­mentEx­cep­tion( message: "in­va­lid enum va­lue", pa­ramName: na­meof( co­lorBand)); }; } Et voi­ci le code équi­valent uti­li­sant cette fois les nou­velles ex­pres­sions switch du C# 8 : pu­blic sta­tic RGBCo­lor

FromRain­bow( Rain­bow co­lorBand) => co­lorBand switch {

Rain­bow. Red => new RGBCo­lor( 0xFF, 0x00, 0x00),

Rain­bow. Orange => new RGBCo­lor( 0xFF, 0x7F, 0x00),

Rain­bow. Yel­low => new RGBCo­lor( 0xFF, 0xFF, 0x00),

Rain­bow. Green => new RGBCo­lor( 0x00, 0xFF, 0x00),

Rain­bow. Blue => new RGBCo­lor( 0x00, 0x00, 0xFF),

Rain­bow. In­di­go => new RGBCo­lor( 0x4B, 0x00, 0x82),

Rain­bow. Vio­let => new RGBCo­lor( 0x94, 0x00, 0xD3),

_ => throw new Ar­gu­mentEx­cep­tion( message: "in­va­lid enum va­lue", pa­ramName: na­meof( co­lorBand)),

} ; L’in­fé­rence de type – c’est le com­pi­la­teur qui choi­sit le type de la va­riable – exis­tait dé­jà en C#, mais elle a été amé­lio­rée. La plu­part des fonc­tion­na­li­tés du C# 8.0 sont com­pa­tibles avec toutes les versions de . NET. Quelques- unes, ce­pen­dant, dé­pendent spé­ci­fi­que­ment de . NET Stan­dard 2.1 – ou ver­sion su­pé­rieure. Il s’agit des flux asyn­chrones et des types Index et Range qui re­posent tous sur de nou­veaux types qui fe­ront par­tie de . NET Stan­dard 2.1. Si . NET Core 3.0 ain­si que Xa­ma­rin, Uni­ty et Mo­no im­plé­men­te­ront com­plè­te­ment . NET Stan­dard 2.1, . NET Fra­me­work 4.8 ne le fe­ra pas. Ce­la si­gni­fie que les types re­quis pour uti­li­ser ces fonc­tion­na­li­tés ne se­ront pas dis­po­nibles lorsque vous ci­ble­rez le C# 8.0 sur . NET Fra­me­work 4.8. Les im­plé­men­ta­tions par dé­faut des membres d’in­ter­face re­posent aus­si sur de nou­velles amé­lio­ra­tions de run­time, et Mi­cro­soft ne les met­tra pas non plus à dis­po­si­tion dans . NET Run­time 4.8. Cette fonc­tion­na­li­té ne fonc­tion­ne­ra donc pas sous . NET Fra­me­work 4.8. ❍

Vous pou­vez té­lé­char­ger Visual Stu­dio 2019 de­puis l’adresse https:// vi­sual­stu­dio. mi­cro­soft. com/ fr/ vs

La nou­velle in­ter­face de Visual Stu­dio 2019, en­core un peu plus « lis­sée » que celle de VS 2017.

La nou­velle fe­nêtre de créa­tion de Visual Stu­dio of­frant le choix du langage et du type de pro­jet mais aus­si de la plate- forme de déploiemen­t.

L’ou­til de tra­vail col­la­bo­ra­tif Visual Stu­dio Live Share, per­met­tant des mo­di­fi­ca­tions conjointes du code entre col­lègues, est in­té­gré par dé­faut à VS 2019.

Newspapers in French

Newspapers from France

© PressReader. All rights reserved.