IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Visual Studio 2022 17.4 est en disponibilité générale et s'accompagne de la prise en charge native d'Arm64
Ainsi que de la possibilité de revenir à votre version précédemment installée de VS

Le , par Stéphane le calme

151PARTAGES

6  0 
Marc Goodner Program Manager, C++, a annoncé la disponibilité générale de Visual Studio 2022 17.4 : « Nous sommes heureux d'annoncer que Visual Studio 2022 17.4 est désormais généralement disponible. Il s'agit de notre première version GA prenant en charge Arm64. En outre, certaines des autres fonctionnalités importantes qu'il inclut sont .NET 7, le support d'entreprise pour la configuration, y compris la restauration, et beaucoup d'autres ».

.NET 7 fait partie de Visual Studio 2022 17.4

La version stable de .NET 7 a été officiellement publiée mardi, jour d'ouverture de l'événement en ligne .NET Conf, en tant que sa plateforme de développement multiplateforme open source de Microsoft.

.NET 7 fait enfin ce que .NET 5 était censé faire en 2020 : couronner les efforts déployés par Microsoft depuis des années pour unifier des produits de développement disparates avec « un seul .NET à l'avenir ». Microsoft estime que les mots clés de cette version sont « unifié », « moderne » et « simple ». Le terme « unifié » signifie que .NET 7 est basé sur une seule bibliothèque de classes de base (Base Class Library - BCL). Toutefois, cela ne signifie pas que les fonctions spécifiques à la plateforme ne sont pas disponibles, et les API spécifiques au système d'exploitation sont accessibles en spécifiant le moniker de trame cible (TFM) suivant.

En matière de « modernité », .NET MAUI, une bibliothèque d'interface utilisateur multiplateforme, fait désormais partie de .NET 7. .NET 7 est conçu pour les applications natives modernes, les clients mobiles, les services périphériques et les technologies de bureau. Créez des expériences mobiles à l'aide d'une base de code unique sans compromettre les performances natives grâce à .NET MAUI. Créez des applications à page unique (SPA) réactives qui s'exécutent dans votre navigateur et hors ligne en tant qu'applications Web progressives (PWA) à l'aide de technologies familières comme C# et les modèles Razor.


Ces expériences modernes plus rapides ne sont pas uniquement destinées aux nouvelles applications. L'assistant de mise à niveau .NET vous fournira des informations sur la compatibilité et, dans certains cas, assurera la migration complète de vos applications vers .NET 6 et .NET 7. Quant au mot "simple", Microsoft a mentionné des améliorations du langage : la BCL a introduit une interface générique liée aux mathématiques qui permet d'effectuer des opérations mathématiques de manière générique, c'est-à-dire indépendamment du type exact. Il n'est pas nécessaire de surcharger les méthodes pour chaque type.

« .NET 7 apporte à vos applications des performances accrues et de nouvelles fonctionnalités pour C# 11/F# 7, .NET MAUI, ASP.NET Core/Blazor, les API Web, WinForms, WPF, etc. Avec .NET 7, vous pouvez aussi facilement conteneuriser vos projets .NET 7, mettre en place des flux de travail CI/CD dans les actions GitHub et obtenir une observabilité cloud-native », ont écrit Jon Douglas, Jeremy Likness et Angelos Petropoulos dans un billet de blogue mardi.

Améliorations apportées dans le support de C++

MSVC

L'un des principaux investissements pour cette version a été l'amélioration des diagnostics du compilateur. Les nouvelles fonctionnalités C++ telles que les concepts et les plages offrent la possibilité d'un code plus expressif et d'API mieux définies. Cependant, pour en tirer le meilleur parti, de meilleurs diagnostics sont nécessaires à partir de l'outillage afin que les défaillances de contraintes puissent être identifiées et résolues. Voici un exemple rapide de l'amélioration, montrant des informations plus complètes sur les échecs de résolution de surcharge et des informations sur les raisons pour lesquelles une contrainte donnée a échoué :

Code C++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct cat {}; 
struct dog {}; 
  
// can pet cats and dogs 
void pet(cat); 
void pet(dog); 
  
template <class T> 
concept has_member_pettable = requires (T t) { t.pet(); }; 
  
// allow calling as a non-member 
template <has_member_pettable T> 
void pet(T); 
  
int main() { 
    pet(0); //oh no 
}

Erreur dans la version 17.3

Citation Envoyé par Affichage à l'écran
<source>(16,10): error C2665: 'pet': none of the 2 overloads could convert all the argument types
pet(0); //oh no
^
<source>(6,6): note: could be 'void pet(dog)'
void pet(dog);
^
<source>(5,6): note: or 'void pet(cat)'
void pet(cat);
^
<source>(16,5): note: 'void pet(cat)': cannot convert argument 1 from 'int' to 'cat'
pet(0); //oh no
^
<source>(16,10): note: No constructor could take the source type, or constructor overload resolution was ambiguous
pet(0); //oh no
^
<source>(5,6): note: see declaration of 'pet'
void pet(cat);
^
<source>(16,10): note: while trying to match the argument list '(int)'
pet(0); //oh no

Erreur dans la version 17.4 :

Citation Envoyé par Affichage à l'écran
<source>(16,5): error C2665: 'pet': no overloaded function could convert all the argument types
pet(0); //oh no
^
<source>(6,6): note: could be 'void pet(dog)'
void pet(dog);
^
<source>(16,5): note: 'void pet(dog)': cannot convert argument 1 from 'int' to 'dog'
pet(0); //oh no
^
<source>(16,9): note: No constructor could take the source type, or constructor overload resolution was ambiguous
pet(0); //oh no
^
<source>(5,6): note: or 'void pet(cat)'
void pet(cat);
^
<source>(16,5): note: 'void pet(cat)': cannot convert argument 1 from 'int' to 'cat'
pet(0); //oh no
^
<source>(16,9): note: No constructor could take the source type, or constructor overload resolution was ambiguous
pet(0); //oh no
^
<source>(13,6): note: or 'void pet(T)'
void pet(T);
^
<source>(16,5): note: the associated constraints are not satisfied
pet(0); //oh no
^
<source>(12,11): note: the concept 'has_member_pettable<int>' evaluated to false
template <has_member_pettable T>
^
<source>(9,48): note: the expression is invalid
concept has_member_pettable = requires (T t) { t.pet(); };
^
<source>(16,5): note: while trying to match the argument list '(int)'
pet(0); //oh no

Dans le cadre de ce travail, Microsoft a également ajouté un support expérimental pour la sortie des diagnostics du compilateur en tant que SARIF. Il est accessible avec le drapeau expérimental /experimental:log<répertoire>.

En plus des diagnostics améliorés, Microsoft a étendu les capacités d'optimisation de la valeur de retour nommée (NRVO) du compilateur....
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !