Nouveautés du .NET Framework What's new in the .NET Framework

Cet article résume les principales nouvelles fonctionnalités et améliorations des versions suivantes du .NET Framework :This article summarizes key new features and improvements in the following versions of the .NET Framework:

Cet article ne fournit pas d'informations complètes sur chacune des nouvelles fonctionnalités et peut faire l'objet de modifications.This article does not provide comprehensive information about each new feature and is subject to change. Pour obtenir des informations générales sur le .NET Framework, consultez Prise en main.For general information about the .NET Framework, see Getting Started. Pour connaître les plateformes prises en charge, consultez Configuration requise.For supported platforms, see System Requirements. Pour obtenir des liens de téléchargement et des instructions d’installation, consultez Guide d’installation.For download links and installation instructions, see Installation Guide.

Note

L’équipe .NET Framework publie aussi des fonctionnalités hors bande avec NuGet pour étendre la prise en charge des plateformes et introduire des nouveautés, telles que les collections immuables et les types de vecteurs compatibles SIMD.The .NET Framework team also releases features out of band with NuGet to expand platform support and to introduce new functionality, such as immutable collections and SIMD-enabled vector types. Pour plus d’informations, consultez Autres bibliothèques de classes et API et Versions finales hors plage de .NET Framework.For more information, see Additional Class Libraries and APIs and The .NET Framework and Out-of-Band Releases. Consultez la liste complète des packages NuGet pour le .NET Framework, ou abonnez-vous à notre flux.See a complete list of NuGet packages for the .NET Framework, or subscribe to our feed.

Présentation de .NET Framework 4.7.2Introducing the .NET Framework 4.7.2

.NET Framework 4.7.2 repose sur les versions précédentes de .NET Framework 4.x, auxquelles il ajoute un grand nombre de nouveaux correctifs et plusieurs nouvelles fonctionnalités, tout en restant un produit très stable.The .NET Framework 4.7.2 builds on previous versions of the .NET Framework 4.x by adding many new fixes and several new features while remaining a very stable product.

Téléchargement et installation de .NET Framework 4.7.2Downloading and installing the .NET Framework 4.7.2

Vous pouvez télécharger .NET Framework 4.7.2 aux emplacements suivants :You can download the .NET Framework 4.7.2 from the following locations:

.NET Framework 4.7.2 peut être installé sur Windows 10, Windows 8.1, Windows 7 SP1 et les plateformes de serveur correspondantes à partir de Windows Server 2008 R2 SP1.The .NET Framework 4.7.2 can be installed on Windows 10, Windows 8.1, Windows 7 SP1, and the corresponding server platforms starting with Windows Server 2008 R2 SP1. Vous pouvez installer .NET Framework 4.7.2 à l’aide du programme d’installation web ou du programme d’installation hors connexion.You can install the .NET Framework 4.7.2 by using either the web installer or the offline installer. Le programme d’installation web constitue la méthode recommandée pour la plupart des utilisateurs.The recommended way for most users is to use the web installer.

Vous pouvez cibler .NET Framework 4.7.2 dans Visual Studio 2012 ou ultérieur en installant .NET Framework 4.7.2 Developer Pack.You can target the .NET Framework 4.7.2 in Visual Studio 2012 or later by installing the .NET Framework 4.7.2 Developer Pack.

Nouveautés de .NET Framework 4.7.2What's new in the .NET Framework 4.7.2

.NET Framework 4.7.2 apporte de nouvelles fonctionnalités dans les domaines suivants :The .NET Framework 4.7.2 includes new features in the following areas:

.NET Framework 4.7.2 met l’accent sur l’amélioration de l’accessibilité pour qu’une application puisse fournir une expérience appropriée aux utilisateurs de technologies d’assistance.A continuing focus in the .NET Framework 4.7.2 is improved accessibility, which allows an application to provide an appropriate experience for users of Assistive Technology. Pour plus d’informations sur les améliorations apportées à .NET Framework 4.7.2 dans le domaine de l’accessibilité, consultez Nouveautés du .NET Framework dans le domaine de l’accessibilité.For information on accessibility improvement in the .NET Framework 4.7.2, see What's new in accessibility in the .NET Framework.

PrincipalCore

.NET Framework 4.7.2 propose un grand nombre d’améliorations de chiffrement, une meilleure prise en charge de la décompression des archives ZIP et de nouvelles API de collection.The .NET Framework 4.7.2 features a large number of cryptographic enhancements, better decompression support for ZIP archives, and additional collection APIs.

Nouvelles surcharges de RSA.Create et DSA.CreateNew overloads of RSA.Create and DSA.Create

Les méthodes DSA.Create(DSAParameters) et RSA.Create(RSAParameters) vous permettent de fournir des paramètres de clés en cas d’instanciation d’une nouvelle clé DSA ou RSA.The DSA.Create(DSAParameters) and RSA.Create(RSAParameters) methods let you supply key parameters when instantiated a new DSA or RSA key. Elles vous permettent de remplacer du code tel que le suivant :They allow you to replace code like the following:

// Before .NET Framework 4.7.2
using (RSA rsa = RSA.Create())
{
   rsa.ImportParameters(rsaParameters);
   // Other code to execute using the RSA instance.
}
' Before .NET Framework 4.7.2
Using rsa = RSA.Create()
   rsa.ImportParameters(rsaParameters)
   ' Other code to execute using the rsa instance.
End Using

par du code comme celui-ci :with code like this:

// Starting with .NET Framework 4.7.2
using (RSA rsa = RSA.Create(rsaParameters))
{
   // Other code to execute using the rsa instance.
}
' Starting with .NET Framework 4.7.2
Using rsa = RSA.Create(rsaParameters)
   ' Other code to execute using the rsa instance.
End Using

Les méthodes DSA.Create(Int32) et RSA.Create(Int32) vous permettent de générer de nouvelles clés DSA ou RSA avec une taille de clé spécifique.The DSA.Create(Int32) and RSA.Create(Int32) methods let you generate new DSA or RSA keys with a specific key size. Exemple :For example:

using (DSA dsa = DSA.Create(2048))
{
   // Other code to execute using the dsa instance.
}
Using dsa = DSA.Create(2048)
   ' Other code to execute using the dsa instance.
End Using

Les constructeurs Rfc2898DeriveBytes acceptent un nom d’algorithme de hachageRfc2898DeriveBytes constructors accept a hash algorithm name

La classe Rfc2898DeriveBytes a trois nouveaux constructeurs avec un paramètre HashAlgorithmName qui identifie l’algorithme HMAC à utiliser lors de la dérivation de clés.The Rfc2898DeriveBytes class has three new constructors with a HashAlgorithmName parameter that identifies the HMAC algorithm to use when deriving keys. Au lieu d’utiliser SHA-1, les développeurs doivent utiliser un algorithme HMAC basé sur SHA-2, tel que SHA-256, comme indiqué dans l’exemple suivant :Instead of using SHA-1, developers should use a SHA-2-based HMAC like SHA-256, as shown in the following example:

private static byte[] DeriveKey(string password, out int iterations, out byte[] salt,
                                out HashAlgorithmName algorithm)
{
   iterations = 100000;
   algorithm = HashAlgorithmName.SHA256;

   const int SaltSize = 32;
   const int DerivedValueSize = 32;

   using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, SaltSize,
                                                             iterations, algorithm))
   {
      salt = pbkdf2.Salt;
      return pbkdf2.GetBytes(DerivedValueSize);
   }
}
Private Shared Function DeriveKey(password As String, ByRef iterations As Integer,
                                  ByRef salt AS Byte(), ByRef algorithm As HashAlgorithmName) As Byte()
   iterations = 100000
   algorithm = HashAlgorithmName.SHA256

   Const SaltSize As Integer = 32
   Const  DerivedValueSize As Integer = 32

   Using pbkdf2 = New Rfc2898DeriveBytes(password, SaltSize, iterations, algorithm)
      salt = pbkdf2.Salt
      Return pbkdf2.GetBytes(DerivedValueSize)
   End Using
End Function

Prise en charge des clés éphémèresSupport for ephemeral keys

L’importation PFX peut éventuellement charger des clés privées directement à partir de la mémoire, en ignorant le disque dur.PFX import can optionally load private keys directly from memory, bypassing the hard drive. Quand le nouvel indicateur X509KeyStorageFlags.EphemeralKeySet est spécifié dans un constructeur X509Certificate2 ou l’une des surcharges de la méthode X509Certificate2.Import, les clés privées sont chargées en tant que clés éphémères. When the new X509KeyStorageFlags.EphemeralKeySet flag is specified in an X509Certificate2 constructor or one of the overloads of the X509Certificate2.Import method, the private keys will be loaded as ephemeral keys. Cela empêche que les clés soient visibles sur le disque.This prevents the keys from being visible on the disk. Cependant :However:

  • Étant donné que les clés ne sont pas conservées sur le disque, les certificats chargés avec cet indicateur ne sont pas de bons candidats pour être ajoutés à un X509Store.Since the keys are not persisted to disk, certificates loaded with this flag are not good candidates to add to an X509Store.

  • Les clés chargées de cette manière le sont presque toujours par Windows CNG.Keys loaded in this manner are almost always loaded via Windows CNG. Ainsi, les appelants doivent accéder à la clé privée en appelant des méthodes d’extension, telles que cert.GetRSAPrivateKey().Therefore, callers must access the private key by calling extension methods, such as cert.GetRSAPrivateKey(). La propriété X509Certificate2.PrivateKey ne fonctionne pas.The X509Certificate2.PrivateKey property does not function.

  • Puisque la propriété X509Certificate2.PrivateKey héritée ne fonctionne pas avec les certificats, les développeurs doivent effectuer des tests rigoureux avant de passer aux clés éphémères.Since the legacy X509Certificate2.PrivateKey property does not work with certificates, developers should perform rigorous testing before switching to ephemeral keys.

Création par programmation de demandes de signature de certification PKCS#10 et de certificats de clé publique X.509Programmatic creation of PKCS#10 certification signing requests and X.509 public key certificates

À compter de .NET Framework 4.7.2, les charges de travail peuvent générer des demandes de signature de certificat, ce qui permet de générer une demande de certificat dans des outils existants.Starting with the .NET Framework 4.7.2, workloads can generate certificate signing requests (CSRs), which allows certificate request generation to be staged into existing tooling. C’est souvent utile dans les scénarios de test.This is frequently useful in test scenarios.

Pour plus d’informations et des exemples de code, consultez « Programmatic creation of PKCS#10 certification signing requests and X.509 public key certificates » sur le Blog .NET.For more information and code examples, see "Programmatic creation of PKCS#10 certification signing requests and X.509 public key certificates" in the .NET Blog.

Nouveaux membres SignerInfoNew SignerInfo members

À compter de .NET Framework 4.7.2, la classe SignerInfo expose davantage d’informations sur la signature.Starting with the .NET Framework 4.7.2, the SignerInfo class exposes more information about the signature. Vous pouvez récupérer la valeur de la propriété System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm pour déterminer l’algorithme de signature utilisé par le signataire.You can retrieve the value of the System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm property to determine the signature algorithm used by the signer. SignerInfo.GetSignature peut être appelée afin d’obtenir une copie de la signature de chiffrement pour ce signataire.SignerInfo.GetSignature can be called to get a copy of the cryptographic signature for this signer.

Laisser un flux encapsulé ouvert après avoir supprimé CryptoStreamLeaving a wrapped stream open after CryptoStream is disposed

À compter de .NET Framework 4.7.2, la classe CryptoStream a un constructeur supplémentaire qui permet à Dispose de ne pas fermer le flux wrappé.Starting with the .NET Framework 4.7.2, the CryptoStream class has an additional constructor that allows Dispose to not close the wrapped stream. Pour laisser le flux wrappé ouvert après la suppression de l’instance CryptoStream, appelez le nouveau constructeur CryptoStream comme suit : To leave the wrapped stream open after the CryptoStream instance is disposed, call the new CryptoStream constructor as follows:

var cStream = new CryptoStream(stream, transform, mode, leaveOpen: true);
Dim cStream = New CryptoStream(stream, transform, mode, leaveOpen:=true)

Changements de décompression dans DeflateStreamDecompression changes in DeflateStream

À compter de .NET Framework 4.7.2, l’implémentation des opérations de décompression de la classe DeflateStream a été changée de façon à utiliser des API Windows natives par défaut.Starting with the .NET Framework 4.7.2, the implementation of decompression operations in the DeflateStream class has changed to use native Windows APIs by default. En règle générale, s’ensuit une amélioration sensible des performances.Typically, this results in a substantial performance improvement.

La prise en charge de la décompression à l’aide des API Windows est activée par défaut pour les applications qui ciblent .NET Framework 4.7.2.Support for decompression by using Windows APIs is enabled by default for applications that target .NET Framework 4.7.2. Les applications qui ciblent les versions antérieures du .NET Framework mais qui s’exécutent sur .NET Framework 4.7.2 peuvent adopter ce comportement en ajoutant le commutateur AppContext suivant au fichier de configuration d’application :Applications that target earlier versions of .NET Framework but are running under .NET Framework 4.7.2 can opt into this behavior by adding the following AppContext switch to the application configuration file:

<AppContextSwitchOverrides value="Switch.System.IO.Compression.DoNotUseNativeZipLibraryForDecompression=false" />

API de collection supplémentairesAdditional collection APIs

.NET Framework 4.7.2 ajoute de nouvelles API aux types SortedSet<T> et HashSet<T>,The .NET Framework 4.7.2 adds a number of new APIs to the SortedSet<T> and HashSet<T> types. Elles incluent notamment :These include:

La classe ConcurrentDictionary<TKey,TValue> comprend de nouvelles surcharges des méthodes AddOrUpdate et GetOrAdd pour récupérer une valeur à partir du dictionnaire ou l’ajouter si elle est introuvable, et pour ajouter une valeur au dictionnaire ou la mettre à jour si elle existe déjà.The ConcurrentDictionary<TKey,TValue> class includes new overloads of the AddOrUpdate and GetOrAdd methods to retrieve a value from the dictionary or to add it if it is not found, and to add a value to the dictionary or to update it if it already exists.

public TValue AddOrUpdate<TArg>(TKey key, Func<TKey, TArg, TValue> addValueFactory, Func<TKey, TValue, TArg, TValue> updateValueFactory, TArg factoryArgument)

public TValue GetOrAdd<TArg>(TKey key, Func<TKey, TArg, TValue> valueFactory, TArg factoryArgument)
Public AddOrUpdate(Of TArg)(key As TKey, addValueFactory As Func(Of TKey, TArg, TValue), updateValueFactory As Func(Of TKey, TValue, TArg, TValue), factoryArgument As TArg) As TValue

Public GetOrAdd(Of TArg)(key As TKey, valueFactory As Func(Of TKey, TArg, TValue), factoryArgument As TArg) As TValue

ASP.NETASP.NET

Prise en charge de l’injection de dépendances dans les Web FormsSupport for dependency injection in Web Forms

L’injection de dépendances dissocie les objets et leurs dépendances afin qu’il ne soit plus obligatoire de modifier le code d’un objet simplement parce qu’une dépendance a changé.Dependency injection (DI) decouples objects and their dependencies so that an object's code no longer needs to be changed just because a dependency has changed. Lors du développement d’applications ASP.NET qui ciblent .NET Framework 4.7.2, vous pouvez :When developing ASP.NET applications that target the .NET Framework 4.7.2, you can:

Prise en charge des cookies du même siteSupport for same-site cookies

SameSite empêche un navigateur d’envoyer un cookie avec une requête intersite.SameSite prevents a browser from sending a cookie along with a cross-site request. .NET Framework 4.7.2 ajoute une propriété HttpCookie.SameSite dont la valeur est un membre d’énumération System.Web.SameSiteMode.The .NET Framework 4.7.2 adds a HttpCookie.SameSite property whose value is a System.Web.SameSiteMode enumeration member. Si sa valeur est SameSiteMode.Strict ou SameSiteMode.Lax, ASP.NET ajoute l’attribut SameSite à l’en-tête set-cookie.If its value is SameSiteMode.Strict or SameSiteMode.Lax, ASP.NET adds the SameSite attribute to the set-cookie header. La prise en charge de SameSite s’applique aux objets HttpCookie, ainsi qu’aux cookies FormsAuthentication et System.Web.SessionState.SameSite support applies to HttpCookie objects, as well as to FormsAuthentication and System.Web.SessionState cookies.

Vous pouvez définir SameSite pour un objet HttpCookie comme suit :You can set SameSite for an HttpCookie object as follows:

var c = new HttpCookie("secureCookie", "same origin");
c.SameSite = SameSiteMode.Lax;
Dim c As New HttpCookie("secureCookie", "same origin")
c.SameSite = SameSiteMode.Lax

Vous pouvez également configurer des cookies SameSite au niveau de l’application en modifiant le fichier web.config :You can also configure SameSite cookies at the application level by modifying the web.config file:

<system.web>
   <httpCookies sameSite="Strict" />
</system.web>

Vous pouvez ajouter SameSite pour des cookies FormsAuthentication et System.Web.SessionState en modifiant le fichier de configuration web :You can add SameSite for FormsAuthentication and System.Web.SessionState cookies by modifying the web config file:

<system.web>
   <authentication mode="Forms">
      <forms cookieSameSite="Lax">
         <!-- ...   -->
      </forms>
   <authentication />
   <sessionSate cookieSameSite="Lax"></sessionState>
</system.web>

RéseauNetworking

Implémentation des propriétés HttpClientHandlerImplementation of HttpClientHandler properties

.NET Framework 4.7.1 a ajouté huit propriétés à la classe System.Net.Http.HttpClientHandler.The .NET Framework 4.7.1 added eight properties to the System.Net.Http.HttpClientHandler class. Toutefois, deux d’entre elles levaient une PlatformNotSupportedException.However, two threw a PlatformNotSupportedException. .NET Framework 4.7.2 fournit désormais une implémentation pour ces propriétés.The .NET Framework 4.7.2 now provides an implementation for these properties. Il s’agit des propriétés suivantes :The properties are:

SQLClientSQLClient

Prise en charge de l’authentification universelle Azure Active Directory et de l’authentification multifacteurSupport for Azure Active Directory Universal Authentication and Multi-Factor authentication

Face aux exigences croissantes de conformité et de sécurité, de nombreux clients se voient obligés d’utiliser l’authentification multifacteur (MFA).Growing compliance and security demands require that many customers use multi-factor authentication (MFA). De plus, les bonnes pratiques en vigueur n’encouragent pas la saisie des mots de passe utilisateur directement dans les chaînes de connexion.In addition, current best practices discourage including user passwords directly in connection strings. Pour gérer ces changements, .NET Framework 4.7.2 étend les chaînes de connexion SQLClient en ajoutant une nouvelle valeur, « Active Directory Interactive », pour le mot clé « Authentification » existant afin de prendre en charge MFA et Azure AD Authentication.To support these changes, the .NET Framework 4.7.2 extends SQLClient connection strings by adding a new value, "Active Directory Interactive", for the existing "Authentication" keyword to support MFA and Azure AD Authentication. La nouvelle méthode interactive prend en charge les utilisateurs Azure AD natifs et fédérés, ainsi que les utilisateurs invités Azure AD.The new interactive method supports native and federated Azure AD users as well as Azure AD guest users. Quand cette méthode est utilisée, l’authentification MFA imposée par Azure AD est prise en charge pour les bases de données SQL.When this method is used, the MFA authentication imposed by Azure AD is supported for SQL databases. De plus, le processus d’authentification demande un mot de passe utilisateur afin de respecter les bonnes pratiques de sécurité.In addition, the authentication process requests a user password to adhere to security best practices.

Dans les versions précédentes du .NET Framework, la connectivité SQL prenait uniquement en charge les options SqlAuthenticationMethod.ActiveDirectoryPassword et SqlAuthenticationMethod.ActiveDirectoryIntegrated.In previous versions of the .NET Framework, SQL connectivity supported only the SqlAuthenticationMethod.ActiveDirectoryPassword and SqlAuthenticationMethod.ActiveDirectoryIntegrated options. Toutes deux font partie du protocole ADAL non interactif, qui ne prend pas en charge MFA.Both of these are part of the non-interactive ADAL protocol, which does not support MFA. Avec la nouvelle option SqlAuthenticationMethod.ActiveDirectoryInteractive, la connectivité SQL prend en charge MFA ainsi que les méthodes d’authentification existantes (authentification intégrée et par mot de passe), ce qui permet aux utilisateurs d’entrer les mots de passe utilisateur de manière interactive sans les conserver dans la chaîne de connexion.With the new SqlAuthenticationMethod.ActiveDirectoryInteractive option, SQL connectivity supports MFA as well as existing authentication methods (password and integrated authentication), which allows users to enter user passwords interactively without persisting passwords in the connection string.

Pour plus d’informations et pour obtenir un exemple, consultez « SQL -- Azure AD Universal and Multi-factor Authentication Support » sur le Blog .NET.For more information and an example, see "SQL -- Azure AD Universal and Multi-factor Authentication Support" in the .NET Blog.

Prise en charge d’Always Encrypted version 2Support for Always Encrypted version 2

.NET Framework 4.7.2 ajoute la prise en charge d’Always Encrypted basé sur enclave.NET Framework 4.7.2 adds supports for enclave-based Always Encrypted. La version d’origine d’Always Encrypted est une technologie de chiffrement côté client dans laquelle les clés de chiffrement ne quittent jamais le client.The original version of Always Encrypted is a client-side encryption technology in which encryption keys never leave the client. Avec Always Encrypted basé sur enclave, le client peut s’il le souhaite envoyer les clés de chiffrement à une enclave sécurisée, qui est une entité de calcul sécurisée pouvant être considérée comme faisant partie de SQL Server, mais que le code SQL Server ne peut pas falsifier.In enclave-based Always Encrypted, the client can optionally send the encryption keys to a secure enclave, which is a secure computational entity that can be considered part of SQL Server but that SQL Server code cannot tamper with. Pour prendre en charge Always Encrypted basé sur enclave, .NET Framework 4.7.2 ajoute les types et membres suivants à l’espace de noms System.Data.SqlClient :To support enclave-based Always Encrypted, the .NET Framework 4.7.2 adds the following types and members to the System.Data.SqlClient namespace:

Le fichier de configuration d’application spécifie ensuite une implémentation concrète de la classe System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider abstraite qui fournit la fonctionnalité pour le fournisseur d’enclave.The application configuration file then specifies a concrete implementation of the abstract System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider class that provides the functionality for the enclave provider. Exemple :For example:

<configuration>
  <configSections>
    <section name="SqlColumnEncryptionEnclaveProviders" type="System.Data.SqlClient.SqlColumnEncryptionEnclaveProviderConfigurationSection,System.Data,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/> 
  </configSections>
  <SqlColumnEncryptionEnclaveProviders>
    <providers>
      <add name="Azure" type="Microsoft.SqlServer.Management.AlwaysEncrypted.AzureEnclaveProvider,MyApp"/>
      <add name="HGS" type="Microsoft.SqlServer.Management.AlwaysEncrypted.HGSEnclaveProvider,MyApp" />
    </providers>
  </SqlColumnEncryptionEnclaveProviders >
</configuration>

Le flux de base d’Always Encrypted basé sur enclave est le suivant :The basic flow of enclave-based Always Encrypted is:

  1. L’utilisateur crée une connexion AlwaysEncrypted à SQL Server qui prend en charge Always Encrypted basé sur enclave.The user creates an AlwaysEncrypted connection to SQL Server that supported enclave-based Always Encrypted. Le pilote contacte le service d’attestation pour s’assurer qu’il se connecte à la bonne enclave.The driver contacts the attestation service to ensure that it is connecting to right enclave.

  2. Une fois l’enclave attestée, le pilote établit un canal sécurisé avec l’enclave sécurisée hébergée sur SQL Server.Once the enclave has been attested, the driver establishes a secure channel with the secure enclave hosted on SQL Server.

  3. Le pilote partage les clés de chiffrement autorisées par le client avec l’enclave sécurisée pendant la durée de la connexion SQL.The driver shares encryption keys authorized by the client with the secure enclave for the duration of the SQL connection.

Windows Presentation FoundationWindows Presentation Foundation

Recherche de ResourceDictionaries par sourceFinding ResourceDictionaries by Source

À compter du .NET Framework 4.7.2, un Assistant de diagnostic peut localiser les  ResourceDictionaries qui ont été créés à partir d’un URI source donné.Starting with the .NET Framework 4.7.2, a diagnostic assistant can locate the ResourceDictionaries that have been created from a given source Uri. (Cette fonctionnalité est destinée aux Assistants de diagnostic, et non aux applications de production.) Un Assistant de diagnostic, tel que la fonctionnalité « Modifier et continuer » de Visual Studio, permet à l’utilisateur de modifier un ResourceDictionary avec l’intention d’appliquer les modifications à l’application en cours d’exécution. (This feature is for use by diagnostic assistants, not by production applications.) A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility lets its user edit a ResourceDictionary with the intent that the changes be applied to the running application. Dans ce but, l’une des étapes consiste à trouver tous les ResourceDictionaries créés par l’application en cours d’exécution à partir du dictionnaire en cours de modification.One step in achieving this is finding all the ResourceDictionaries that the running application has created from the dictionary that’s being edited. Par exemple, une application peut déclarer un ResourceDictionary dont le contenu est copié à partir d’un URI source donné :For example, an application can declare a ResourceDictionary whose content is copied from a given source URI:

<ResourceDictionary Source="MyRD.xaml">

Un Assistant de diagnostic qui modifie le balisage d’origine dans MyRD.xaml peut utiliser la nouvelle fonctionnalité pour trouver le dictionnaire.A diagnostic assistant that edits the original markup in MyRD.xaml can use the new feature to locate the dictionary. La fonctionnalité est implémentée par une nouvelle méthode statique, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. The feature is implemented by a new static method, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. L’Assistant de diagnostic appelle la nouvelle méthode à l’aide d’un URI absolu qui identifie le balisage d’origine, comme illustré par le code suivant :The diagnostic assistant calls the new method using an absolute Uri that identifies the original markup, as illustrated by the following code:

IEnumerable<ResourceDictionary> dictionaries = ResourceDictionaryDiagnostics.GetResourceDictionariesForSource(new Uri("pack://application:,,,/MyApp;component/MyRD.xaml"));
Dim dictionaries As IEnumerable(Of ResourceDictionary) = ResourceDictionaryDiagnostics.GetResourceDictionariesForSource(New Uri("pack://application:,,,/MyApp;component/MyRD.xaml"))

La méthode retourne un énumérable vide, sauf si  VisualDiagnostics est activé et que la variable d’environnement ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO est définie.The method returns an empty enumerable unless VisualDiagnostics is enabled and the ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO environment variable is set.

Recherche de propriétaires de ResourceDictionaryFinding ResourceDictionary owners

À compter du .NET Framework 4.7.2, un Assistant de diagnostic peut localiser les propriétaires d’un ResourceDictionary donné.Starting with the .NET Framework 4.7.2, a diagnostic assistant can locate the owners of a given ResourceDictionary. (Cette fonctionnalité est destinée aux Assistants de diagnostic, et non aux applications de production.) Chaque fois qu’un ResourceDictionary est modifié, WPF détecte automatiquement toutes les références DynamicResource susceptibles d’être affectées par la modification. (The feature is for use by diagnostic assistants and not by production applications.) Whenever a change is made to a ResourceDictionary, WPF automatically finds all DynamicResource references that might be affected by the change.

Un Assistant de diagnostic, tel que la fonctionnalité « Modifier et continuer » de Visual Studio, peut souhaiter étendre cette fonctionnalité afin de gérer les références StaticResource.A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility may want extend this to handle StaticResource references. La première étape de ce processus consiste à rechercher les propriétaires du dictionnaire, autrement dit à rechercher tous les objets dont la propriété Resources fait référence au dictionnaire (directement ou indirectement par le biais de la propriété ResourceDictionary.MergedDictionaries).The first step in this process is to find the owners of the dictionary; that is, to find all the objects whose Resources property refers to the dictionary (either directly, or indirectly via the ResourceDictionary.MergedDictionaries property). Trois nouvelles méthodes statiques implémentées sur la classe System.Windows.Diagnostics.ResourceDictionaryDiagnostics, une pour chacun des types de base ayant une propriété Resources, prennent en charge cette étape :Three new static methods implemented on the System.Windows.Diagnostics.ResourceDictionaryDiagnostics class, one for each of the base types that has a Resources property, support this step:

Ces méthodes retournent un énumérable vide, sauf si  VisualDiagnostics est activé et que la variable d’environnement ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO est définie.These methods return an empty enumerable unless VisualDiagnostics is enabled and the ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO environment variable is set.

Recherche de références StaticResourceFinding StaticResource references

Un Assistant de diagnostic peut maintenant recevoir une notification chaque fois qu’une référence StaticResource est résolue.A diagnostic assistant can now receive a notification whenever a StaticResource reference is resolved. (Cette fonctionnalité est destinée aux Assistants de diagnostic, et non aux applications de production.) Un Assistant de diagnostic, tel que la fonctionnalité « Modifier et continuer » de Visual Studio, peut souhaiter mettre à jour toutes les utilisations d’une ressource quand sa valeur dans un ResourceDictionary change. (The feature is for use by diagnostic assistants, not by production applications.) A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility may want to update all uses of a resource when its value in a ResourceDictionary changes. WPF le fait automatiquement pour les références DynamicResource, mais il ne le fait pas (intentionnellement) pour les références StaticResource.WPF does this automatically for DynamicResource references, but it intentionally does not do so for StaticResource references. À compter de .NET Framework 4.7.2, l’Assistant de diagnostic peut utiliser ces notifications pour localiser ces utilisations de la ressource statique.Starting with the .NET Framework 4.7.2, the diagnostic assistant can use these notifications to locate those uses of the static resource.

La notification est implémentée par le nouvel événement ResourceDictionaryDiagnostics.StaticResourceResolved :The notification is implemented by the new ResourceDictionaryDiagnostics.StaticResourceResolved event:

public static event EventHandler<StaticResourceResolvedEventArgs> StaticResourceResolved;
Public Shared Event StaticResourceResolved As EventHandler(Of StaticResourceResolvedEventArgs)

Cet événement est déclenché chaque fois que le runtime résout une référence StaticResource.This event is raised whenever the runtime resolves a StaticResource reference. Les arguments StaticResourceResolvedEventArgs décrivent la résolution et indiquent l’objet et la propriété qui hébergent la référence StaticResource ainsi que la clé  ResourceDictionary utilisée pour la résolution : The StaticResourceResolvedEventArgs arguments describe the resolution, and indicate the object and property that host the StaticResource reference and the ResourceDictionary and key used for the resolution:

public class StaticResourceResolvedEventArgs : EventArgs
{
   public Object TargetObject { get; }

   public Object TargetProperty { get; }

   public ResourceDictionary ResourceDictionary { get; }

   public object ResourceKey { get; }
}

L’événement n’est pas déclenché (et son accesseur add est ignoré), sauf si  VisualDiagnostics est activé et que la variable d’environnement ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO est définie.The event is not raised (and its add accessor is ignored) unless VisualDiagnostics is enabled and the ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO environment variable is set.

ClickOnceClickOnce

Les applications avec prise en charge HDPI pour Windows Forms, WPF (Windows Presentation Foundation) et VSTO (Visual Studio Tools pour Office) peuvent toutes être déployées à l’aide de ClickOnce.HDPI-aware applications for Windows Forms, Windows Presentation Foundation (WPF), and Visual Studio Tools for Office (VSTO) can all be deployed by using ClickOnce. Si l’entrée suivante est détectée dans le manifeste d’application, le déploiement réussit dans .NET Framework 4.7.2 :If the following entry is found in the application manifest, deployment will succeed under .NET Framework 4.7.2:

<windowsSettings>
   <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>

Pour une application Windows Forms, la solution de contournement précédente consistant à définir la prise en charge DPI dans le fichier de configuration d’application plutôt que dans le manifeste d’application n’est plus nécessaire à la réussite du déploiement ClickOnce.For Windows Forms application, the previous workaround of setting DPI awareness in the application configuration file rather than the application manifest is no longer necessary for ClickOnce deployment to succeed.

Nouveautés du .NET Framework 4.7.1What's new in the .NET Framework 4.7.1

Le .NET Framework 4.7.1 apporte de nouvelles fonctionnalités dans les domaines suivants :The .NET Framework 4.7.1 includes new features in the following areas:

Le .NET Framework 4.7.1 met l’accent sur l’amélioration de l’accessibilité pour qu’une application puisse fournir une expérience appropriée aux utilisateurs de technologies d’assistance.In addition, a major focus in the .NET Framework 4.7.1 is improved accessibility, which allows an application to provide an appropriate experience for users of Assistive Technology. Pour plus d’informations sur les améliorations apportées au .NET Framework 4.7.1 dans le domaine de l’accessibilité, consultez Nouveautés du .NET Framework dans le domaine de l’accessibilité.For information on accessibility improvements in the .NET Framework 4.7.1, see What's new in accessibility in the .NET Framework.

PrincipalCore

Prise en charge de .NET Standard 2.0Support for .NET Standard 2.0

.NET Standard définit un ensemble d’API qui doivent être disponibles sur chaque implémentation .NET prenant en charge cette version de la norme..NET Standard defines a set of APIs that must be available on each .NET implementation that supports that version of the standard. Le .NET Framework 4.7.1 prend entièrement en charge .NET Standard 2.0 et ajoute environ 200 API définies dans .NET Standard 2.0 qui ne figurent pas dans le .NET Framework 4.6.1, 4.6.2 et 4.7.The .NET Framework 4.7.1 fully supports .NET Standard 2.0 and adds about 200 APIs that are defined in .NET Standard 2.0 and are missing from the .NET Framework 4.6.1, 4.6.2, and 4.7. (Notez que ces versions du .NET Framework prennent en charge .NET Standard 2.0 uniquement si d’autres fichiers de prise en charge .NET Standard sont également déployés sur le système cible.) Pour plus d’informations, consultez « BCL - .NET Standard 2.0 Support » dans le billet de blog .NET Framework 4.7.1 Runtime and Compiler Features.(Note that these versions of the .NET Framework support .NET Standard 2.0 only if additional .NET Standard support files are also deployed on the target system.) For more information, see "BCL - .NET Standard 2.0 Support" in the .NET Framework 4.7.1 Runtime and Compiler Features blog post.

Prise en charge des générateurs de configurationSupport for configuration builders

Les générateurs de configuration permettent aux développeurs d’injecter et de générer dynamiquement des paramètres de configuration pour les applications au moment de l’exécution.Configuration builders allow developers to inject and build configuration settings for applications dynamically at run time. Des générateurs de configuration personnalisés peuvent être utilisés pour modifier des données existantes dans une section de configuration ou générer une section de configuration entièrement nouvelle.Custom configuration builders can be used to modify existing data in a configuration section or to build a configuration section entirely from scratch. Sans les générateurs de configuration, les fichiers .config sont statiques, et leurs paramètres sont définis avant le lancement d’une application.Without configuration builders, .config files are static, and their settings are defined some time before an application is launched.

Pour créer un générateur de configuration personnalisé, dérivez votre générateur de la classe abstraite ConfigurationBuilder et substituez ConfigurationBuilder.ProcessConfigurationSection et ConfigurationBuilder.ProcessRawXml.To create a custom configuration builder, you derive your builder from the abstract ConfigurationBuilder class and override its ConfigurationBuilder.ProcessConfigurationSection and ConfigurationBuilder.ProcessRawXml. Vous pouvez également définir vos générateurs dans votre fichier .config.You also define your builders in your .config file. Pour plus d’informations, consultez la section « Configuration Builders » dans le billet de blog .NET Framework 4.7.1 ASP.NET and Configuration Features.For more information, see the "Configuration Builders" section in the .NET Framework 4.7.1 ASP.NET and Configuration Features blog post.

Détection des fonctionnalités au moment de l’exécutionRun-time feature detection

La classe System.Runtime.CompilerServices.RuntimeFeature fournit un mécanisme pour déterminer si une fonctionnalité prédéfinie est prise en charge sur une implémentation .NET donnée au moment de la compilation ou de l’exécution.The System.Runtime.CompilerServices.RuntimeFeature class provides a mechanism for determine whether a predefined feature is supported on a given .NET implementation at compile time or run time. Au moment de la compilation, un compilateur peut vérifier l’existence d’un champ spécifié pour déterminer si la fonctionnalité est prise en charge. Dans l’affirmative, il peut émettre du code qui exploite cette fonctionnalité.At compile time, a compiler can check whether a specified field exists to determine whether the feature is supported; if so, it can emit code that takes advantage of that feature. Au moment de l’exécution, une application peut appeler la méthode RuntimeFeature.IsSupported avant d’émettre du code.At run time, an application can call the RuntimeFeature.IsSupported method before emitting code at runtime. Pour plus d’informations, consultez Ajouter une méthode d’assistance pour décrire les fonctionnalités prises en charge par le runtime.For more information, see Add helper method to describe features supported by the runtime.

Les types tuple de valeur sont sérialisablesValue tuple types are serializable

À compter du .NET Framework 4.7.1, System.ValueTuple et ses types génériques associés sont marqués comme Serializable, ce qui permet la sérialisation binaire.Starting with the .NET Framework 4.7.1, System.ValueTuple and its associated generic types are marked as Serializable, which allows binary serialization. Cela doit faciliter la migration des types Tuple, comme Tuple<T1,T2,T3> et Tuple<T1,T2,T3,T4>, vers des types tuple de valeur.This should make migrating Tuple types, such as Tuple<T1,T2,T3> and Tuple<T1,T2,T3,T4>, to value tuple types easier. Pour plus d’informations, consultez « Compiler -- ValueTuple is Serializable » dans le billet de blog .NET Framework 4.7.1 Runtime and Compiler Features.For more information, see "Compiler -- ValueTuple is Serializable" in the .NET Framework 4.7.1 Runtime and Compiler Features blog post.

Prise en charge des références en lecture seuleSupport for read-only references

System.Runtime.CompilerServices.IsReadOnlyAttribute a été ajouté au .NET Framework 4.7.1.The .NET Framework 4.7.1 adds the System.Runtime.CompilerServices.IsReadOnlyAttribute. Cet attribut est utilisé par les compilateurs de langage pour marquer les membres qui ont des paramètres ou des types de retour de référence en lecture seule.This attribute is used by language compilers to mark members that have read-only ref return types or parameters. Pour plus d’informations, consultez « Compiler -- Support for ReadOnlyReferences » dans le billet de blog .NET Framework 4.7.1 Runtime and Compiler Features.For more information, see "Compiler -- Support for ReadOnlyReferences" in the .NET Framework 4.7.1 Runtime and Compiler Features blog post. Pour plus d’informations sur les valeurs de retour de référence, consultez Valeurs de retour de référence et variables locales ref (Guide C#) et Valeurs de retour de référence (Visual Basic).For information on ref return values, see Ref return values and ref locals (C# Guide) and Ref return values (Visual Basic).

Common Language Runtime (CLR)Common language runtime (CLR)

Amélioration des performances du garbage collectionGarbage collection performance improvements

Les changements apportés au garbage collection (GC) dans le .NET Framework 4.7.1 améliorent les performances d’ensemble, en particulier pour les allocations de tas d’objets volumineux (LOH).Changes to garbage collection (GC) in the .NET Framework 4.7.1 improve overall performance, especially for Large Object Heap (LOH) allocations. Dans le .NET Framework 4.7.1, des verrous distincts sont utilisés pour les allocations de tas de petits objets (SOH) et LOH, ce qui permet aux allocations LOH d’avoir lieu quand le GC en arrière-plan (BGC) nettoie le SOH.In the .NET Framework 4.7.1, separate locks are used for Small Object Heap (SOH) and LOH allocations, which allows LOH allocations to occur when Background GC (BGC) is sweeping the SOH. Les applications qui créent un grand nombre d’allocations LOH bénéficient donc d’une réduction de la contention de verrouillage des allocations et de meilleures performances.As a result, applications that make a large number of LOH allocations should see a reduction in allocation lock contention and improved performance. Pour plus d’informations, consultez la section « Runtime -- GC Performance Improvements » dans le billet de blog .NET Framework 4.7.1 Runtime and Compiler Features.For more information, see the "Runtime -- GC Performance Improvements" section in the .NET Framework 4.7.1 Runtime and Compiler Features blog post.

RéseauNetworking

Prise en charge de SHA-2 pour Message.HashAlgorithmSHA-2 support for Message.HashAlgorithm

Dans le .NET Framework 4.7 et versions antérieures, la propriété Message.HashAlgorithm prenait uniquement en charge les valeurs de HashAlgorithm.Md5 et HashAlgorithm.Sha.In the .NET Framework 4.7 and earlier versions, the Message.HashAlgorithm property supported values of HashAlgorithm.Md5 and HashAlgorithm.Sha only. À compter du .NET Framework 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384 et HashAlgorithm.Sha512 sont également pris en charge.Starting with the .NET Framework 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384, and HashAlgorithm.Sha512 are also supported. MSMQ détermine si cette valeur est utilisée ou non, puisque l’instance de Message n’effectue elle-même aucun hachage et passe simplement les valeurs à MSMQ.Whether this value is actually used depends on MSMQ, since the Message instance itself does no hashing but simply passes on values to MSMQ. Pour plus d’informations, consultez la section « SHA-2 support for Message.HashAlgorithm » dans le billet de blog .NET Framework 4.7.1 ASP.NET and Configuration features.For more information, see the "SHA-2 support for Message.HashAlgorithm" section in the .NET Framework 4.7.1 ASP.NET and Configuration features blog post.

ASP.NETASP.NET

Étapes d’exécution dans les applications ASP.NETExecution steps in ASP.NET applications

ASP.NET traite les demandes dans un pipeline prédéfini comprenant 23 événements.ASP.NET processes requests in a predefined pipeline that includes 23 events. ASP.NET exécute chaque gestionnaire d’événements sous forme d’étape d’exécution.ASP.NET executes each event handler as an execution step. Dans les versions d’ASP.NET jusqu’au .NET Framework 4.7, ASP.NET ne peut pas passer le contexte d’exécution en raison de la commutation entre threads natifs et threads managés.In versions of ASP.NET up to the .NET Framework 4.7, ASP.NET can't flow the execution context due to switching between native and managed threads. Au lieu de cela, ASP.NET passe uniquement HttpContext de manière sélective.Instead, ASP.NET selectively flows only the HttpContext. À compter du .NET Framework 4.7.1, la méthode HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) permet également aux modules de restaurer les données ambiantes.Starting with the .NET Framework 4.7.1, the HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) method also allows modules to restore ambient data. Cette fonctionnalité est destinée aux bibliothèques préoccupées par le traçage, le profilage, les diagnostics ou les transactions qui, par exemple, tiennent compte du flux d’exécution de l’application.This feature is targeted at libraries concerned with tracing, profiling, diagnostics, or transactions, for example, that care about the execution flow of the application. Pour plus d’informations, consultez « ASP.NET Execution Step Feature » dans le billet de blog .NET Framework 4.7.1 ASP.NET and Configuration Features.For more information, see the "ASP.NET Execution Step Feature" in the .NET Framework 4.7.1 ASP.NET and Configuration Features blog post.

Analyse HttpCookie ASP.NETASP.NET HttpCookie parsing

Le .NET Framework 4.7.1 comprend une nouvelle méthode, HttpCookie.TryParse, qui offre un moyen normalisé de créer un objet HttpCookie à partir d’une chaîne et d’affecter avec précision des valeurs de cookie telles que la date d’expiration et le chemin.The .NET Framework 4.7.1 includes a new method, HttpCookie.TryParse, that provides a standardized way to create an HttpCookie object from a string and accurately assign cookie values such as expiration date and path. Pour plus d’informations, consultez « ASP.NET HttpCookie parsing » dans le billet de blog .NET Framework 4.7.1 ASP.NET and Configuration Features.For more information, see "ASP.NET HttpCookie parsing" in the .NET Framework 4.7.1 ASP.NET and Configuration Features blog post.

Options de hachage SHA-2 pour les informations d’identification de l’authentification par formulaires ASP.NETSHA-2 hash options for ASP.NET forms authentication credentials

Dans le .NET Framework 4.7 et versions antérieures, ASP.NET permettait aux développeurs de stocker les informations d’identification des utilisateurs avec des mots de passe hachés dans des fichiers de configuration en utilisant MD5 ou SHA1.In the .NET Framework 4.7 and earlier versions, ASP.NET allowed developers to store user credentials with hashed passwords in configuration files using either MD5 or SHA1. À compter du .NET Framework 4.7.1, ASP.NET prend en charge de nouvelles options de hachage SHA-2 sécurisées, notamment SHA256, SHA384 et SHA512.Starting with the .NET Framework 4.7.1, ASP.NET also supports new secure SHA-2 hash options such as SHA256, SHA384, and SHA512. SHA1 reste la valeur par défaut, et un algorithme de hachage autre que celui par défaut peut être défini dans le fichier de configuration web.SHA1 remains the default, and a non-default hash algorithm can be defined in the web configuration file. Exemple :For example:

<system.web>
    <authentication mode="Forms">
        <forms loginUrl="~/login.aspx">
          <credentials passwordFormat="SHA512">
            <user name="jdoe" password="6D003E98EA1C7F04ABF8FCB375388907B7F3EE06F278DB966BE960E7CBBD103DF30CA6D61F7E7FD981B2E4E3A64D43C836A4BEDCA165C33B163E6BCDC538A664" />
          </credentials>
        </forms>
    </authentication>
</system.web>

Nouveautés dans le .NET Framework 4.7What's new in the .NET Framework 4.7

Le .NET Framework 4.7 apporte de nouvelles fonctionnalités dans les domaines suivants :The .NET Framework 4.7 includes new features in the following areas:

Pour obtenir la liste des nouvelles API ajoutées au .NET Framework 4.7, consultez la page Changements au niveau des API du .NET Framework 4.7 sur GitHub.For a list of new APIs added to the .NET Framework 4.7, see .NET Framework 4.7 API Changes on GitHub. Pour obtenir la liste des fonctionnalités améliorées et des correctifs de bogues apportés au .NET Framework 4.7, consultez la page Liste des changements du .NET Framework 4.7 sur GitHub.For a list of feature improvements and bug fixes in the .NET Framework 4.7, see .NET Framework 4.7 List of Changes on GitHub. Pour plus d’informations, consultez Announcing the .NET Framework 4.7 sur le blog .NET.For additional information, see Announcing the .NET Framework 4.7 in the .NET blog.

PrincipalCore

Le .NET Framework 4.7 améliore la sérialisation par le DataContractJsonSerializer :The .NET Framework 4.7 improves serialization by the DataContractJsonSerializer:

Fonctionnalités améliorées avec chiffrement à courbe elliptique (ECC)*Enhanced functionality with Elliptic Curve Cryptography (ECC)*

Dans le .NET Framework 4.7, des méthodes ImportParameters(ECParameters) ont été ajoutées aux classes ECDsa et ECDiffieHellman pour permettre à un objet de représenter une clé déjà établie.In the .NET Framework 4.7, ImportParameters(ECParameters) methods were added to the ECDsa and ECDiffieHellman classes to allow for an object to represent an already-established key. En outre, une méthode ExportParameters(Boolean) a été ajoutée pour exporter la clé à l’aide de paramètres de courbes explicites.An ExportParameters(Boolean) method was also added for exporting the key using explicit curve parameters.

Le .NET Framework 4.7 ajoute également la prise en charge de courbes supplémentaires (notamment la série de courbes Brainpool) et intègre des définitions prédéfinies pour faciliter la création via les nouvelles méthodes de fabrique Create et Create.The .NET Framework 4.7 also adds support for additional curves (including the Brainpool curve suite), and has added predefined definitions for ease-of-creation through the new Create and Create factory methods.

Vous pouvez voir un exemple des améliorations apportées au chiffrement de .NET Framework 4.7 sur GitHub.You can see an example of .NET Framework 4.7 cryptography improvements on GitHub.

Meilleure prise en charge des caractères de contrôle par le DataContractJsonSerializerBetter support for control characters by the DataContractJsonSerializer

Dans le .NET Framework 4.7, le DataContractJsonSerializer sérialise les caractères de contrôle conformément à la norme ECMAScript 6.In the .NET Framework 4.7, the DataContractJsonSerializer serializes control characters in conformity with the ECMAScript 6 standard. Ce comportement est activé par défaut pour les applications qui ciblent le .NET Framework 4.7, et cette fonctionnalité doit être activée pour les applications qui s’exécutent sous le .NET Framework 4.7 mais qui ciblent une version antérieure du .NET Framework.This behavior is enabled by default for applications that target the .NET Framework 4.7, and is an opt-in feature for applications that are running under the .NET Framework 4.7 but target a previous version of the .NET Framework. Pour plus d'informations, consultez Modifications de reciblage dans le .NET Framework 4.7.For more information, see Retargeting Changes in the .NET Framework 4.7.

RéseauNetworking

Le .NET Framework 4.7 ajoute les fonctionnalités liées au réseau suivantes :The .NET Framework 4.7 adds the following network-related feature:

Prise en charge du système d’exploitation par défaut pour les protocoles TLS*Default operating system support for TLS protocols*

La pile TLS, qui est utilisée par System.Net.Security.SslStream et les composants au-dessus de la pile, comme HTTP, FTP et SMTP, permet aux développeurs d’utiliser les protocoles TLS par défaut pris en charge par le système d’exploitation.The TLS stack, which is used by System.Net.Security.SslStream and up-stack components such as HTTP, FTP, and SMTP, allows developers to use the default TLS protocols supported by the operating system. Les développeurs n’ont plus besoin de coder en dur une version TLS.Developers need no longer hard-code a TLS version.

ASP.NETASP.NET

Dans le .NET Framework 4.7, ASP.NET propose les nouvelles fonctionnalités suivantes :In the .NET Framework 4.7, ASP.NET includes the following new features:

Extensibilité du cache d’objetsObject Cache Extensibility

À compter du .NET Framework 4.7, ASP.NET ajoute un nouvel ensemble d’API permettant aux développeurs de remplacer les implémentations ASP.NET par défaut pour la mise en cache d’objets en mémoire et la surveillance de la mémoire.Starting with the .NET Framework 4.7, ASP.NET adds a new set of APIs that allow developers to replace the default ASP.NET implementations for in-memory object caching and memory monitoring. Les développeurs peuvent maintenant remplacer un des trois composants suivants si l’implémentation ASP.NET n’est pas appropriée :Developers can now replace any of the following three components if the ASP.NET implementation is not adequate:

  • Object Cache Store.Object Cache Store. À l’aide de la nouvelle section de configuration des fournisseurs de cache, les développeurs peuvent incorporer de nouvelles implémentations d’un cache d’objets pour une application ASP.NET en utilisant la nouvelle interface ICacheStoreProvider.By using the new cache providers configuration section, developers can plug in new implementations of an object cache for an ASP.NET application by using the new ICacheStoreProvider interface.

  • Surveillance de la mémoire.Memory monitoring. Le moniteur de mémoire par défaut dans ASP.NET avertit les applications lorsqu’elles approchent la limite en octets privés définie pour le processus, ou lorsque la machine manque de mémoire RAM physique disponible.The default memory monitor in ASP.NET notifies applications when they are running close to the configured private bytes limit for the process, or when the machine is low on total available physical RAM. Lorsque ces limites sont proches, des notifications sont déclenchées.When these limits are near, notifications are fired. Pour certaines applications, les notifications sont déclenchées trop près des limites configurées pour permettre des réactions opportunes.For some applications, notifications are fired too close to the configured limits to allow for useful reactions. Les développeurs peuvent désormais écrire leurs propres moniteurs de mémoire pour remplacer le moniteur par défaut en utilisant la propriété ApplicationMonitors.MemoryMonitor.Developers can now write their own memory monitors to replace the default by using the ApplicationMonitors.MemoryMonitor property.

  • Memory Limit Reactions.Memory Limit Reactions. Par défaut, ASP.NET tente de tronquer le cache d’objets et appelle régulièrement GC.Collect quand la limite en octets privés du processus est proche.By default, ASP.NET attempts to trim the object cache and periodically call GC.Collect when the private byte process limit is near. Pour certaines applications, la fréquence des appels à GC.Collect ou la quantité de mémoire cache tronquée sont inefficaces.For some applications, the frequency of calls to GC.Collect or the amount of cache that is trimmed are inefficient. Les développeurs peuvent maintenant remplacer ou compléter le comportement par défaut en souscrivant des implémentations IObserver auprès du moniteur de mémoire de l’application.Developers can now replace or supplement the default behavior by subscribing IObserver implementations to the application's memory monitor.

Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)

Windows Communication Foundation (WCF) ajoute les fonctionnalités et les modifications suivantes :Windows Communication Foundation (WCF) adds the following features and changes:

Possibilité de configurer les paramètres de sécurité de message par défaut avec TLS 1.1 ou TLS 1.2Ability to configure the default message security settings to TLS 1.1 or TLS 1.2

À compter du .NET Framework 4.7, WCF vous permet de configurer TSL 1.1 ou TLS 1.2 en plus de SSL 3.0 et TSL 1.0 en tant que protocole de sécurité de message par défaut.Starting with the .NET Framework 4.7, WCF allows you to configure TSL 1.1 or TLS 1.2 in addition to SSL 3.0 and TSL 1.0 as the default message security protocol. Il s’agit d’un paramètre à activer ; pour cela, vous devez ajouter l’entrée suivante à votre fichier de configuration d’application :This is an opt-in setting; to enable it, you must add the following entry to your application configuration file:

<runtime>
   <AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols=false;Switch.System.Net.DontEnableSchUseStrongCrypto=false" />
</runtime>

Amélioration de la fiabilité des applications WCF et de la sérialisation WCFImproved reliability of WCF applications and WCF serialization

WCF inclut plusieurs modifications du code qui éliminent la concurrence critique, améliorant ainsi les performances et la fiabilité des options de sérialisation.WCF includes a number of code changes that eliminate race conditions, thereby improving performance and the reliability of serialization options. à savoir :These include:

  • Meilleure prise en charge pour le mélange de code synchrone et asynchrone dans les appels à SocketConnection.BeginRead et à SocketConnection.Read.Better support for mixing asynchronous and synchronous code in calls to SocketConnection.BeginRead and SocketConnection.Read.
  • Meilleure fiabilité lors de l’abandon d’une connexion avec SharedConnectionListener et DuplexChannelBinder.Improved reliability when aborting a connection with SharedConnectionListener and DuplexChannelBinder.
  • Meilleure fiabilité des opérations de sérialisation lors de l’appel de la méthode FormatterServices.GetSerializableMembers(Type).Improved reliability of serialization operations when calling the FormatterServices.GetSerializableMembers(Type) method.
  • Meilleure fiabilité lors de la suppression d’un objet waiter en appelant la méthode ChannelSynchronizer.RemoveWaiter.Improved reliability when removing a waiter by calling the ChannelSynchronizer.RemoveWaiter method.

Windows FormsWindows Forms

Dans le .NET Framework 4.7, Windows Forms améliore la prise en charge pour les moniteurs à haute résolution.In the .NET Framework 4.7, Windows Forms improves support for high DPI monitors.

Prise en charge de la haute résolutionHigh DPI support

À partir des applications qui ciblent le .NET Framework 4.7, le .NET Framework prend en charge la haute résolution et la haute résolution dynamique pour les applications Windows Forms.Starting with applications that target the .NET Framework 4.7, the .NET Framework features high DPI and dynamic DPI support for Windows Forms applications. La prise en charge de la haute résolution améliore la disposition et l’apparence des formulaires et des contrôles sur les moniteurs à haute résolution.High DPI support improves the layout and appearance of forms and controls on high DPI monitors. La haute résolution dynamique change la disposition et l’apparence des formulaires et contrôles lorsque l’utilisateur modifie la haute résolution ou le facteur d’échelle d’affichage d’une application en cours d’exécution.Dynamic DPI changes the layout and appearance of forms and controls when the user changes the DPI or display scale factor of a running application.

La prise en charge de la haute résolution est une fonctionnalité à activer que vous configurez en définissant une section <System.Windows.Forms.ConfigurationSection > dans votre fichier de configuration d’application.High DPI support is an opt-in feature that you configure by defining a <System.Windows.Forms.ConfigurationSection> section in your application configuration file. Pour plus d’informations sur l’ajout de la prise en charge de la haute résolution et de la haute résolution dynamique à votre application Windows Forms, consultez Prise en charge de la haute résolution dans Windows Forms.For more information on adding high DPI support and dynamic DPI support to your Windows Forms application, see High DPI Support in Windows Forms.

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)

Dans le .NET Framework 4.7, WPF propose les améliorations suivantes :In the .NET Framework 4.7, WPF includes the following enhancements:

Prise en charge d’une pile tactile/de stylet basée sur les messages Windows WM_POINTERSupport for a touch/stylus stack based on Windows WM_POINTER messages

Vous pouvez désormais utiliser une fonction tactile ou stylet basée sur les messages WM_POINTER, au lieu de la plateforme WISP (Windows Ink Services Platform).You now have the option of using a touch/stylus stack based on WM_POINTER messages instead of the Windows Ink Services Platform (WISP). Il s’agit d’une fonctionnalité à activer dans le .NET Framework.This is an opt-in feature in the .NET Framework. Pour plus d'informations, consultez Modifications de reciblage dans le .NET Framework 4.7.For more information, see Retargeting Changes in the .NET Framework 4.7.

Nouvelle implémentation pour l’impression d’API WPFNew implementation for WPF printing APIs

Les API d’impression de WPF de la classe System.Printing.PrintQueue appellent l’API Print Document Package de Windows au lieu de l’API d’impression XPS dépréciée.WPF's printing APIs in the System.Printing.PrintQueue class call the Windows Print Document Package API instead of the deprecated XPS Print API. Pour connaître l’impact de cette modification sur la compatibilité des applications, consultez Reciblage des modifications dans le .NET Framework 4.7.For the impact of this change on application compatibility, see Retargeting Changes in the .NET Framework 4.7.

Nouveautés du .NET Framework 4.6.2What's new in the .NET Framework 4.6.2

.NET Framework 4.6.2.NET Framework 4.6.2 inclut de nouvelles fonctionnalités dans les domaines suivants :The .NET Framework 4.6.2.NET Framework 4.6.2 includes new features in the following areas:

Pour obtenir la liste des nouvelles API ajoutées au .NET Framework 4.6.2, consultez l’article qui détaille les changements au niveau des API du .NET Framework 4.6.2 sur GitHub.For a list of new APIs added to the .NET Framework 4.6.2, see .NET Framework 4.6.2 API Changes on GitHub. Pour obtenir la liste des fonctionnalités améliorées et des correctifs de bogues apportés au .NET Framework 4.6.2, consultez la page Liste des changements du .NET Framework 4.6.2 sur GitHub.For a list of feature improvements and bug fixes in the .NET Framework 4.6.2, see .NET Framework 4.6.2 List of Changes on GitHub. Pour plus d’informations, consultez Announcing .NET Framework 4.6.2 sur le blog .NET.For additional information, see Announcing .NET Framework 4.6.2 in the .NET blog.

ASP.NETASP.NET

Dans le .NET Framework 4.6.2.NET Framework 4.6.2, ASP.NET propose les améliorations suivantes :In the .NET Framework 4.6.2.NET Framework 4.6.2, ASP.NET includes the following enhancements:

Prise en charge améliorée des messages d’erreur localisés dans les validateurs d’annotations de donnéesImproved support for localized error messages in data annotation validators

Les validateurs d’annotations de données vous permettent d’effectuer une validation en ajoutant un ou plusieurs attributs à une propriété de classe.Data annotation validators enable you to perform validation by adding one or more attributes to a class property. L’élément ValidationAttribute.ErrorMessage de l’attribut définit le texte du message d’erreur en cas d’échec de la validation.The attribute's ValidationAttribute.ErrorMessage element defines the text of the error message if validation fails. À compter du .NET Framework 4.6.2.NET Framework 4.6.2, ASP.NET facilite la localisation des messages d’erreur.Starting with the .NET Framework 4.6.2.NET Framework 4.6.2, ASP.NET makes it easy to localize error messages. Les messages d’erreur sont localisés si les conditions suivantes sont réunies :Error messages will be localized if:

  1. L’élément ValidationAttribute.ErrorMessage est fourni dans l’attribut de validation.The ValidationAttribute.ErrorMessage is provided in the validation attribute.

  2. Le fichier de ressources est stocké dans le dossier App_LocalResources.The resource file is stored in the App_LocalResources folder.

  3. Le nom du fichier de ressources localisées se présente sous la forme DataAnnotation.Localization.{nom}.resx, où nom est le nom de culture au format code_languepays-code_région ou code_langue.The name of the localized resources file has the form DataAnnotation.Localization.{name}.resx, where name is a culture name in the format languageCode-country/regionCode or languageCode.

  4. Le nom de clé de la ressource est la chaîne assignée à l’attribut ValidationAttribute.ErrorMessage, et sa valeur correspond au message d’erreur localisé.The key name of the resource is the string assigned to the ValidationAttribute.ErrorMessage attribute, and its value is the localized error message.

Par exemple, l’attribut d’annotation de données suivant définit le message d’erreur de la culture par défaut pour une note non valide.For example, the following data annotation attribute defines the default culture's error message for an invalid rating.

public class RatingInfo
{
   [Required(ErrorMessage = "The rating must be between 1 and 10.")]
   [Display(Name = "Your Rating")]
   public int Rating { get; set; }
}
Public Class RatingInfo
   <Required(ErrorMessage = "The rating must be between 1 and 10.")>
   <Display(Name = "Your Rating")>
   Public Property Rating As Integer = 1
End Class

Vous pouvez ensuite créer un fichier de ressources DataAnnotation.Localization.fr.resx, dont la clé est la chaîne de message d’erreur et dont la valeur est le message d’erreur localisé.You can then create a resource file, DataAnnotation.Localization.fr.resx, whose key is the error message string and whose value is the localized error message. Le fichier doit se trouver dans le dossier App.LocalResources.The file must be found in the App.LocalResources folder. Par exemple, voici la clé et sa valeur dans un message d’erreur localisé en français (fr) :For example, the following is the key and its value in a localized French (fr) language error message:

NameName ValueValue
The rating must be between 1 and 10.The rating must be between 1 and 10. La note doit être comprise entre 1 et 10.La note doit être comprise entre 1 et 10.

De plus, la localisation des annotations de données est extensible.In addition, data annotation localization is extensible. Les développeurs peuvent incorporer leur propre fournisseur de localisation de chaînes en implémentant l’interface IStringLocalizerProvider pour stocker la chaîne de localisation ailleurs que dans un fichier de ressources.Developers can plug in their own string localizer provider by implementing the IStringLocalizerProvider interface to store localization string somewhere other than in a resource file.

Prise en charge asynchrone avec les fournisseurs de magasins d’état de sessionAsync support with session-state store providers

ASP.NET autorise désormais l’utilisation de méthodes retournant des tâches avec les fournisseurs de magasins d’état de session, ce qui permet ainsi aux applications ASP.NET de profiter de la scalabilité des opérations asynchrones.ASP.NET now allows task-returning methods to be used with session-state store providers, thereby allowing ASP.NET apps to get the scalability benefits of async. Pour prendre en charge les opérations asynchrones avec les fournisseurs de magasins d’état de session, ASP.NET propose une nouvelle interface, System.Web.SessionState.ISessionStateModule, qui hérite de IHttpModule et permet aux développeurs d’implémenter leurs propres fournisseurs de modules d’état de session et de magasins de sessions asynchrones.To supports asynchronous operations with session state store providers, ASP.NET includes a new interface, System.Web.SessionState.ISessionStateModule, which inherits from IHttpModule and allows developers to implement their own session-state module and async session store providers. L’interface se définit comme suit :The interface is defined as follows:

public interface ISessionStateModule : IHttpModule {
    void ReleaseSessionState(HttpContext context);
    Task ReleaseSessionStateAsync(HttpContext context);
}

Par ailleurs, la classe SessionStateUtility comporte deux nouvelles méthodes, IsSessionStateReadOnly et IsSessionStateRequired, qui peuvent être utilisées pour prendre en charge les opérations asynchrones.In addition, the SessionStateUtility class includes two new methods, IsSessionStateReadOnly and IsSessionStateRequired, that can be used to support asynchronous operations.

Prise en charge asynchrone pour les fournisseurs de cache de sortieAsync support for output-cache providers

À compter du .NET Framework 4.6.2.NET Framework 4.6.2, il est possible d’utiliser des méthodes qui retournent des tâches avec les fournisseurs de cache de sortie de façon à profiter de la scalabilité des opérations asynchrones.Starting with the .NET Framework 4.6.2.NET Framework 4.6.2, task-returning methods can be used with output-cache providers to provide the scalability benefits of async. Les fournisseurs qui implémentent ces méthodes réduisent le blocage de threads sur un serveur web et améliorent la scalabilité d’un service ASP.NET.Providers that implement these methods reduce thread-blocking on a web server and improve the scalability of an ASP.NET service.

Les API suivantes ont été ajoutées pour assurer la prise en charge des fournisseurs de cache de sortie asynchrones :The following APIs have been added to support asynchronous output-cache providers:

Catégories de caractèresCharacter categories

Dans le .NET Framework 4.6.2.NET Framework 4.6.2, les caractères sont classés d’après la norme Unicode, version 8.0.0.Characters in the .NET Framework 4.6.2.NET Framework 4.6.2 are classified based on the Unicode Standard, Version 8.0.0. Dans le .NET Framework 4.6.NET Framework 4.6 et le .NET Framework 4.6.1.NET Framework 4.6.1, les caractères étaient classés en fonction des catégories de caractères Unicode 6.3.In .NET Framework 4.6.NET Framework 4.6 and .NET Framework 4.6.1.NET Framework 4.6.1, characters were classified based on Unicode 6.3 character categories.

La prise en charge d’Unicode 8.0 se limite à la classification des caractères de la classe CharUnicodeInfo et aux types et méthodes qui en dépendent.Support for Unicode 8.0 is limited to the classification of characters by the CharUnicodeInfo class and to types and methods that rely on it. Il s’agit notamment de la classe StringInfo, de la méthode Char.GetUnicodeCategory surchargée et des classes de caractères reconnues par le moteur d’expressions régulières du .NET Framework.These include the StringInfo class, the overloaded Char.GetUnicodeCategory method, and the character classes recognized by the .NET Framework regular expression engine. La comparaison et le tri des caractères et des chaînes ne sont pas affectés par cette évolution et continuent de s’appuyer sur le système d’exploitation sous-jacent ou bien, dans le cas des systèmes Windows 7, sur les données de caractères fournies par le .NET Framework.Character and string comparison and sorting is unaffected by this change and continues to rely on the underlying operating system or, on Windows 7 systems, on character data provided by the .NET Framework.

Pour en savoir plus sur l’évolution des catégories de caractères entre Unicode 6.0 et Unicode 7.0, consultez l’article traitant de la norme Unicode, version 7.0.0 sur le site web du consortium Unicode.For changes in character categories from Unicode 6.0 to Unicode 7.0, see The Unicode Standard, Version 7.0.0 at The Unicode Consortium website. Pour en savoir plus sur les changements intervenus entre Unicode 7.0 et Unicode 8.0, consultez l’article traitant de la norme Unicode, version 8.0.0 sur le site web du consortium Unicode.For changes from Unicode 7.0 to Unicode 8.0, see The Unicode Standard, Version 8.0.0 at The Unicode Consortium website.

ChiffrementCryptography

Prise en charge des certificats X509 contenant l’algorithme DSA FIPS 186-3Support for X509 certificates containing FIPS 186-3 DSA

Le .NET Framework 4.6.2.NET Framework 4.6.2 ajoute la prise en charge des certificats X509 DSA(Digital Signature Algorithm) dont les clés dépassent la limite de 1 024 bits de la norme FIPS 186-2.The .NET Framework 4.6.2.NET Framework 4.6.2 adds support for DSA (Digital Signature Algorithm) X509 certificates whose keys exceed the FIPS 186-2 1024-bit limit.

En plus de prendre en charge les clés plus volumineuses de FIPS 186-3, le .NET Framework 4.6.2.NET Framework 4.6.2 autorise le calcul de signatures à l’aide des algorithmes de hachage de la famille SHA-2 (SHA256, SHA384 et SHA512).In addition to supporting the larger key sizes of FIPS 186-3, the .NET Framework 4.6.2.NET Framework 4.6.2 allows computing signatures with the SHA-2 family of hash algorithms (SHA256, SHA384, and SHA512). La prise en charge de FIPS 186-3 est assurée par la nouvelle classe System.Security.Cryptography.DSACng.FIPS 186-3 support is provided by the new System.Security.Cryptography.DSACng class.

Dans la logique des récentes évolutions de la classe RSA dans le .NET Framework 4.6 et de la classe ECDsa dans le .NET Framework 4.6.1, la classe de base abstraite DSA du .NET Framework 4.6.2.NET Framework 4.6.2 propose des méthodes supplémentaires qui permettent aux appelants d’utiliser cette fonctionnalité sans opération de cast.In keeping with recent changes to the RSA class in the .NET Framework 4.6 and the ECDsa class in the .NET Framework 4.6.1, the DSA abstract base class in .NET Framework 4.6.2.NET Framework 4.6.2 has additional methods to allow callers to use this functionality without casting. Vous pouvez appeler la méthode d’extension DSACertificateExtensions.GetDSAPrivateKey pour signer des données, comme le montre l’exemple suivant.You can call the DSACertificateExtensions.GetDSAPrivateKey extension method to sign data, as the following example shows.

public static byte[] SignDataDsaSha384(byte[] data, X509Certificate2 cert)
{
    using (DSA dsa = cert.GetDSAPrivateKey())
    {
        return dsa.SignData(data, HashAlgorithmName.SHA384);
    }
}
Public Shared Function SignDataDsaSha384(data As Byte(), cert As X509Certificate2) As Byte()
    Using DSA As DSA = cert.GetDSAPrivateKey()
        Return DSA.SignData(data, HashAlgorithmName.SHA384)
    End Using
End Function

Vous pouvez également appeler la méthode d’extension DSACertificateExtensions.GetDSAPublicKey pour vérifier les données signées, comme le montre l’exemple suivant.And you can call the DSACertificateExtensions.GetDSAPublicKey extension method to verify signed data, as the following example shows.

public static bool VerifyDataDsaSha384(byte[] data, byte[] signature, X509Certificate2 cert)
{
    using (DSA dsa = cert.GetDSAPublicKey())
    {
        return dsa.VerifyData(data, signature, HashAlgorithmName.SHA384);
    }
}
 Public Shared Function VerifyDataDsaSha384(data As Byte(), signature As Byte(), cert As X509Certificate2) As Boolean
    Using dsa As DSA = cert.GetDSAPublicKey()
        Return dsa.VerifyData(data, signature, HashAlgorithmName.SHA384)
    End Using
End Function

Plus de clarté pour les entrées dans les routines de dérivation de clé ECDiffieHellmanIncreased clarity for inputs to ECDiffieHellman key derivation routines

La prise en charge de l’accord d’échange de clés Curve Diffie-Hellman basé sur les courbes elliptiques avait été ajoutée au .NET Framework 3.5 avec trois routines de fonction de dérivation de clés (KDF) différentes.The .NET Framework 3.5 added support for Ellipic Curve Diffie-Hellman Key Agreement with three different Key Derivation Function (KDF) routines. Les entrées à destination de ces routines, tout comme les routines proprement dites, étaient configurées via les propriétés de l’objet ECDiffieHellmanCng.The inputs to the routines, and the routines themselves, were configured via properties on the ECDiffieHellmanCng object. Mais comme les routines ne pouvaient pas toutes lire chaque propriété d’entrée, la confusion était de mise auprès des développeurs.But since not every routine read every input property, there was ample room for confusion on the past of the developer.

Pour résoudre ce problème dans le .NET Framework 4.6.2.NET Framework 4.6.2, les trois méthodes suivantes ont été ajoutées à la classe de base ECDiffieHellman de façon à représenter plus clairement ces routines KDF et leurs entrées :To address this in the .NET Framework 4.6.2.NET Framework 4.6.2, the following three methods have been added to the ECDiffieHellman base class to more clearly represent these KDF routines and their inputs:

Méthode ECDiffieHellmanECDiffieHellman method DescriptionDescription
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]) Dérive le matériel de clé à l’aide de la formuleDerives key material using the formula

HASH(secretPrepend || x || secretAppend)HASH(secretPrepend || x || secretAppend)

HASH(secretPrepend OrElse x OrElse secretAppend)HASH(secretPrepend OrElse x OrElse secretAppend)

x représente le résultat du calcul de l’algorithme EC Diffie-Hellman.where x is the computed result of the EC Diffie-Hellman algorithm.
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]) Dérive le matériel de clé à l’aide de la formuleDerives key material using the formula

HMAC(hmacKey, secretPrepend || x || secretAppend)HMAC(hmacKey, secretPrepend || x || secretAppend)

HMAC(hmacKey, secretPrepend OrElse x OrElse secretAppend)HMAC(hmacKey, secretPrepend OrElse x OrElse secretAppend)

x représente le résultat du calcul de l’algorithme EC Diffie-Hellman.where x is the computed result of the EC Diffie-Hellman algorithm.
DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[]) Dérive le matériel de clé à l’aide de l’algorithme de dérivation de la fonction pseudo-aléatoire (PRF) TLS.Derives key material using the TLS pseudo-random function (PRF) derivation algorithm.

Prise en charge du chiffrement symétrique des clés persistantesSupport for persisted-key symmetric encryption

La bibliothèque de chiffrement Windows (CNG) avait ajouté la prise en charge du stockage de clés symétriques persistantes et de l’utilisation des clés symétriques stockées sur du matériel, et le .NET Framework 4.6.2.NET Framework 4.6.2 avait permis aux développeurs d’utiliser cette fonctionnalité.The Windows cryptography library (CNG) added support for storing persisted symmetric keys and using hardware-stored symmetric keys, and the .NET Framework 4.6.2.NET Framework 4.6.2 mades it possible for developers to make use of this feature. Sachant que la notion de noms de clés et de fournisseurs de clés est spécifique à l’implémentation, cette fonctionnalité impose l’utilisation du constructeur des types d’implémentation concrets plutôt que l’approche par défaut privilégiée (comme l’appel de Aes.Create).Since the notion of key names and key providers is implementation-specific, using this feature requires utilizing the constructor of the concrete implementation types instead of the preferred factory approach (such as calling Aes.Create).

La prise en charge du chiffrement symétrique des clés persistantes existe pour les algorithmes AES (AesCng) et 3DES (TripleDESCng).Persisted-key symmetric encryption support exists for the AES (AesCng) and 3DES (TripleDESCng) algorithms. Exemple :For example:

public static byte[] EncryptDataWithPersistedKey(byte[] data, byte[] iv)
{
    using (Aes aes = new AesCng("AesDemoKey", CngProvider.MicrosoftSoftwareKeyStorageProvider))
    {
        aes.IV = iv;

        // Using the zero-argument overload is required to make use of the persisted key
        using (ICryptoTransform encryptor = aes.CreateEncryptor())
        {
            if (!encryptor.CanTransformMultipleBlocks)
            {
                throw new InvalidOperationException("This is a sample, this case wasn’t handled...");
            }

            return encryptor.TransformFinalBlock(data, 0, data.Length);
        }
    }
}
Public Shared Function EncryptDataWithPersistedKey(data As Byte(), iv As Byte()) As Byte()
    Using Aes As Aes = New AesCng("AesDemoKey", CngProvider.MicrosoftSoftwareKeyStorageProvider)
        Aes.IV = iv

        ' Using the zero-argument overload Is required to make use of the persisted key
        Using encryptor As ICryptoTransform = Aes.CreateEncryptor()
            If Not encryptor.CanTransformMultipleBlocks Then
                Throw New InvalidOperationException("This is a sample, this case wasn’t handled...")
            End If
            Return encryptor.TransformFinalBlock(data, 0, data.Length)
        End Using
    End Using
End Function

Prise en charge de SignedXml pour le hachage SHA-2SignedXml support for SHA-2 hashing

Le .NET Framework 4.6.2.NET Framework 4.6.2 ajoute la prise en charge à la classe SignedXml pour les méthodes de signature RSA-SHA256, RSA-SHA384 et RSA-SHA512 PKCS#1 et les algorithmes digest de référence SHA256, SHA384 et SHA512.The .NET Framework 4.6.2.NET Framework 4.6.2 adds support to the SignedXml class for RSA-SHA256, RSA-SHA384, and RSA-SHA512 PKCS#1 signature methods, and SHA256, SHA384, and SHA512 reference digest algorithms.

Les constantes d’URI sont toutes exposées dans SignedXml :The URI constants are all exposed on SignedXml:

Champ SignedXmlSignedXml field ConstanteConstant
XmlDsigSHA256Url "http://www.w3.org/2001/04/xmlenc#sha256""http://www.w3.org/2001/04/xmlenc#sha256"
XmlDsigRSASHA256Url "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256""http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
XmlDsigSHA384Url "http://www.w3.org/2001/04/xmldsig-more#sha384""http://www.w3.org/2001/04/xmldsig-more#sha384"
XmlDsigRSASHA384Url "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384""http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
XmlDsigSHA512Url "http://www.w3.org/2001/04/xmlenc#sha512""http://www.w3.org/2001/04/xmlenc#sha512"
XmlDsigRSASHA512Url "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512""http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"

Les programmes qui ont inscrit un gestionnaire SignatureDescription personnalisé dans CryptoConfig dans le but d’ajouter la prise en charge de ces algorithmes continueront de fonctionner comme par le passé. Cependant, comme il y a désormais les valeurs par défaut de la plateforme, l’inscription CryptoConfig n’est plus nécessaire.Any programs that have registered a custom SignatureDescription handler into CryptoConfig to add support for these algorithms will continue to function as they did in the past, but since there are now platform defaults, the CryptoConfig registration is no longer necessary.

SqlClientSqlClient

Le fournisseur de données .NET Framework pour SQL Server (System.Data.SqlClient) inclut les nouvelles fonctionnalités suivantes dans le .NET Framework 4.6.2.NET Framework 4.6.2 :.NET Framework Data Provider for SQL Server (System.Data.SqlClient) includes the following new features in the .NET Framework 4.6.2.NET Framework 4.6.2:

Regroupement de connexions et expirations de délai avec les bases de données Azure SQLConnection pooling and timeouts with Azure SQL databases

Quand le regroupement de connexions est activé et qu’une expiration de délai ou toute autre erreur de connexion se produit, une exception est mise en cache ; cette exception mise en cache est levée chaque fois qu’une nouvelle tentative de connexion intervient entre 5 secondes et 1 minute après.When connection pooling is enabled and a timeout or other login error occurs, an exception is cached, and the cached exception is thrown on any subsequent connection attempt for the next 5 seconds to 1 minute. Pour plus d’informations, consultez Regroupement de connexions (ADO.NET).For more details, see SQL Server Connection Pooling (ADO.NET).

Ce comportement n’est pas souhaitable quand il s’agit d’établir des connexions à des bases de données Azure SQL Database, car les tentatives de connexion peuvent échouer avec des erreurs transitoires qui sont en général récupérées rapidement.This behavior is not desirable when connecting to Azure SQL Databases, since connection attempts can fail with transient errors that are typically recovered quickly. Pour des nouvelles tentatives de connexion plus abouties, le comportement de période de blocage de pool de connexions est supprimé quand les connexions aux bases de données Azure SQL Database échouent.To better optimize the connection retry experience, the connection pool blocking period behavior is removed when connections to Azure SQL Databases fail.

L’ajout du nouveau mot clé PoolBlockingPeriod vous permet de sélectionner la période de blocage qui convient le mieux à votre application.The addition of the new PoolBlockingPeriod keyword lets you to select the blocking period best suited for your app. Les valeurs incluent :Values include:

Auto

La période de blocage de pool de connexions d’une application qui se connecte à une base de données Azure SQL Database est désactivée, pendant que celle d’une application qui se connecte à une autre instance SQL Server est activée.The connection pool blocking period for an application that connects to an Azure SQL Database is disabled, and the connection pool blocking period for an application that connects to any other SQL Server instance is enabled. Valeur par défaut.This is the default value. Si le nom de point de terminaison d’un serveur se termine par l’un des éléments suivants, il est considéré comme une base de données Azure SQL Database :If the Server endpoint name ends with any of the following, they are considered Azure SQL Databases:

  • .database.windows.net.database.windows.net

  • .database.chinacloudapi.cn.database.chinacloudapi.cn

  • .database.usgovcloudapi.net.database.usgovcloudapi.net

  • .database.cloudapi.de.database.cloudapi.de

AlwaysBlock

La période de blocage de pool de connexion est toujours activée.The connection pool blocking period is always enabled.

NeverBlock

La période de blocage de pool de connexion est toujours désactivée.The connection pool blocking period is always disabled.

Améliorations pour Always EncryptedEnhancements for Always Encrypted

SQLClient inaugure deux améliorations pour Always Encrypted :SQLClient introduces two enhancements for Always Encrypted:

  • Pour améliorer les performances des requêtes paramétrables sur des colonnes de base de données chiffrées, les métadonnées de chiffrement sont désormais mises en cache pour les paramètres des requêtes.To improve performance of parameterized queries against encrypted database columns, encryption metadata for query parameters is now cached. Dans la mesure où la propriété SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled est définie sur true (valeur par défaut), si une même requête est appelée plusieurs fois, le client ne récupère les métadonnées des paramètres qu’une seule fois sur le serveur.With the SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled property set to true (which is the default value), if the same query is called multiple times, the client retrieves parameter metadata from the server only once.

  • Les entrées de clés de chiffrement de colonnes présentes dans le cache de clés sont désormais supprimées au bout d’un délai configurable, qui est défini à l’aide de la propriété SqlConnection.ColumnEncryptionKeyCacheTtl.Column encryption key entries in the key cache are now evicted after a configurable time interval, set using the SqlConnection.ColumnEncryptionKeyCacheTtl property.

Windows Communication FoundationWindows Communication Foundation

Dans le .NET Framework 4.6.2.NET Framework 4.6.2, Windows Communication Foundation a été amélioré dans les domaines suivants :In the .NET Framework 4.6.2.NET Framework 4.6.2, Windows Communication Foundation has been enhanced in the following areas:

Prise en charge des certificats stockés à l’aide de CNG par la sécurité du transport WCFWCF transport security support for certificates stored using CNG

La sécurité du transport WCF prend en charge les certificats stockés à l’aide de la bibliothèque de chiffrement Windows (CNG).WCF transport security supports certificates stored using the Windows cryptography library (CNG). Dans le .NET Framework 4.6.2.NET Framework 4.6.2, cette prise en charge se limite à l’utilisation de certificats avec une clé publique dont l’exposant ne dépasse pas 32 bits de longueur.In the .NET Framework 4.6.2.NET Framework 4.6.2, this support is limited to using certificates with a public key that has an exponent no more than 32 bits in length. Quand une application cible le .NET Framework 4.6.2.NET Framework 4.6.2, cette fonctionnalité est activée par défaut.When an application targets the .NET Framework 4.6.2.NET Framework 4.6.2, this feature is on by default.

Pour les applications qui ciblent le .NET Framework 4.6.1.NET Framework 4.6.1 ou des versions antérieures, mais qui s’exécutent sur le .NET Framework 4.6.2.NET Framework 4.6.2, cette fonctionnalité peut être activée en ajoutant la ligne suivante à la section <runtime> du fichier app.config ou web.config.For applications that target the .NET Framework 4.6.1.NET Framework 4.6.1 and earlier but are running on the .NET Framework 4.6.2.NET Framework 4.6.2, this feature can be enabled by adding the following line to the <runtime> section of the app.config or web.config file.

<AppContextSwitchOverrides
    value="Switch.System.ServiceModel.DisableCngCertificates=false"
/>

Vous pouvez en faire autant par programmation avec un code de ce type :This can also be done programmatically with code like the following:

private const string DisableCngCertificates = @"Switch.System.ServiceModel.DisableCngCertificates";
AppContext.SetSwitch(disableCngCertificates, false);
Const DisableCngCertificates As String = "Switch.System.ServiceModel.DisableCngCertificates"
AppContext.SetSwitch(disableCngCertificates, False)

Meilleure prise en charge de plusieurs règles d’ajustement à l’heure d’été par la classe DataContractJsonSerializerBetter support for multiple daylight saving time adjustment rules by the DataContractJsonSerializer class

Les clients peuvent utiliser un paramètre de configuration d’application pour déterminer si la classe DataContractJsonSerializer prend en charge plusieurs règles d’ajustement pour un même un fuseau horaire.Customers can use an application configuration setting to determine whether the DataContractJsonSerializer class supports multiple adjustment rules for a single time zone. Il est nécessaire d'accepter cette fonctionnalité.This is an opt-in feature. Pour l’activer, ajoutez le paramètre suivant à votre fichier app.config :To enable it, add the following setting to your app.config file:

<runtime>
     <AppContextSwitchOverrides value="Switch.System.Runtime.Serialization.DoNotUseTimeZoneInfo=false" />
</runtime>

Quand cette fonctionnalité est activée, un objet DataContractJsonSerializer utilise le type TimeZoneInfo à la place du type TimeZone pour désérialiser les données de date et d’heure.When this feature is enabled, a DataContractJsonSerializer object uses the TimeZoneInfo type instead of the TimeZone type to deserialize date and time data. TimeZoneInfo prend en charge plusieurs règles d’ajustement, ce qui permet d’utiliser des données de fuseau horaire historiques ; ce n’est pas le cas de TimeZone.TimeZoneInfo supports multiple adjustment rules, which makes it possible to work with historic time zone data; TimeZone does not.

Pour plus d’informations sur la structure TimeZoneInfo et les ajustements de fuseau horaire, consultez Vue d’ensemble des fuseaux horaires.For more information on the TimeZoneInfo structure and time zone adjustments, see Time Zone Overview.

Meilleure correspondance NetNamedPipeBindingNetNamedPipeBinding best match

WCF propose un nouveau paramètre d’application qui peut être défini sur les applications clientes de telle sorte qu’elles se connectent systématiquement au service écoutant l’URI qui correspond le mieux à celui qu’elles demandent.WCF has a new app setting that can be set on client applications to ensure they always connect to the service listening on the URI that best matches the one that they request. Dans la mesure où ce paramètre d’application est défini sur false (valeur par défaut), les clients utilisant NetNamedPipeBinding peuvent tenter de se connecter à un service écoutant un URI qui est une sous-chaîne de l’URI demandé.With this app setting set to false (the default), it is possible for clients using NetNamedPipeBinding to attempt to connect to a service listening on a URI that is a substring of the requested URI.

Par exemple, un client tente de se connecter à un service à l’écoute de net.pipe://localhost/Service1, mais un autre service de cet ordinateur s’exécutant avec des privilèges d’administrateur écoute net.pipe://localhost.For example, a client tries to connect to a service listening at net.pipe://localhost/Service1, but a different service on that machine running with administrator privilege is listening at net.pipe://localhost. Si ce paramètre d’application est défini sur false, le client tente de se connecter au mauvais service.With this app setting set to false, the client would attempt to connect to the wrong service. Une fois le paramètre d’application défini sur true, le client se connecte systématiquement au service le plus approprié.After setting the app setting to true, the client will always connect to the best matching service.

Note

Les clients qui utilisent NetNamedPipeBinding recherchent les services à partir de leur adresse de base (s’ils en ont une) et non de l’adresse complète du point de terminaison.Clients using NetNamedPipeBinding find services based on the service's base address (if it exists) rather than the full endpoint address. Pour faire en sorte que ce paramètre fonctionne toujours, le service doit utiliser une adresse de base unique.To ensure this setting always works the service should use a unique base address.

Pour permettre cette modification, ajoutez le paramètre d’application suivant au fichier App.config ou Web.config de votre application cliente :To enable this change, add the following app setting to your client application's App.config or Web.config file:

<configuration>
    <appSettings>
        <add key="wcf:useBestMatchNamedPipeUri" value="true" />
    </appSettings>
</configuration>

SSL 3.0 n’est pas un protocole par défautSSL 3.0 is not a default protocol

Quand vous utilisez NetTcp avec la sécurité du transport et un type d’informations d’identification de certificat, SSL 3.0 n’est plus le protocole utilisé par défaut quand il s’agit de négocier une connexion sécurisée.When using NetTcp with transport security and a credential type of certificate, SSL 3.0 is no longer a default protocol used for negotiating a secure connection. Dans la majorité des cas, cela ne devrait pas avoir de conséquences sur les applications existantes, car TLS 1.0 est inclus dans la liste de protocoles pour NetTcp.In most cases, there should be no impact to existing apps, because TLS 1.0 is included in the protocol list for NetTcp. Tous les clients existants doivent pouvoir négocier une connexion en utilisant au moins TLS 1.0.All existing clients should be able to negotiate a connection using at least TLS 1.0. Si Ssl3 est exigé, utilisez l’un des mécanismes de configuration suivants pour l’ajouter à la liste des protocoles négociés.If Ssl3 is required, use one of the following configuration mechanisms to add it to the list of negotiated protocols.

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)

Dans le .NET Framework 4.6.2.NET Framework 4.6.2, Windows Presentation Foundation a été amélioré dans les domaines suivants :In the .NET Framework 4.6.2.NET Framework 4.6.2, Windows Presentation Foundation has been enhanced in the following areas:

Tri des groupesGroup sorting

Une application qui utilise un objet CollectionView pour regrouper les données peut désormais déclarer explicitement le mode de tri des groupes.An application that uses a CollectionView object to group data can now explicitly declare how to sort the groups. Le tri explicite résout le problème du classement non intuitif qui se produit quand une application ajoute ou supprime dynamiquement des groupes ou quand elle modifie la valeur de propriétés d’élément impliquées dans le regroupement.Explicit sorting addresses the problem of non-intuitive ordering that occurs when an app dynamically adds or removes groups, or when it changes the value of item properties involved in grouping. Il peut aussi améliorer l’efficacité de la création de groupes en comparant les propriétés de regroupement non pas au niveau du tri de la collection complète mais du tri des groupes.It can also improve the performance of the group creation process by moving comparisons of the grouping properties from the sort of the full collection to the sort of the groups.

Pour prendre en charge le tri des groupes, les nouvelles propriétés GroupDescription.SortDescriptions et GroupDescription.CustomSort décrivent le mode de tri de la collection de groupes produite par l’objet GroupDescription.To support group sorting, the new GroupDescription.SortDescriptions and GroupDescription.CustomSort properties describe how to sort the collection of groups produced by the GroupDescription object. Ce comportement est analogue à la façon dont les propriétés ListCollectionView de même nom décrivent le mode de tri des éléments de données.This is analogous to the way the identically named ListCollectionView properties describe how to sort the data items.

Il est possible d’utiliser les deux nouvelles propriétés statiques de la classe PropertyGroupDescription, CompareNameAscending et CompareNameDescending, pour les cas les plus courants.Two new static properties of the PropertyGroupDescription class, CompareNameAscending and CompareNameDescending, can be used for the most common cases.

Par exemple, le code XAML suivant regroupe les données par âge, trie les groupes d’âge par ordre croissant, puis regroupe les éléments de chaque groupe d’âge par nom de famille.For example, the following XAML groups data by age, sort the age groups in ascending order, and group the items within each age group by last name.

<GroupDescriptions>
     <PropertyGroupDescription
         PropertyName="Age"
         CustomSort=
              "{x:Static PropertyGroupDescription.CompareNamesAscending}"/>
     </PropertyGroupDescription>
</GroupDescriptions>

<SortDescriptions>
     <SortDescription PropertyName="LastName"/>
</SortDescriptions>

Prise en charge des claviers logicielsSoft keyboard support

La prise en charge des claviers logiciels permet d’assurer le suivi du focus dans les applications WPF en appelant et en masquant automatiquement le nouveau clavier logiciel dans Windows 10 dès lors que l’entrée tactile est reçue par un contrôle qui peut prendre l’entrée textuelle.Soft Keyboard support enables focus tracking in a WPF applications by automatically invoking and dismissing the new Soft Keyboard in Windows 10 when the touch input is received by a control that can take textual input.

Dans les versions précédentes du .NET Framework, les applications WPF ne peuvent pas opter pour le suivi du focus sans désactiver la prise en charge du stylo et des entrées tactiles WPF.In previous versions of the .NET Framework, WPF applications cannot opt into the focus tracking without disabling WPF pen/touch gesture support. Par conséquent, les applications WPF doivent soit choisir la prise en charge complète des entrées tactiles WPF, soit privilégier la souris Windows.As a result, WPF applications must choose between full WPF touch support or rely on Windows mouse promotion.

Résolution par moniteurPer-monitor DPI

Pour faire face à la prolifération récente des environnements à haute résolution et à résolution hybride pour les applications WPF, WPF dans le .NET Framework 4.6.2.NET Framework 4.6.2 autorise une prise en charge par moniteur.To support the recent proliferation of high-DPI and hybrid-DPI environments for WPF apps, WPF in the .NET Framework 4.6.2.NET Framework 4.6.2 enables per-monitor awareness. Pour savoir comment permettre à votre application WPF de prendre en charge la résolution par moniteur, consultez les exemples et le guide du développeur sur GitHub.See the samples and developer guide on GitHub for more information about how to enable your WPF app to become per-monitor DPI aware.

Dans les versions précédentes du .NET Framework, les applications WPF prennent en charge la résolution au niveau du système.In previous versions of the .NET Framework, WPF apps are system-DPI aware. En d’autres termes, l’interface utilisateur de l’application est éventuellement mise à l’échelle par le système d’exploitation, en fonction de la résolution du moniteur sur lequel l’application est affichée.In other words, the application's UI is scaled by the OS as appropriate, depending on the DPI of the monitor on which the app is rendered. ,,

Pour les applications s’exécutant sous le .NET Framework 4.6.2.NET Framework 4.6.2, vous pouvez désactiver les changements de résolution par moniteur dans les applications WPF en ajoutant une instruction de configuration à la section <runtime> du fichier de configuration de votre application, comme suit :For apps running under the .NET Framework 4.6.2.NET Framework 4.6.2, you can disable per-monitor DPI changes in WPF apps by adding a configuration statement to the <runtime> section of your application configuration file, as follows:

<runtime>
   <AppContextSwitchOverrides value="Switch.System.Windows.DoNotScaleForDpiChanges=false"/>
</runtime>

Windows Workflow Foundation (WF)Windows Workflow Foundation (WF)

Dans le .NET Framework 4.6.2.NET Framework 4.6.2, Windows Workflow Foundation a été amélioré dans les domaines suivants :In the .NET Framework 4.6.2.NET Framework 4.6.2, Windows Workflow Foundation has been enhanced in the following area:

Prise en charge des expressions C# et d’IntelliSense dans le Concepteur de flux de travail réhébergéSupport for C# expressions and IntelliSense in the Re-hosted WF Designer

À compter du .NET Framework 4.5.NET Framework 4.5, WF prend en charge les expressions C# dans le concepteur de Visual Studio et dans les flux de travail de code.Starting with the .NET Framework 4.5.NET Framework 4.5, WF supports C# expressions in both the Visual Studio Designer and in code workflows. Le Concepteur de flux de travail réhébergé est une fonctionnalité clé de WF qui autorise la présence du Concepteur de flux de travail dans une application extérieure à Visual Studio (par exemple, dans WPF).The Re-hosted Workflow Designer is a key feature of WF that allows for the Workflow Designer to be in an application outside Visual Studio (for example, in WPF). Windows Workflow Foundation permet de prendre en charge les expressions C# et IntelliSense dans le Concepteur de flux de travail réhébergé.Windows Workflow Foundation provides the ability to support C# expressions and IntelliSense in the Re-hosted Workflow Designer. Pour plus d’informations, consultez le blog Windows Workflow Foundation.For more information, see the Windows Workflow Foundation blog.

Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio : dans les versions du .NET Framework antérieures au .NET Framework 4.6.2.NET Framework 4.6.2, la fonctionnalité IntelliSense du concepteur WFest inopérante quand un client recrée un projet de flux de travail à partir de Visual Studio.Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio In versions of the .NET Framework prior to the .NET Framework 4.6.2.NET Framework 4.6.2, WF Designer IntelliSense is broken when a customer rebuilds a workflow project from Visual Studio. Quand la génération du projet aboutit, les types de flux de travail ne se trouvent pas dans le concepteur, et IntelliSense affiche des avertissements dans la fenêtre Liste d’erreurs par rapport aux types de flux de travail manquants.While the project build is successful, the workflow types are not found on the designer, and warnings from IntelliSense for the missing workflow types appear in the Error List window. Le .NET Framework 4.6.2.NET Framework 4.6.2 résout ce problème et donne accès à IntelliSense.The .NET Framework 4.6.2.NET Framework 4.6.2 addresses this issue and makes IntelliSense available.

Les applications Workflow V1 pour lesquelles le suivi de flux de travail est activé s’exécutent désormais en mode FIPSWorkflow V1 applications with Workflow Tracking on now run under FIPS-mode

Les ordinateurs pour lesquels le mode de conformité FIPS est activé peuvent désormais exécuter correctement une application de type Workflow version 1 en ayant le suivi de flux de travail activé.Machines with FIPS Compliance Mode enabled can now successfully run a workflow Version 1-style application with Workflow tracking on. Pour permettre ce cas de figure, vous devez apporter la modification suivante à votre fichier app.config :To enable this scenario, you must make the following change to your app.config file:

<add key="microsoft:WorkflowRuntime:FIPSRequired" value="true" />

Si ce scénario n’est pas autorisé, l’exécution de l’application continue de générer une exception avec le message « Cette implémentation ne fait pas partie des algorithmes de chiffrement validés FIPS pour les plateformes Windows ».If this scenario is not enabled, running the application continues to generate an exception with the message, "This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms."

Amélioration des flux de travail quand la mise à jour dynamique est utilisée avec le Concepteur de flux de travail Visual StudioWorkflow Improvements when using Dynamic Update with Visual Studio Workflow Designer

Le Concepteur de flux de travail, le Concepteur d’activités d’organigramme et les autres Concepteurs d’activité de flux de travail peuvent désormais charger et afficher les flux de travail qui ont été enregistrés consécutivement à l’appel de la méthode DynamicUpdateServices.PrepareForUpdate.The Workflow Designer, FlowChart Activity Designer, and other Workflow Activity Designers now successfully load and display workflows that have been saved after calling the DynamicUpdateServices.PrepareForUpdate method. Dans les versions du .NET Framework antérieures au .NET Framework 4.6.2.NET Framework 4.6.2, le fait de charger un fichier XAML dans Visual Studio pour un flux de travail enregistré après un appel de DynamicUpdateServices.PrepareForUpdate peut occasionner les problèmes suivants :In versions of the .NET Framework before the .NET Framework 4.6.2.NET Framework 4.6.2, loading a XAML file in Visual Studio for a workflow that has been saved after calling DynamicUpdateServices.PrepareForUpdate can result in the following issues:

  • Le Concepteur de flux de travail ne peut pas charger le fichier XAML correctement (quand ViewStateData.Id est en fin de ligne).The Workflow Designer can't load the XAML file correctly (when the ViewStateData.Id is at the end of the line).

  • Le Concepteur d’activités d’organigramme ou les autres Concepteurs d’activités de flux de travail peuvent afficher tous les objets à leurs emplacements par défaut plutôt que les valeurs de propriétés jointes.Flowchart Activity Designer or other Workflow Activity Designers may display all objects in their default locations as opposed to attached property values.

ClickOnceClickOnce

ClickOnce a été mis à jour pour prendre en charge TLS 1.1 et TLS 1.2 en plus du protocole 1.0, qu’il prend déjà en charge.ClickOnce has been updated to support TLS 1.1 and TLS 1.2 in addition to the 1.0 protocol, which it already supports. ClickOnce détecte automatiquement le protocole exigé ; aucune mesure supplémentaire n’est à prendre dans l’application ClickOnce pour activer la prise en charge de TLS 1.1 et 1.2.ClickOnce automatically detects which protocol is required; no extra steps within the ClickOnce application are required to enable TLS 1.1 and 1.2 support.

Conversion des Windows Forms et des applications WPF en applications UWPConverting Windows Forms and WPF apps to UWP apps

Windows permet désormais de porter les applications de bureau Windows, dont les applications WPF et Windows Forms, sur la plateforme Windows universelle (UWP).Windows now offers capabilities to bring existing Windows desktop apps, including WPF and Windows Forms apps, to the Universal Windows Platform (UWP). Cette technologie fait office de pont en vous permettant de migrer progressivement votre base de code existante vers UWP, et ainsi de porter votre application sur tous les appareils Windows 10.This technology acts as a bridge by enabling you to gradually migrate your existing code base to UWP, thereby bringing your app to all Windows 10 devices.

Les applications de bureau converties obtiennent une identité d’application comparable à celle des applications UWP, ce qui rend les API UWP accessibles pour activer certaines fonctionnalités, telles que les vignettes dynamiques et les notifications.Converted desktop apps gain an app identity similar to the app identity of UWP apps, which makes UWP APIs accessible to enable features such as Live Tiles and notifications. L’application continue de se comporter comme auparavant et s’exécute comme une application entièrement approuvée.The app continues to behave as before and runs as a full trust app. Une fois l’application convertie, un processus de conteneur d’application peut être ajouté au processus d’approbation complète existant pour ajouter une interface utilisateur adaptative.Once the app is converted, an app container process can be added to the existing full trust process to add an adaptive user interface. Quand toutes les fonctionnalités sont déplacées vers le processus de conteneur d’application, le processus d’approbation complète peut être supprimé et la nouvelle application UWP peut être mise à la disposition de tous les appareils Windows 10.When all functionality is moved to the app container process, the full trust process can be removed and the new UWP app can be made available to all Windows 10 devices.

Améliorations du débogageDebugging improvements

L’API de débogage non managé a été améliorée dans le .NET Framework 4.6.2.NET Framework 4.6.2 de façon à effectuer des analyses supplémentaires quand une NullReferenceException est levée, dans le but de permettre l’identification de la variable qui a la valeur null dans une même ligne de code source.The unmanaged debugging API has been enhanced in the .NET Framework 4.6.2.NET Framework 4.6.2 to perform additional analysis when a NullReferenceException is thrown so that it is possible to determine which variable in a single line of source code is null. Pour favoriser ce scénario, les API ci-dessous ont été ajoutées à l’API de débogage non managé.To support this scenario, the following APIs have been added to the unmanaged debugging API.

Nouveautés dans le .NET Framework 4.6.1What's new in the .NET Framework 4.6.1

.NET Framework 4.6.1.NET Framework 4.6.1 inclut de nouvelles fonctionnalités dans les domaines suivants :The .NET Framework 4.6.1.NET Framework 4.6.1 includes new features in the following areas:

Pour plus d’informations sur .NET Framework 4.6.1.NET Framework 4.6.1, consultez les rubriques suivantes :For more information on the .NET Framework 4.6.1.NET Framework 4.6.1, see the following topics:

Chiffrement : prise en charge des certificats X509 contenant l’algorithme ECDSACryptography: Support for X509 certificates containing ECDSA

.NET Framework 4.6 a ajouté la prise en charge de l’algorithme RSACng pour les certificats X509.The .NET Framework 4.6 added RSACng support for X509 certificates. .NET Framework 4.6.1.NET Framework 4.6.1 ajoute la prise en charge des certificats X509 ECDSA (Elliptic Curve Digital Signature Algorithm).The .NET Framework 4.6.1.NET Framework 4.6.1 adds support for ECDSA (Elliptic Curve Digital Signature Algorithm) X509 certificates.

ECDSA offre de meilleures performances et constitue un algorithme de chiffrement plus sécurisé que RSA. Il constitue un excellent choix quand les performances et la scalabilité de la sécurité de la couche de transport (TLS) constituent une préoccupation.ECDSA offers better performance and is a more secure cryptography algorithm than RSA, providing an excellent choice where Transport Layer Security (TLS) performance and scalability is a concern. L’implémentation du .NET Framework encapsule les appels dans les fonctionnalités Windows existantes.The .NET Framework implementation wraps calls into existing Windows functionality.

L’exemple de code suivant montre combien il est facile de générer une signature pour un flux d’octets à l’aide de la nouvelle prise en charge des certificats X509 ECDSA inclus dans .NET Framework 4.6.1.NET Framework 4.6.1.The following example code shows how easy it is to generate a signature for a byte stream by using the new support for ECDSA X509 certificates included in the .NET Framework 4.6.1.NET Framework 4.6.1.

using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

public class Net461Code
{
    public static byte[] SignECDsaSha512(byte[] data, X509Certificate2 cert)
    {
        using (ECDsa privateKey = cert.GetECDsaPrivateKey())
        {
            return privateKey.SignData(data, HashAlgorithmName.SHA512);
        }
    }

    public static byte[] SignECDsaSha512(byte[] data, ECDsa privateKey)
    {
        return privateKey.SignData(data, HashAlgorithmName.SHA512);
    }
}
Imports System
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates

Public Class Net461Code
    Public Shared Function SignECDsaSha512(data As Byte(), cert As X509Certificate2) As Byte()
        Using privateKey As ECDsa = cert.GetECDsaPrivateKey()
            Return privateKey.SignData(data, HashAlgorithmName.SHA512)
        End Using
    End Function

    Public Shared Function SignECDsaSha512(data As Byte, privateKey As ECDsa) As Byte()
        Return privateKey.SignData(data, HashAlgorithmName.SHA512)
    End Function
End Class

Cela contraste fortement avec le code nécessaire pour générer une signature dans .NET Framework 4.6.This offers a marked contrast to the code needed to generate a signature in the .NET Framework 4.6.

using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

public class Net46Code
{
    public static byte[] SignECDsaSha512(byte[] data, X509Certificate2 cert)
    {
        // This would require using cert.Handle and a series of p/invokes to get at the
        // underlying key, then passing that to a CngKey object, and passing that to
        // new ECDsa(CngKey).  It's a lot of work.
        throw new Exception("That's a lot of work...");
    }

    public static byte[] SignECDsaSha512(byte[] data, ECDsa privateKey)
    {
        // This way works, but SignData probably better matches what you want.
        using (SHA512 hasher = SHA512.Create())
        {
            byte[] signature1 = privateKey.SignHash(hasher.ComputeHash(data));
        }

        // This might not be the ECDsa you got!
        ECDsaCng ecDsaCng = (ECDsaCng)privateKey;
        ecDsaCng.HashAlgorithm = CngAlgorithm.Sha512;
        return ecDsaCng.SignData(data);
    }
}   
Imports System
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates

Public Class Net46Code
    Public Shared Function SignECDsaSha512(data As Byte(), cert As X509Certificate2) As Byte()
        ' This would require using cert.Handle and a series of p/invokes to get at the
        ' underlying key, then passing that to a CngKey object, and passing that to
        ' new ECDsa(CngKey).  It's a lot of work.
        Throw New Exception("That's a lot of work...")
    End Function

    Public Shared Function SignECDsaSha512(data As Byte(), privateKey As ECDsa) As Byte()
        ' This way works, but SignData probably better matches what you want.
        Using hasher As SHA512 = SHA512.Create()
            Dim signature1 As Byte() = privateKey.SignHash(hasher.ComputeHash(data))
        End Using

        ' This might not be the ECDsa you got!
        Dim ecDsaCng As ECDsaCng = CType(privateKey, ECDsaCng)
        ecDsaCng.HashAlgorithm = CngAlgorithm.Sha512
        Return ecDsaCng.SignData(data)
    End Function
End Class   

ADO.NETADO.NET

Les éléments suivants ont été ajoutés à ADO.NET :The following have been added to ADO.NET:

Prise en charge de la fonctionnalité Always Encrypted pour les clés matérielles protégéesAlways Encrypted support for hardware protected keys

ADO.NET prend désormais en charge le stockage des clés principales de colonnes Toujours chiffré en mode natif dans les modules de sécurité matériels (HSM, Hardware Security Modules).ADO.NET now supports storing Always Encrypted column master keys natively in Hardware Security Modules (HSMs). Cette prise en charge permet aux clients de tirer profit des clés asymétriques stockées dans les modules HSM sans avoir à écrire des fournisseurs de magasins de clés principales de colonnes personnalisés et sans les inscrire dans les applications.With this support, customers can leverage asymmetric keys stored in HSMs without having to write custom column master key store providers and registering them in applications.

Les clients doivent installer le fournisseur CSP fourni par le fabricant des modules HSM ou les fournisseurs de magasin de clés CNG sur les serveurs d’applications ou les ordinateurs clients pour accéder aux données Toujours chiffré protégées par des clés principales de colonnes stockées dans un module HSM.Customers need to install the HSM vendor-provided CSP provider or CNG key store providers on the app servers or client computers in order to access Always Encrypted data protected with column master keys stored in a HSM.

Amélioration du comportement de connexion de MultiSubnetFailover pour AlwaysOnImproved MultiSubnetFailover connection behavior for AlwaysOn

Désormais, SqlClient fournit automatiquement une connexion plus rapide à un groupe de disponibilité AlwaysOn.SqlClient now automatically provides faster connections to an AlwaysOn Availability Group (AG). Il détecte de façon transparente si votre application se connecte à un groupe de disponibilité AlwaysOn sur un autre sous-réseau, détecte rapidement le serveur actif actuel et fournit une connexion au serveur.It transparently detects whether your application is connecting to an AlwaysOn availability group (AG) on a different subnet and quickly discovers the current active server and provides a connection to the server. Avant cette mise en production, une application devait définir la chaîne de connexion à inclure "MultisubnetFailover=true" pour indiquer qu’elle était connectée à un groupe de disponibilité AlwaysOn.Prior to this release, an application had to set the connection string to include "MultisubnetFailover=true" to indicate that it was connecting to an AlwaysOn Availability Group. Si le mot clé de connexion n’était pas défini sur true, une application pouvait rencontrer un dépassement du délai lors de la connexion à un groupe de disponibilité AlwaysOn.Without setting the connection keyword to true, an application might experience a timeout while connecting to an AlwaysOn Availability Group. Avec cette version, une application n’a plus besoin de définir MultiSubnetFailover sur true.With this release, an application does not need to set MultiSubnetFailover to true anymore. Pour plus d’informations sur la prise en charge de SqlClient pour les groupes de disponibilité AlwaysOn, consultez Prise en charge de SqlClient pour la haute disponibilité et la récupération d’urgence.For more information about SqlClient support for Always On Availability Groups, see SqlClient Support for High Availability, Disaster Recovery.

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)

Windows Presentation Foundation inclut un certain nombre d’améliorations et de modifications.Windows Presentation Foundation includes a number of improvements and changes.

Amélioration des performancesImproved performance

Le retard de déclenchement d’événements tactiles a été résolu dans .NET Framework 4.6.1.NET Framework 4.6.1.The delay in firing touch events has been fixed in the .NET Framework 4.6.1.NET Framework 4.6.1. En outre, la saisie dans un contrôle RichTextBox ne mobilise plus le thread de rendu pendant la saisie rapide.In addition, typing in a RichTextBox control no longer ties up the render thread during fast input.

Améliorations de la vérification orthographiqueSpell checking improvements

Le vérificateur orthographique de WPF a été mis à jour sur Windows 8.1 et les versions ultérieures pour tirer parti de la prise en charge, par le système d’exploitation, de la vérification orthographique de langues supplémentaires.The spell checker in WPF has been updated on Windows 8.1 and later versions to leverage operating system support for spell-checking additional languages. Aucune fonctionnalité n’a été modifiée sur les versions de Windows antérieures à Windows 8.1.There is no change in functionality on Windows versions prior to Windows 8.1.

Comme dans les versions précédentes du .NET Framework, la langue d’un contrôle TextBox ou d’un bloc RichTextBox est détectée en recherchant des informations dans l’ordre suivant :As in previous versions of the .NET Framework, the language for a TextBox control ora RichTextBox block is detected by looking for information in the following order:

  • xml:lang, le cas échéant.xml:lang, if it is present.

  • Langue d’entrée actuelle.Current input language.

  • Culture de thread actuelle.Current thread culture.

Pour plus d’informations sur la prise en charge linguistique dans WPF, consultez le billet de blog WPF sur les fonctionnalités de .NET Framework 4.6.1.For additional information on language support in WPF, see the WPF blog post on .NET Framework 4.6.1 features.

Prise en charge supplémentaire des dictionnaires personnalisés par utilisateurAdditional support for per-user custom dictionaries

Dans .NET Framework 4.6.1.NET Framework 4.6.1, WPF reconnaît les dictionnaires personnalisés qui sont inscrits de manière globale.In .NET Framework 4.6.1.NET Framework 4.6.1, WPF recognizes custom dictionaries that are registered globally. Cette fonctionnalité est disponible en plus de la possibilité de les inscrire par contrôle.This capability is available in addition to the ability to register them per-control.

Dans les versions précédentes de WPF, les dictionnaires personnalisés ne reconnaissaient pas les listes Mots exclus et Correction automatique.In previous versions of WPF, custom dictionaries did not recognize Excluded Words and AutoCorrect lists. Ils sont pris en charge sur Windows 8.1 et Windows 10 via l’utilisation de fichiers qui peuvent être placés sous le répertoire %AppData%\Microsoft\Spelling\<language tag>.They are supported on Windows 8.1 and Windows 10 through the use of files that can be placed under the %AppData%\Microsoft\Spelling\<language tag> directory. Les règles suivantes s’appliquent à ces fichiers :The following rules apply to these files:

  • Les fichiers doivent avoir l’extension .dic (pour les mots ajoutés), .exc (pour les mots exclus) ou .acl (pour la correction automatique).The files should have extensions of .dic (for added words), .exc (for excluded words), or .acl (for AutoCorrect).

  • Les fichiers doivent être en texte brut UTF-16 LE qui commence par la marque d’ordre d’octet.The files should be UTF-16 LE plaintext that starts with the Byte Order Mark (BOM).

  • Chaque ligne doit comporter un mot (dans les listes de mots ajoutés et exclus) ou une paire de corrections automatiques avec les mots séparés par une barre verticale (« | ») (dans la liste de mots Correction automatique).Each line should consist of a word (in the added and excluded word lists), or an autocorrect pair with the words separated by a vertical bar ("|") (in the AutoCorrect word list).

  • Ces fichiers sont considérés en lecture seule et ne sont pas modifiés par le système.These files are considered read-only and are not modified by the system.

Note

Ces nouveaux formats de fichier ne sont pas directement pris en charge par les API de correction orthographique WPF, et les dictionnaires personnalisés fournis à WPF dans les applications doivent continuer à utiliser les fichiers .lex.These new file-formats are not directly supported by the WPF spell checking API’s, and the custom dictionaries supplied to WPF in applications should continue to use .lex files.

ExemplesSamples

Plusieurs exemples WPF sont disponibles sur MSDN.There are a number of WPF Samples on MSDN. Plus de 200 des exemples les plus populaires (en fonction de leur utilisation) seront déplacés vers un référentiel Open Source GitHub.More than 200 of the most popular samples (based on their usage) will be moved into an Open Source GitHub repository. Aidez-nous à améliorer nos exemples en nous envoyant une requête d’extraction ou en ouvrant un problème GitHub.Help us improve our samples by sending us a pull-request or opening a GitHub issue.

Extensions DirectXDirectX extensions

WPF inclut un package NuGet qui fournit de nouvelles implémentations de D3DImage facilitant l’interaction avec du contenu DX10 et Dx11.WPF includes a NuGet package that provides new implementations of D3DImage that make it easy for you to interoperate with DX10 and Dx11 content. Le code de ce package a été mis en open source et est disponible sur GitHub.The code for this package has been open sourced and is available on GitHub.

Windows Workflow Foundation : TransactionsWindows Workflow Foundation: Transactions

La méthode Transaction.EnlistPromotableSinglePhase peut maintenant utiliser un gestionnaire de transactions distribuées autre que MSDTC pour promouvoir la transaction.The Transaction.EnlistPromotableSinglePhase method can now use a distributed transaction manager other than MSDTC to promote the transaction. Pour ce faire, spécifiez un identificateur de promoteur de transaction GUID pour la nouvelle surcharge Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid).You do this by specifying a GUID transaction promoter identifier to the new Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overload . Si cette opération réussit, des limitations sont placées sur les fonctionnalités de la transaction.If this operation is successful, there are limitations placed on the capabilities of the transaction. Une fois qu’un promoteur de transaction non MSDTC est inscrit, les méthodes suivantes lèvent un TransactionPromotionException, car elles requièrent une promotion vers MSDTC :Once a non-MSDTC transaction promoter is enlisted, the following methods throw a TransactionPromotionException because these methods require promotion to MSDTC:

Une fois qu’un promoteur de transaction non MSDTC est inscrit, il doit être utilisé pour les futures inscriptions durables en utilisant les protocoles qu’il définit.Once a non-MSDTC transaction promoter is enlisted, it must be used for future durable enlistments by using protocols that it defines. Vous pouvez obtenir le Guid du promoteur de transaction à l’aide de la propriété PromoterType.The Guid of the transaction promoter can be obtained by using the PromoterType property. Lorsque la transaction est promue, le promoteur de transaction fournit un tableau d’octets (Byte qui représente le jeton promu.When the transaction promotes, the transaction promoter provides a Byte array that represents the promoted token. Une application peut obtenir le jeton promu pour une transaction non MSDTC promue à l’aide de la méthode GetPromotedToken.An application can obtain the promoted token for a non-MSDTC promoted transaction with the GetPromotedToken method.

Les utilisateurs de la nouvelle surcharge Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) doit suivre une séquence d’appel spécifique pour que l’opération de promotion se termine correctement.Users of the new Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overload must follow a specific call sequence in order for the promotion operation to complete successfully. Ces règles sont documentées dans la documentation de la méthode.These rules are documented in the method's documentation.

ProfilageProfiling

L’API de profilage non managée a été améliorée comme suit :The unmanaged profiling API has been enhanced as follows:

  • Meilleure prise en charge de l’accès aux fichiers PDB dans l’interface ICorProfilerInfo7.Better support for accessing PDBs in the ICorProfilerInfo7 interface.

    Dans ASP.NET Core, la compilation des assemblys en mémoire par Roslyn est beaucoup plus courante.In ASP.NET Core, it is becoming much more common for assemblies to be compiled in-memory by Roslyn. Pour les développeurs qui créent des outils de profilage, cela signifie que les fichiers PDB qui étaient historiquement sérialisés sur le disque risquent de ne plus être présents.For developers making profiling tools, this means that PDBs that historically were serialized on disk may no longer be present. Les outils de profilage utilisent souvent des fichiers PDB pour remapper du code aux lignes sources pour des tâches telles que la couverture du code ou l’analyse des performances ligne par ligne.Profiler tools often use PDBs to map code back to source lines for tasks such as code coverage or line-by-line performance analysis. L’interface ICorProfilerInfo7 inclut désormais deux nouvelles méthodes, ICorProfilerInfo7::GetInMemorySymbolsLength et ICorProfilerInfo7::ReadInMemorySymbols, qui permettent de fournir ces outils de profilage avec un accès aux données PDB en mémoire. En utilisant les nouvelles API, un profileur peut obtenir le contenu d’un fichier PDB en mémoire sous la forme d’un tableau d’octets, puis le traiter ou le sérialiser sur le disque.The ICorProfilerInfo7 interface now includes two new methods, ICorProfilerInfo7::GetInMemorySymbolsLength and ICorProfilerInfo7::ReadInMemorySymbols, to provide these profiler tools with access to the in-memory PDB data, By using the new APIs, a profiler can obtain the contents of an in-memory PDB as a byte array and then process it or serialize it to disk.

  • Meilleure instrumentation avec l’interface ICorProfiler.Better instrumentation with the ICorProfiler interface.

    Les profileurs qui utilisent la fonctionnalité ReJit de l’API ICorProfiler pour l’instrumentation dynamique peuvent maintenant modifier certaines métadonnées.Profilers that are using the ICorProfiler API’s ReJit functionality for dynamic instrumentation can now modify some metadata. Précédemment, ces outils pouvaient instrumenter le langage intermédiaire à tout moment, mais les métadonnées ne pouvaient être modifiées qu’au moment du chargement du module.Previously such tools could instrument IL at any time, but metadata could only be modified at module load time. Étant donné que le langage intermédiaire fait référence aux métadonnées, cela limitait les types d’instrumentation qui pouvaient être effectuées.Because IL refers to metadata, this limited the kinds of instrumentation that could be done. Nous avons levé certaines de ces limites en ajoutant la méthode ICorProfilerInfo7::ApplyMetaData pour prendre en charge un sous-ensemble des modifications de métadonnées après le chargement du module, notamment en ajoutant de nouveaux enregistrements AssemblyRef, TypeRef, TypeSpec, MemberRef, MemberSpec et UserString.We have lifted some of those limits by adding the ICorProfilerInfo7::ApplyMetaData method to support a subset of metadata edits after the module loads, in particular by adding new AssemblyRef, TypeRef, TypeSpec, MemberRef, MemberSpec, and UserString records. Cette modification permet une plus large gamme d’instrumentations instantanées possibles.This change makes a much broader range of on-the-fly instrumentation possible.

Fichiers PDB du générateur d’images natives (NGen)Native Image Generator (NGEN) PDBs

Le suivi d’événements entre ordinateurs permet aux clients de profiler un programme sur l’Ordinateur A et d’examiner les données de profilage avec le mappage des lignes sources sur l’Ordinateur B. Avec les versions antérieures du .NET Framework, l’utilisateur devait copier tous les modules et les images natives de l’ordinateur profilé vers l’ordinateur d’analyse qui contenait le fichier PDB en langage intermédiaire pour créer le mappage du code source au code natif.Cross-machine event tracing allows customers to profile a program on Machine A and look at the profiling data with source line mapping on Machine B. Using previous versions of the .NET Framework, the user would copy all the modules and native images from the profiled machine to the analysis machine that contains the IL PDB to create the source-to-native mapping. Ce processus peut fonctionner correctement lorsque les fichiers sont relativement petits, comme pour les applications de téléphone. Toutefois, les fichiers peuvent être très volumineux sur des systèmes de bureau et leur copie peut prendre beaucoup de temps.While this process may work well when the files are relatively small, such as for phone applications, the files can be very large on desktop systems and require significant time to copy.

Avec les fichiers PDB de NGen, NGen peut créer un fichier PDB qui contient le mappage du langage intermédiaire au code natif sans dépendance sur le fichier PDB en langage intermédiaire.With Ngen PDBs, NGen can create a PDB that contains the IL-to-native mapping without a dependency on the IL PDB. Dans notre scénario de suivi d’événements entre ordinateurs, il suffit de copier le fichier PDB de l’image native généré par l’Ordinateur A sur l’Ordinateur B et d’utiliser les API Debug Interface Access pour lire le mappage du code source au code en langage intermédiaire du fichier PDB en langage intermédiaire et le mappage du code en langage intermédiaire au code natif du fichier PDB de l’image native.In our cross-machine event tracing scenario, all that is needed is to copy the native image PDB that is generated by Machine A to Machine B and to use Debug Interface Access APIs to read the IL PDB's source-to-IL mapping and the native image PDB's IL-to-native mapping. La combinaison des deux mappages fournit un mappage du code source au code natif.Combining both mappings provides a source-to-native mapping. Étant donné que le fichier PDB de l’image native est beaucoup plus petit que l’ensemble des modules et images natives, le processus de copie de l’Ordinateur A vers l’Ordinateur B est beaucoup plus rapide.Since the native image PDB is much smaller than all the modules and native images, the process of copying from Machine A to Machine B is much faster.

Nouveautés du .NET 2015What's new in .NET 2015

.NET 2015 introduit le .NET Framework 4.6.NET Framework 4.6 et .NET Core..NET 2015 introduces the .NET Framework 4.6.NET Framework 4.6 and .NET Core. Certaines nouvelles fonctionnalités s'appliquent aux deux infrastructures, alors que d'autres sont spécifiques à .NET Framework 4.6.NET Framework 4.6 ou .NET Core.NET Core.Some new features apply to both, and other features are specific to .NET Framework 4.6.NET Framework 4.6 or .NET Core.NET Core.

  • ASP.NET CoreASP.NET Core

    .NET 2015 inclut ASP.NET Core, qui est une implémentation .NET pour la création d’applications cloud modernes..NET 2015 includes ASP.NET Core, which is a lean .NET implementation for building modern cloud-based apps. ASP.NET Core est modulable, ce qui vous permet d’inclure uniquement les fonctionnalités nécessaires dans votre application.ASP.NET Core is modular so you can include only those features that are needed in your application. Elle peut être hébergée sur IIS ou auto-hébergée dans un processus personnalisé. Par ailleurs, vous pouvez exécuter les applications avec différentes versions du .NET Framework sur le même serveur.It can be hosted on IIS or self-hosted in a custom process, and you can run apps with different versions of the .NET Framework on the same server. Elle inclut un nouveau système de configuration d'environnement conçu pour le déploiement cloud.It includes a new environment configuration system that is designed for cloud deployment.

    MVC, les API web et les pages web sont unifiés dans une infrastructure unique appelée MVC 6.MVC, Web API, and Web Pages are unified into a single framework called MVC 6. Vous créez des applications ASP.NET Core via les outils de Visual Studio 2015 ou ultérieur.You build ASP.NET Core apps through tools in Visual Studio 2015 or later. Vos applications existantes fonctionneront sur le nouveau .NET Framework. Toutefois, pour générer une application qui utilise MVC 6 ou SignalR 3, vous devez utiliser le système de projet de Visual Studio 2015 ou ultérieur.Your existing applications will work on the new .NET Framework; however to build an app that uses MVC 6 or SignalR 3, you must use the project system in Visual Studio 2015 or later.

    Pour plus d’informations, consultez ASP.NET Core.For information, see ASP.NET Core.

  • Mises à jour ASP.NETASP.NET Updates

    • API basée sur des tâches pour le vidage de réponse asynchroneTask-based API for Asynchronous Response Flushing

      ASP.NET fournit désormais une API simple basée sur des tâches pour le vidage de réponse asynchrone, HttpResponse.FlushAsync, qui autorise les réponses à être vidées de façon asynchrone à l'aide du support async/await de votre langue.ASP.NET now provides a simple task-based API for asynchronous response flushing, HttpResponse.FlushAsync, that allows responses to be flushed asynchronously by using your language's async/await support.

    • La liaison de modèle prend en charge les méthodes retournant TaskModel binding supports task-returning methods

      Dans le .NET Framework 4.5.NET Framework 4.5, ASP.NET a ajouté une fonctionnalité de liaison de modèle qui autorise une approche extensible, axée sur le code pour les opérations de données CRUD dans les contrôles utilisateur et les pages Web Forms.In the .NET Framework 4.5.NET Framework 4.5, ASP.NET added the Model Binding feature that enabled an extensible, code-focused approach to CRUD-based data operations in Web Forms pages and user controls. Le système de liaison de modèle prend désormais en charge les méthodes de liaison de modèle avec renvoi de Task.The Model Binding system now supports Task-returning model binding methods. Cette fonctionnalité permet aux développeurs de Web Forms d'obtenir les avantages de la scalabilité du modèle asynchrone et la simplicité du système de liaison de données lorsqu'ils utilisent les versions plus récentes des ORM, y compris l'Entity Framework.This feature allows Web Forms developers to get the scalability benefits of async with the ease of the data-binding system when using newer versions of ORMs, including the Entity Framework.

      La liaison de modèle asynchrone est contrôlée par le paramètre de configuration aspnet:EnableAsyncModelBinding.Async model binding is controlled by the aspnet:EnableAsyncModelBinding configuration setting.

      <appSettings>
         <add key=" aspnet:EnableAsyncModelBinding" value="true|false" />
      </appSettings>
      

      Sur les applications qui ciblent le .NET Framework 4.6.NET Framework 4.6, sa valeur par défaut est true.On apps the target the .NET Framework 4.6.NET Framework 4.6, it defaults to true. Sur les applications s'exécutant sur le .NET Framework 4.6.NET Framework 4.6 qui ciblent une version antérieure du .NET Framework, sa valeur par défaut est false.On apps running on the .NET Framework 4.6.NET Framework 4.6 that target an earlier version of the .NET Framework, it is false by default. Son activation s'obtient en définissant le paramètre de configuration avec la valeur true.It can be enabled by setting the configuration setting to true.

    • Prise en charge de HTTP/2 (Windows 10)HTTP/2 Support (Windows 10)

      HTTP/2 est une nouvelle version du protocole HTTP qui offre une bien meilleure utilisation de la connexion (moins d’allers-retours entre le client et le serveur), ce qui réduit la latence pendant le chargement des pages web pour les utilisateurs.HTTP/2 is a new version of the HTTP protocol that provides much better connection utilization (fewer round-trips between client and server), resulting in lower latency web page loading for users. Ce sont les pages web (par opposition aux services) qui profitent le plus de HTTP/2, car le protocole optimise les demandes de plusieurs artefacts dans une expérience unique.Web pages (as opposed to services) benefit the most from HTTP/2, since the protocol optimizes for multiple artifacts being requested as part of a single experience. La prise en charge de HTTP/2 a été ajoutée à ASP.NET dans le .NET Framework 4.6.HTTP/2 support has been added to ASP.NET in the .NET Framework 4.6. Étant donné que les fonctionnalités réseau existent sur plusieurs couches, de nouvelles fonctionnalités ont dû être rajoutées dans Windows, IIS et ASP.NET pour activer HTTP/2.Because networking functionality exists at multiple layers, new features were required in Windows, in IIS, and in ASP.NET to enable HTTP/2. Vous devez exécuter Windows 10 pour utiliser HTTP/2 avec ASP.NET.You must be running on Windows 10 to use HTTP/2 with ASP.NET.

      HTTP/2 est également pris en charge et activé par défaut sur les applications UWP Windows 10 qui utilisent l'API System.Net.Http.HttpClient.HTTP/2 is also supported and on by default for Windows 10 Universal Windows Platform (UWP) apps that use the System.Net.Http.HttpClient API.

      Afin de fournir un moyen d’utiliser la fonctionnalité PUSH_PROMISE dans les applications ASP.NET, une nouvelle méthode avec deux surcharges, PushPromise(String) et PushPromise(String, String, NameValueCollection), a été ajoutée à la classe HttpResponse.In order to provide a way to use the PUSH_PROMISE feature in ASP.NET applications, a new method with two overloads, PushPromise(String) and PushPromise(String, String, NameValueCollection), has been added to the HttpResponse class.

      Note

      Alors qu’ASP.NET Core prend en charge HTTP/2, la prise en charge de la fonctionnalité PUSH PROMISE n’a pas encore été ajoutée.While ASP.NET Core supports HTTP/2, support for the PUSH PROMISE feature has not yet been added.

      Le navigateur et le serveur web (IIS sur Windows) effectuent tout le travail.The browser and the web server (IIS on Windows) do all the work. Vous n'avez pas de tâches lourdes à effectuer pour vos utilisateurs.You don't have to do any heavy-lifting for your users.

      La plupart des principaux navigateurs prennent en charge HTTP/2. Il est donc probable que vos utilisateurs bénéficient de la prise en charge de HTTP/2 si tel est le cas de votre serveur.Most of the major browsers support HTTP/2, so it's likely that your users will benefit from HTTP/2 support if your server supports it.

    • Prise en charge du protocole de liaison de jetonSupport for the Token Binding Protocol

      Microsoft et Google ont travaillé en collaboration sur une nouvelle approche de l’authentification, appelée le Protocole de liaison de jeton.Microsoft and Google have been collaborating on a new approach to authentication, called the Token Binding Protocol. Cette approche part du principe que les jetons d’authentification (dans le cache de votre navigateur) peuvent être volés et utilisés par des personnes mal intentionnées pour accéder à des ressources sécurisées (par exemple, votre compte bancaire) sans avoir besoin de connaître votre mot de passe ou toute autre information confidentielle.The premise is that authentication tokens (in your browser cache) can be stolen and used by criminals to access otherwise secure resources (e.g. your bank account) without requiring your password or any other privileged knowledge. Le nouveau protocole vise à contenir ce problème.The new protocol aims to mitigate this problem.

      Le protocole de liaison de jeton sera implémenté dans Windows 10 en tant que fonctionnalité du navigateur.The Token Binding Protocol will be implemented in Windows 10 as a browser feature. Les applications ASP.NET participeront au protocole, en validant les jetons d'authentification pour qu'ils soient légitimes.ASP.NET apps will participate in the protocol, so that authentication tokens are validated to be legitimate. Les implémentations côté client et serveur établissent la protection de bout en bout spécifiée par le protocole.The client and the server implementations establish the end-to-end protection specified by the protocol.

    • Algorithmes de hachage de chaîne aléatoireRandomized string hash algorithms

      Le .NET Framework 4.5 a introduit un algorithme de hachage de chaîne aléatoire.The .NET Framework 4.5 introduced a randomized string hash algorithm. Cependant, il n'est pas pris en charge par ASP.NET en raison de certaines fonctionnalités ASP.NET fondées sur un code de hachage stable.However, it was not supported by ASP.NET because of some ASP.NET features depended on a stable hash code. Dans .NET Framework 4.6.NET Framework 4.6, les algorithmes de hachage de chaîne aléatoire sont désormais pris en charge.In .NET Framework 4.6.NET Framework 4.6, randomized string hash algorithms are now supported. Pour activer cette fonctionnalité, utilisez le paramètre de configuration aspnet:UseRandomizedStringHashAlgorithm.To enable this feature, use the aspnet:UseRandomizedStringHashAlgorithm config setting.

      <appSettings>
         <add key="aspnet:UseRandomizedStringHashAlgorithm" value="true|false" />
      </appSettings>
      
  • ADO.NETADO.NET

    ADO .NET prend désormais en charge la fonctionnalité Toujours chiffré disponible dans SQL Server 2016 version préliminaire CTP2 (Community Technology Preview 2).ADO .NET now supports the Always Encrypted feature available in SQL Server 2016 Community Technology Preview 2 (CTP2). Avec la fonctionnalité Toujours chiffré, SQL Server peut effectuer des opérations sur des données chiffrées, et surtout, la clé de chiffrement est stockée avec l'application à l'intérieur de l'environnement approuvé du client, et non pas sur le serveur.With Always Encrypted, SQL Server can perform operations on encrypted data, and best of all the encryption key resides with the application inside the customer’s trusted environment and not on the server. La fonctionnalité Toujours chiffré sécurise les données du client de sorte que les administrateurs de base de données n'ont pas accès aux données en texte brut.Always Encrypted secures customer data so DBAs do not have access to plain text data. Le chiffrement et le déchiffrement de données se produit de manière transparente au niveau du pilote, ce qui réduit des modifications à apporter aux applications existantes.Encryption and decryption of data happens transparently at the driver level, minimizing changes that have to be made to existing applications. Pour plus d’informations, consultez Always Encrypted (moteur de base de données) et Always Encrypted (développement client).For details, see Always Encrypted (Database Engine) and Always Encrypted (client development).

  • Compilateur JIT 64 bits pour le code managé64-bit JIT Compiler for managed code

    Le .NET Framework 4.6 propose une nouvelle version du compilateur JIT 64 bits (anciennement RyuJIT).The .NET Framework 4.6 features a new version of the 64-bit JIT compiler (originally code-named RyuJIT). Le nouveau compilateur 64 bits offre des améliorations significatives des performances par rapport à l'ancien compilateur JIT 64 bits.The new 64-bit compiler provides significant performance improvements over the older 64-bit JIT compiler. Le nouveau compilateur 64 bits est activé pour les processus 64 bits qui s'exécutent au-dessus du .NET Framework 4.6.The new 64-bit compiler is enabled for 64-bit processes running on top of the .NET Framework 4.6. Votre application s'exécute dans un processus 64 bits s'il est compilé en mode 64 bits ou AnyCPU, et s'exécute sur un système d'exploitation 64 bits.Your app will run in a 64-bit process if it is compiled as 64-bit or AnyCPU and is running on a 64-bit operating system. Bien que toutes les mesures nécessaires aient été prises pour que la transition vers le nouveau compilateur soit aussi transparente que possible, des modifications du comportement sont possibles.While care has been taken to make the transition to the new compiler as transparent as possible, changes in behavior are possible. Nous aimerions connaître directement les problèmes que vous pourriez rencontrer lorsque vous utilisez le nouveau compilateur JIT.We would like to hear directly about any issues encountered when using the new JIT compiler. Veuillez nous contacter par l’intermédiaire de Microsoft Connect pour tout problème susceptible d’être lié au nouveau compilateur JIT 64 bits.Please contact us through Microsoft Connect if you encounter an issue that may be related to the new 64-bit JIT compiler.

    Le nouveau compilateur JIT 64 bits inclut également des fonctionnalités d'accélération matérielle SIMD en cas d'association aux types SIMD de l'espace de noms System.Numerics, ce qui peut produire une bonne amélioration des performances.The new 64-bit JIT compiler also includes hardware SIMD acceleration features when coupled with SIMD-enabled types in the System.Numerics namespace, which can yield good performance improvements.

  • Améliorations du chargeur d’assemblyAssembly loader improvements

    Le chargeur d'assembly utilise désormais la mémoire plus efficacement en déchargeant les assemblys IL après le chargement d'une image NGEN correspondante.The assembly loader now uses memory more efficiently by unloading IL assemblies after a corresponding NGEN image is loaded. Cette modification réduit la mémoire virtuelle, ce qui est particulièrement utile pour les grandes applications 32 bits (tels que Visual Studio), et économise aussi la mémoire physique.This change decreases virtual memory, which is particularly beneficial for large 32-bit apps (such as Visual Studio), and also saves physical memory.

  • Changements des bibliothèques de classes de baseBase class library changes

    Plusieurs nouvelles API ont été ajoutées à .NET Framework 4.6.NET Framework 4.6 pour des scénarios clés.Many new APIs have been added around to .NET Framework 4.6.NET Framework 4.6 to enable key scenarios. Vous remarquerez les changements et les ajouts suivants :These include the following changes and additions:

    • Implémentations d’IReadOnlyCollection<T>IReadOnlyCollection<T> implementations

      Des collections supplémentaires implémentent IReadOnlyCollection<T>, comme Queue<T> et Stack<T>.Additional collections implement IReadOnlyCollection<T> such as Queue<T> and Stack<T>.

    • CultureInfo.CurrentCulture et CultureInfo.CurrentUICultureCultureInfo.CurrentCulture and CultureInfo.CurrentUICulture

      Les propriétés CultureInfo.CurrentCulture et CultureInfo.CurrentUICulture sont désormais en lecture et en écriture, et non plus en lecture seule.The CultureInfo.CurrentCulture and CultureInfo.CurrentUICulture properties are now read-write rather than read-only. Si vous affectez un nouvel objet CultureInfo à ces propriétés, la culture du thread actuel définie par la propriété Thread.CurrentThread.CurrentCulture et la culture du thread d'interface utilisateur actuel définie par les propriétés Thread.CurrentThread.CurrentUICulture changent également.If you assign a new CultureInfo object to these properties, the current thread culture defined by the Thread.CurrentThread.CurrentCulture property and the current UI thread culture defined by the Thread.CurrentThread.CurrentUICulture properties also change.

    • Améliorations apportées au garbage collection (GC)Enhancements to garbage collection (GC)

      La classe GC inclut désormais les méthodes TryStartNoGCRegion et EndNoGCRegion, qui vous permettent d'interdire le garbage collection durant l'exécution d'un chemin critique.The GC class now includes TryStartNoGCRegion and EndNoGCRegion methods that allow you to disallow garbage collection during the execution of a critical path.

      Une nouvelle surcharge de la méthode GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) vous permet de contrôler si le tas de petits objets et le tas d'objets volumineux sont rangés et compactés, ou rangés uniquement.A new overload of the GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) method allows you to control whether both the small object heap and the large object heap are swept and compacted or swept only.

    • Types SIMDSIMD-enabled types

      L'espace de noms System.Numerics inclut désormais un certain nombre de types SIMD, tels que Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3 et Vector4.The System.Numerics namespace now includes a number of SIMD-enabled types, such as Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3, and Vector4.

      Comme le nouveau compilateur JIT 64 bits inclut également des fonctionnalités d'accélération matérielle SIMD, il en découle une amélioration des performances particulièrement significative lorsque vous utilisez les types SIMD avec le nouveau compilateur JIT 64 bits.Because the new 64-bit JIT compiler also includes hardware SIMD acceleration features, there are especially significant performance improvements when using the SIMD-enabled types with the new 64-bit JIT compiler.

    • Mises à jour du chiffrementCryptography updates

      L’API System.Security.Cryptography est mise à jour pour prendre en charge les API de chiffrement CNG de Windows.The System.Security.Cryptography API is being updated to support the Windows CNG cryptography APIs. Jusqu’à présent, le .NET Framework reposait entièrement sur une version antérieure des API de chiffrement Windows comme base d’implémentation de System.Security.Cryptography.Previous versions of the .NET Framework have relied entirely on an earlier version of the Windows Cryptography APIs as the basis for the System.Security.Cryptography implementation. Nous avons reçu des demandes pour la prise en charge de l’API CNG, car elle prend en charge les algorithmes de chiffrement modernes, qui sont importants pour certaines catégories d’applications.We have had requests to support the CNG API, since it supports modern cryptography algorithms, which are important for certain categories of apps.

      Le .NET Framework 4.6 inclut les améliorations suivantes pour prendre en charge l'API de chiffrement CNG de Windows :The .NET Framework 4.6 includes the following new enhancements to support the Windows CNG cryptography APIs:

      • Un ensemble de méthodes d'extension pour les certificats X509, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2) et System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2), qui retourne une implémentation CNG plutôt qu'une implémentation CAPI lorsque cela est possible.A set of extension methods for X509 Certificates, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2) and System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2), that return a CNG-based implementation rather than a CAPI-based implementation when possible. (Certaines cartes à puce, etc., nécessitent toujours CAPI, et les API gèrent le secours).(Some smartcards, etc., still require CAPI, and the APIs handle the fallback).

      • La classe System.Security.Cryptography.RSACng, qui fournit une implémentation CNG de l'algorithme RSA.The System.Security.Cryptography.RSACng class, which provides a CNG implementation of the RSA algorithm.

      • Améliorations apportées à l'API RSA afin que les opérations courantes ne nécessitent plus de conversion.Enhancements to the RSA API so that common actions no longer require casting. Par exemple, le chiffrement des données utilisant un objet X509Certificate2 nécessite un code comme celui qui suit dans les versions antérieures du .NET Framework.For example, encrypting data using an X509Certificate2 object requires code like the following in previous versions of the .NET Framework.

        RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey;
        byte[] oaepEncrypted = rsa.Encrypt(data, true);
        byte[] pkcs1Encrypted = rsa.Encrypt(data, false);
        
        Dim rsa As RSACryptoServiceProvider = CType(cert.PrivateKey, RSACryptoServiceProvider)
        Dim oaepEncrypted() As Byte = rsa.Encrypt(data, True)
        Dim pkcs1Encrypted() As Byte = rsa.Encrypt(data, False)
        

        Le code qui utilise les nouvelles API de chiffrement dans le .NET Framework 4.6 peut être réécrit comme suit pour éviter la conversion.Code that uses the new cryptography APIs in the .NET Framework 4.6 can be rewritten as follows to avoid the cast.

        RSA rsa = cert.GetRSAPrivateKey();
        if (rsa == null)
           throw new InvalidOperationException("An RSA certificate was expected");
        
        byte[] oaepEncrypted = rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA1);
        byte[] pkcs1Encrypted = rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1);
        
        Dim rsa As RSA = cert.GetRSAPrivateKey()
        If rsa Is Nothing Then
           Throw New InvalidOperationException("An RSA certificate was expected")
         End If
        
        Dim oaepEncrypted() As Byte = rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA1)
        Dim pkcs1Encrypted() As Byte = rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1)
        
    • Prise en charge de la conversion des dates et heures vers ou à partir d’UnixSupport for converting dates and times to or from Unix time

      Les nouvelles méthodes suivantes ont été ajoutées à la structure DateTimeOffset pour prendre en charge la conversion des valeurs de date et d'heure vers ou depuis Unix :The following new methods have been added to the DateTimeOffset structure to support converting date and time values to or from Unix time:

    • Commutateurs de compatibilitéCompatibility switches

      La nouvelle classe AppContext ajoute une fonctionnalité de compatibilité qui permet aux auteurs de bibliothèque de fournir un mécanisme de désactivation uniforme des nouvelles fonctionnalités pour les utilisateurs.The new AppContext class adds a new compatibility feature that enables library writers to provide a uniform opt-out mechanism for new functionality for their users. Elle établit un contrat souple entre les composants pour la communication des demandes de désactivation.It establishes a loosely-coupled contract between components in order to communicate an opt-out request. Cette fonctionnalité est particulièrement importante quand une modification est apportée aux fonctionnalités existantes.This capability is typically important when a change is made to existing functionality. À l'inverse, il existe déjà une activation implicite des nouvelles fonctionnalités.Conversely, there is already an implicit opt-in for new functionality.

      Avec AppContext, les bibliothèques définissent et exposent des commutateurs de compatibilité, tandis que le code qui en dépend peut définir ces commutateurs pour qu'ils aient un impact sur le comportement de la bibliothèque.With AppContext, libraries define and expose compatibility switches, while code that depends on them can set those switches to affect the library behavior. Par défaut, les bibliothèques fournissent la nouvelle fonctionnalité et ne peuvent la modifier (c'est-à-dire fournir la version antérieure) que si le commutateur est défini.By default, libraries provide the new functionality, and they only alter it (that is, they provide the previous functionality) if the switch is set.

      Une application (ou une bibliothèque) peut déclarer la valeur d'un commutateur (qui est toujours une valeur Boolean) définie par une bibliothèque dépendante.An application (or a library) can declare the value of a switch (which is always a Boolean value) that a dependent library defines. Le commutateur a toujours implicitement la valeur false.The switch is always implicitly false. En définissant le commutateur avec la valeur true, vous l'activez.Setting the switch to true enables it. En définissant explicitement le commutateur avec la valeur false, vous obtenez le nouveau comportement.Explicitly setting the switch to false provides the new behavior.

      AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true);
      

      La bibliothèque doit vérifier si un consommateur a déclaré la valeur du commutateur et s'il l'utilise ensuite correctement.The library must check if a consumer has declared the value of the switch and then appropriately act on it.

      if (!AppContext.TryGetSwitch("Switch.AmazingLib.ThrowOnException", out shouldThrow))
      {
         // This is the case where the switch value was not set by the application.
         // The library can choose to get the value of shouldThrow by other means.
         // If no overrides nor default values are specified, the value should be 'false'.
         // A false value implies the latest behavior.
      }
      
         // The library can use the value of shouldThrow to throw exceptions or not.
         if (shouldThrow)
         {
            // old code
         }
         else {
            // new code
         }
      }
      

      Il est préférable d'utiliser un format homogène pour les commutateurs, car ils constituent un contrat formel exposé par une bibliothèque.It's beneficial to use a consistent format for switches, since they are a formal contract exposed by a library. Voici les deux formats évidents.The following are two obvious formats.

      • Commutateur.espace de noms.nom_commutateurSwitch.namespace.switchname

      • Commutateur.bibliothèque.nom_commutateurSwitch.library.switchname

    • Changements apportés au modèle asynchrone basé sur les tâches (TAP)Changes to the task-based asynchronous pattern (TAP)

      Pour les applications qui ciblent le .NET Framework 4.6.NET Framework 4.6, les objets Task et Task<TResult> héritent de la culture et de la culture d'interface utilisateur du thread appelant.For apps that target the .NET Framework 4.6.NET Framework 4.6, Task and Task<TResult> objects inherit the culture and UI culture of the calling thread. Le comportement des applications qui ciblent les versions antérieures du .NET Framework, ou qui ne ciblent pas une version spécifique du .NET Framework n'est pas affecté.The behavior of apps that target previous versions of the .NET Framework, or that do not target a specific version of the .NET Framework, is unaffected. Pour plus d'informations, consultez la section « Culture et opérations asynchrones basées sur les tâches » de la rubrique relative à la classe CultureInfo.For more information, see the "Culture and task-based asynchronous operations" section of the CultureInfo class topic.

      La classe System.Threading.AsyncLocal<T> permet de représenter les données ambiantes locales à un flux de contrôle asynchrone donné, par exemple une méthode async.The System.Threading.AsyncLocal<T> class allows you to represent ambient data that is local to a given asynchronous control flow, such as an async method. Elle peut être utilisée pour conserver les données entre plusieurs threads.It can be used to persist data across threads. Vous pouvez également définir une méthode de rappel qui est avertie chaque fois que les données ambiantes changent, soit parce que la propriété AsyncLocal<T>.Value a été modifiée explicitement, soit parce que le thread a rencontré une transition de contexte.You can also define a callback method that is notified whenever the ambient data changes either because the AsyncLocal<T>.Value property was explicitly changed, or because the thread encountered a context transition.

      Trois méthodes pratiques, Task.CompletedTask, Task.FromCanceled et Task.FromException, ont été ajoutées au modèle asynchrone basé sur des tâches (TAP) pour retourner les tâches terminées dans un état particulier.Three convenience methods, Task.CompletedTask, Task.FromCanceled, and Task.FromException, have been added to the task-based asynchronous pattern (TAP) to return completed tasks in a particular state.

      La classe NamedPipeClientStream prend désormais en charge la communication asynchrone avec sa nouvelle méthode ConnectAsyncThe NamedPipeClientStream class now supports asynchronous communication with its new ConnectAsync. .method.

    • EventSource prend désormais en charge l’écriture dans le journal des événementsEventSource now supports writing to the Event log

      Vous pouvez maintenant utiliser la classe EventSource pour enregistrer les messages administratifs ou opérationnels dans le journal des événements, en plus des sessions ETW existantes créées sur l'ordinateur.You now can use the EventSource class to log administrative or operational messages to the event log, in addition to any existing ETW sessions created on the machine. Par le passé, vous deviez utiliser le package Microsoft.Diagnostics.Tracing.EventSource NuGet pour cette fonctionnalité.In the past, you had to use the Microsoft.Diagnostics.Tracing.EventSource NuGet package for this functionality. Cette fonctionnalité est désormais intégrée au .NET Framework 4.6.This functionality is now built-into the .NET Framework 4.6.

      Le package NuGet et le 4.6 Framework .NET ont tous deux été mis à jour avec les fonctionnalités suivantes :Both the NuGet package and the .NET Framework 4.6 have been updated with the following features:

      • Événements dynamiquesDynamic events

        Permet que les événements soient définis « à la volée », sans créer de méthodes d'événement.Allows events defined "on the fly" without creating event methods.

      • Charges utiles enrichiesRich payloads

        Permet que les tableaux et les classes avec attributs spécifiques, ainsi que les types primitifs, soient transmis comme charge utileAllows specially attributed classes and arrays as well as primitive types to be passed as a payload

      • Suivi des activitésActivity tracking

        Tous les événements entre les événements de début et de fin sont marqués avec un ID qui représente toutes les activités en cours.Causes Start and Stop events to tag events between them with an ID that represents all currently active activities.

      Pour prendre en charge ces fonctionnalités, la méthode Write surchargée a été ajoutée à la classe EventSource.To support these features, the overloaded Write method has been added to the EventSource class.

  • Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)

    • Améliorations HDPIHDPI improvements

      La prise en charge HDPI dans WPF est désormais mieux assurée dans le .NET Framework 4.6.NET Framework 4.6.HDPI support in WPF is now better in the .NET Framework 4.6.NET Framework 4.6. Des améliorations ont été apportées à l'arrondi de disposition pour réduire les instances de découpage dans les contrôles avec bordures.Changes have been made to layout rounding to reduce instances of clipping in controls with borders. Par défaut, cette fonctionnalité est activée uniquement si votre TargetFrameworkAttribute a la valeur .NET 4.6.By default, this feature is enabled only if your TargetFrameworkAttribute is set to .NET 4.6. Les applications qui ciblent les versions antérieures du framework mais qui s’exécutent sur le .NET Framework 4.6.NET Framework 4.6 peuvent adopter le nouveau comportement en ajoutant la ligne suivante à la section <runtime> du fichier app.config :Applications that target earlier versions of the framework but are running on the .NET Framework 4.6.NET Framework 4.6 can opt in to the new behavior by adding the following line to the <runtime> section of the app.config file:

      <AppContextSwitchOverrides
      value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"
      />
      

      Les fenêtres WPF chevauchant plusieurs écrans avec différents paramètres DPI (programme d'installation multi-DPI) sont à présent restituées entièrement sans zones obscurcies.WPF windows straddling multiple monitors with different DPI settings (Multi-DPI setup) are now completely rendered without blacked-out regions. Vous pouvez désactiver ce comportement en ajoutant la ligne suivante à la section <appSettings> du fichier app.config :You can opt out of this behavior by adding the following line to the <appSettings> section of the app.config file to disable this new behavior:

      <add key="EnableMultiMonitorDisplayClipping" value="true"/>
      

      La prise en charge du chargement automatique du curseur approprié selon le paramètre DPI a été ajoutée à System.Windows.Input.Cursor.Support for automatically loading the right cursor based on DPI setting has been added to System.Windows.Input.Cursor.

    • Meilleure interaction tactileTouch is better

      Les rapports de clients sur Connect selon lesquels l’interaction tactile produisait un comportement imprévisible ont été traités dans .NET Framework 4.6.NET Framework 4.6.Customer reports on Connect that touch produces unpredictable behavior have been addressed in the .NET Framework 4.6.NET Framework 4.6. Le seuil de double appui pour les applications du Windows Store et les applications WPF est maintenant le même que dans Windows 8.1 et versions ultérieures.The double tap threshold for Windows Store applications and WPF applications is now the same in Windows 8.1 and above.

    • Prise en charge transparente des fenêtres enfantsTransparent child window support

      WPF dans le .NET Framework 4.6.NET Framework 4.6 prend en charge les fenêtres enfants transparentes dans Windows 8.1 et versions ultérieures.WPF in the .NET Framework 4.6.NET Framework 4.6 supports transparent child windows in Windows 8.1 and above. Cela vous permet de créer des fenêtres enfants non rectangulaires et transparentes dans vos fenêtres de niveau supérieur.This allows you to create non-rectangular and transparent child windows in your top-level windows. Vous pouvez désactiver cette fonctionnalité en affectant à la propriété HwndSourceParameters.UsesPerPixelTransparency la valeur true.You can enable this feature by setting the HwndSourceParameters.UsesPerPixelTransparency property to true.

  • Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)

    • Prise en charge SSLSSL support

      WCF prend désormais en charge la version TLS 1.1 et TLS 1.2 de SSL, en plus de SSL 3.0 et TLS 1.0, lorsque vous utilisez NetTcp avec l'authentification client et la sécurité de transport.WCF now supports SSL version TLS 1.1 and TLS 1.2, in addition to SSL 3.0 and TLS 1.0, when using NetTcp with transport security and client authentication. Il est désormais possible de sélectionner le protocole à utiliser, ou de désactiver les anciens protocoles moins sécurisés.It is now possible to select which protocol to use, or to disable old lesser secure protocols. Cela peut être effectué en définissant la propriété SslProtocols ou en ajoutant le code suivant à un fichier de configuration.This can be done either by setting the SslProtocols property or by adding the following to a configuration file.

      <netTcpBinding>
         <binding>
            <security mode= "None|Transport|Message|TransportWithMessageCredential" >
               <transport clientCredentialType="None|Windows|Certificate"
                          protectionLevel="None|Sign|EncryptAndSign"
                          sslProtocols="Ssl3|Tls1|Tls11|Tls12">
                  </transport>
            </security>
         </binding>
      </netTcpBinding>
      
    • Envoi de messages à l’aide de différentes connexions HTTPSending messages using different HTTP connections

      WCF permet désormais aux utilisateurs de s'assurer que certains messages sont envoyés à l'aide de différentes connexions HTTP sous-jacentes.WCF now allows users to ensure certain messages are sent using different underlying HTTP connections. Il existe deux façons d'effectuer cette opération :There are two ways to do this:

      • Utilisation d’un préfixe de nom de groupe de connexionUsing a connection group name prefix

        Les utilisateurs peuvent spécifier une chaîne que WCF utilisera comme préfixe du nom de groupe de connexion.Users can specify a string that WCF will use as a prefix for the connection group name. Deux messages avec des préfixes différents sont envoyés à l'aide de différentes connexions HTTP sous-jacentes.Two messages with different prefixes are sent using different underlying HTTP connections. Vous définissez le préfixe en ajoutant une paire clé/valeur à la propriété Message.Properties du message.You set the prefix by adding a key/value pair to the message's Message.Properties property. La clé est « HttpTransportConnectionGroupNamePrefix » ; la valeur est le préfixe souhaité.The key is "HttpTransportConnectionGroupNamePrefix"; the value is the desired prefix.

      • Utilisation de différentes fabriques de canauxUsing different channel factories

        Les utilisateurs peuvent aussi activer une fonctionnalité qui permet de s'assurer que les messages envoyés à l'aide de canaux créés par différentes fabriques de canaux utilisent différentes connexions HTTP sous-jacentes.Users can also enable a feature that ensures that messages sent using channels created by different channel factories will use different underlying HTTP connections. Pour activer cette fonctionnalité, les utilisateurs doivent définir la propriété appSetting suivante avec la valeur true :To enable this feature, users must set the following appSetting to true:

        <appSettings>
           <add key="wcf:httpTransportBinding:useUniqueConnectionPoolPerFactory" value="true" />
        </appSettings>
        
  • Windows Workflow Foundation (WWF)Windows Workflow Foundation (WWF)

    Vous pouvez maintenant spécifier le nombre de secondes pendant lesquelles un service de workflow maintient une demande d'opération exceptionnelle quand il existe un signet « non-protocole » en attente avant l'expiration de la demande.You can now specify the number of seconds a workflow service will hold on to an out-of-order operation request when there is an outstanding "non-protocol" bookmark before timing out the request. Un signet « non-protocole » est un signet qui n'est pas lié à des activités de réception en attente.A "non-protocol" bookmark is a bookmark that is not related to outstanding Receive activities. Comme certaines activités créent des signets non-protocole dans leur implémentation, il peut ne pas être évident qu'un signet non-protocole existe.Some activities create non-protocol bookmarks within their implementation, so it may not be obvious that a non-protocol bookmark exists. Ceux-ci incluent État et Prélèvement.These include State and Pick. Par conséquent, si vous avez un service de workflow mis en œuvre avec une machine à états ou contenant une activité de prélèvement, vous aurez probablement des signets non-protocole.So if you have a workflow service implemented with a state machine or containing a Pick activity, you will most likely have non-protocol bookmarks. Vous spécifiez l'intervalle en ajoutant la ligne suivante à la section appSettings de votre fichier app.config :You specify the interval by adding a line like the following to the appSettings section of your app.config file:

    <add key="microsoft:WorkflowServices:FilterResumeTimeoutInSeconds" value="60"/>
    

    La valeur par défaut est 60 secondes.The default value is 60 seconds. Si value a la valeur 0, les demandes exceptionnelles sont immédiatement rejetées comme erreur avec un texte tel que le suivant :If value is set to 0, out-of-order requests are immediately rejected with a fault with text that looks like this:

    Operation 'Request3|{http://tempuri.org/}IService' on service instance with identifier '2b0667b6-09c8-4093-9d02-f6c67d534292' cannot be performed at this time. Please ensure that the operations are performed in the correct order and that the binding in use provides ordered delivery guarantees.
    

    C'est le même message que vous recevez en cas d'opération exceptionnelle et d'absence de signet non-protocole.This is the same message that you receive if an out-of-order operation message is received and there are no non-protocol bookmarks.

    Si la valeur de l'élément FilterResumeTimeoutInSeconds est différente de zéro, il existe des signets non-protocole, l'intervalle de délai d'attente expire et l'opération échoue avec un message d'expiration.If the value of the FilterResumeTimeoutInSeconds element is non-zero, there are non-protocol bookmarks, and the timeout interval expires, the operation fails with a timeout message.

  • TransactionsTransactions

    Vous pouvez maintenant inclure l'identificateur de transaction distribuée pour la transaction ayant provoqué la levée d'une exception dérivée de TransactionException.You can now include the distributed transaction identifier for the transaction that has caused an exception derived from TransactionException to be thrown. Pour ce faire, ajoutez la clé suivante à la section appSettings de votre fichier app.config :You do this by adding the following key to the appSettings section of your app.config file:

    <add key="Transactions:IncludeDistributedTransactionIdInExceptionMessage" value="true"/>
    

    La valeur par défaut est false.The default value is false.

  • Mise en réseauNetworking

    • Réutilisation de socketSocket reuse

      Windows 10 inclut un nouvel algorithme de mise en réseau à haute scalabilité qui améliore l'utilisation des ressources de l'ordinateur en réutilisant les ports locaux pour les connexions TCP sortantes.Windows 10 includes a new high-scalability networking algorithm that makes better use of machine resources by reusing local ports for outbound TCP connections. Le .NET Framework 4.6 prend en charge le nouvel algorithme, permettant aux applications .NET de tirer parti du nouveau comportement.The .NET Framework 4.6 supports the new algorithm, enabling .NET apps to take advantage of the new behavior. Dans les précédentes versions de Windows, il y avait une limite artificielle de connexions simultanées (généralement 16 384, taille par défaut de la plage de ports dynamiques), ce qui pouvait limiter la scalabilité d'un service en provoquant l'épuisement du port sous charge.In previous versions of Windows, there was an artificial concurrent connection limit (typically 16,384, the default size of the dynamic port range), which could limit the scalability of a service by causing port exhaustion when under load.

      Dans le .NET Framework 4.6.NET Framework 4.6, deux nouvelles API ont été ajoutées pour permettre la réutilisation de port, ce qui supprime la limite de 64 Ko sur les connexions simultanées :In the .NET Framework 4.6.NET Framework 4.6, two new APIs have been added to enable port reuse, which effectively removes the 64K limit on concurrent connections:

      Par défaut, la propriété ServicePointManager.ReusePort est false sauf si la valeur HWRPortReuseOnSocketBind de la clé de Registre HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 est définie sur 0x1.By default, the ServicePointManager.ReusePort property is false unless the HWRPortReuseOnSocketBind value of the HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 registry key is set to 0x1. Pour activer la réutilisation de port local sur les connexions HTTP, définissez la propriété ServicePointManager.ReusePort avec la valeur true.To enable local port reuse on HTTP connections, set the ServicePointManager.ReusePort property to true. Toutes les connexions de socket TCP sortantes de HttpClient et HttpWebRequest sont alors contraintes d’utiliser une nouvelle option de socket Windows 10, SO_REUSE_UNICASTPORT, qui permet la réutilisation du port local.This causes all outgoing TCP socket connections from HttpClient and HttpWebRequest to use a new Windows 10 socket option, SO_REUSE_UNICASTPORT, that enables local port reuse.

      Les développeurs écrivant une application de sockets uniquement peuvent spécifier l'option System.Net.Sockets.SocketOptionName lors de l'appel d'une méthode telle que Socket.SetSocketOption afin que les sockets sortants réutilisent les ports locaux lors de la liaison.Developers writing a sockets-only application can specify the System.Net.Sockets.SocketOptionName option when calling a method such as Socket.SetSocketOption so that outbound sockets reuse local ports during binding.

    • Prise en charge des noms de domaine internationaux et PunyCodeSupport for international domain names and PunyCode

      Une nouvelle propriété, IdnHost, a été ajoutée à la classe Uri pour mieux prendre en charge les noms de domaine internationaux et PunyCode.A new property, IdnHost, has been added to the Uri class to better support international domain names and PunyCode.

  • Redimensionnement dans les contrôles Windows Forms.Resizing in Windows Forms controls.

    Cette fonctionnalité a été développée dans .NET Framework 4.6.NET Framework 4.6 pour inclure les types DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn et ToolStripSplitButton, et le rectangle spécifié par la propriété Bounds utilisée durant le dessin de UITypeEditor.This feature has been expanded in .NET Framework 4.6.NET Framework 4.6 to include the DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn and ToolStripSplitButton types and the rectangle specified by the Bounds property used when drawing a UITypeEditor.

    Il est nécessaire d'accepter cette fonctionnalité.This is an opt-in feature. Pour l'activer, affectez à l'élément EnableWindowsFormsHighDpiAutoResizing la valeur true dans le fichier de configuration de l'application (app.config) :To enable it, set the EnableWindowsFormsHighDpiAutoResizing element to true in the application configuration (app.config) file:

    <appSettings>
       <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    
  • Prise en charge des codages de pages de codesSupport for code page encodings

    .NET Core.NET Core prend en charge principalement les codages Unicode, et fournit par défaut une prise en charge limitée des codages de pages de codes.primarily supports the Unicode encodings and by default provides limited support for code page encodings. Vous pouvez ajouter la prise en charge des codages de pages de codes disponibles dans le .NET Framework mais non disponibles dans le .NET Core.NET Core en inscrivant les codages de pages de codes avec la méthode Encoding.RegisterProvider.You can add support for code page encodings available in the .NET Framework but unsupported in .NET Core.NET Core by registering code page encodings with the Encoding.RegisterProvider method. Pour plus d'informations, consultez System.Text.CodePagesEncodingProvider.For more information, see System.Text.CodePagesEncodingProvider.

  • .NET Native.NET Native

    Les applications Windows pour Windows 10 qui ciblent le .NET Core.NET Core et sont écrites en C# ou Visual Basic peuvent désormais tirer parti d'une nouvelle technologie qui compile les applications en code natif plutôt qu'en code IL (Intermediate Language).Windows apps for Windows 10 that target .NET Core.NET Core and are written in C# or Visual Basic can take advantage of a new technology that compiles apps to native code rather than IL. Il en résulte des applications caractérisées par un démarrage plus rapide et un temps d'exécution accéléré.They produce apps characterized by faster startup and execution times. Pour plus d’informations, consultez Compilation d’applications avec .NET Native.For more information, see Compiling Apps with .NET Native. Pour obtenir une vue d’ensemble de .NET Native illustrant sa différence par rapport à la compilation JIT et NGEN, et pour connaître ses implications au niveau de votre code, consultez Compilation et .NET Native.For an overview of .NET Native that examines how it differs from both JIT compilation and NGEN and what that means for your code, see .NET Native and Compilation.

    Vos applications sont compilées en code natif par défaut dans Visual Studio 2015 ou ultérieur.Your apps are compiled to native code by default when you compile them with Visual Studio 2015 or later. Pour plus d’informations, consultez Prise en main de .NET Native.For more information, see Getting Started with .NET Native.

    Pour permettre la prise en charge du débogage des applications .NET Native, un certain nombre de nouvelles interfaces et d'énumérations ont été ajoutées à l'API de débogage non managée.To support debugging .NET Native apps, a number of new interfaces and enumerations have been added to the unmanaged debugging API. Pour plus d’informations, consultez la rubrique Débogage (Référence des API non managées).For more information, see the Debugging (Unmanaged API Reference) topic.

  • Packages du .NET Framework open sourceOpen-source .NET Framework packages

    Les packages .NET Core, comme les collections immuables, les API SIMD et les API de mise en réseau comme celles rencontrées dans l’espace de noms System.Net.Http, sont désormais disponibles en tant que packages open source sur GitHub..NET Core packages such as the immutable collections, SIMD APIs, and networking APIs such as those found in the System.Net.Http namespace are now available as open source packages on GitHub. Pour accéder au code, consultez CoreFx sur GitHub.To access the code, see CoreFx on GitHub. Pour plus d’informations, notamment sur la manière de contribuer à ces packages, consultez .NET Core et Open-Source, la page d’accueil .NET sur GitHub.For more information and how to contribute to these packages, see .NET Core and Open-Source, .NET Home Page on GitHub.

Retour au débutBack to top

Nouveautés dans le .NET Framework 4.5.2What's new in the .NET Framework 4.5.2

  • Nouvelles API pour les applications ASP.NET.New APIs for ASP.NET apps. Les nouvelles méthodes HttpResponse.AddOnSendingHeaders et HttpResponseBase.AddOnSendingHeaders vous permettent d'inspecter et de modifier les en-têtes de réponse et le code d'état au moment où la réponse est vidée dans l'application cliente.The new HttpResponse.AddOnSendingHeaders and HttpResponseBase.AddOnSendingHeaders methods let you inspect and modify response headers and status code as the response is being flushed to the client app. Envisagez d'utiliser ces méthodes au lieu des événements PreSendRequestHeaders et PreSendRequestContent ; elles sont plus efficaces et fiables.Consider using these methods instead of the PreSendRequestHeaders and PreSendRequestContent events; they are more efficient and reliable.

    La méthode HostingEnvironment.QueueBackgroundWorkItem vous permet de planifier des petits éléments de travail en arrière-plan.The HostingEnvironment.QueueBackgroundWorkItem method lets you schedule small background work items. ASP.NET effectue le suivi de ces éléments et empêche IIS de mettre fin brutalement au processus de traitement tant que tous les éléments de travail en arrière-plan ne sont pas terminés.ASP.NET tracks these items and prevents IIS from abruptly terminating the worker process until all background work items have completed. Cette méthode ne peut pas être appelée en dehors d'un domaine d'application managée ASP.NET.This method can't be called outside an ASP.NET managed app domain.

    Les nouvelles propriétés HttpResponse.HeadersWritten et HttpResponseBase.HeadersWritten retournent des valeurs booléennes qui indiquent si les en-têtes de réponse ont été écrits.The new HttpResponse.HeadersWritten and HttpResponseBase.HeadersWritten properties return Boolean values that indicate whether the response headers have been written. Vous pouvez utiliser ces propriétés pour vous assurer que les appels d'API comme HttpResponse.StatusCode (qui lèvent des exceptions si les en-têtes ont été écrits) vont réussir.You can use these properties to make sure that calls to APIs such as HttpResponse.StatusCode (which throw exceptions if the headers have been written) will succeed.

  • Redimensionnement dans les contrôles Windows Forms.Resizing in Windows Forms controls. Cette fonctionnalité a été étendue.This feature has been expanded. Vous pouvez maintenant utiliser le paramètre PPP système pour redimensionner les composants des contrôles supplémentaires suivants (par exemple, la flèche déroulante vers le bas dans les zones de liste modifiable) :You can now use the system DPI setting to resize components of the following additional controls (for example, the drop-down arrow in combo boxes):

    Il est nécessaire d'accepter cette fonctionnalité.This is an opt-in feature. Pour l'activer, affectez à l'élément EnableWindowsFormsHighDpiAutoResizing la valeur true dans le fichier de configuration de l'application (app.config) :To enable it, set the EnableWindowsFormsHighDpiAutoResizing element to true in the application configuration (app.config) file:

    <appSettings>
       <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    
  • Nouvelle fonctionnalité de flux de travail.New workflow feature. Un gestionnaire de ressources qui utilise la méthode EnlistPromotableSinglePhase (et qui implémente donc l'interface IPromotableSinglePhaseNotification) peut utiliser la nouvelle méthode Transaction.PromoteAndEnlistDurable pour demander :A resource manager that's using the EnlistPromotableSinglePhase method (and therefore implementing the IPromotableSinglePhaseNotification interface) can use the new Transaction.PromoteAndEnlistDurable method to request the following:

    Ces demandes peuvent être faites au sein du même domaine d'application et ne nécessitent pas de code non managé supplémentaire pour interagir avec MSDTC pour effectuer la promotion.This can be done within the same app domain, and doesn't require any extra unmanaged code to interact with MSDTC to perform the promotion. La nouvelle méthode peut uniquement être appelée quand il existe un appel en suspens de System.Transactions à la méthode IPromotableSinglePhaseNotification Promote qui est implémentée par l’inscription pouvant être promue.The new method can be called only when there's an outstanding call from System.Transactions to the IPromotableSinglePhaseNotificationPromote method that's implemented by the promotable enlistment.

  • Améliorations du profilage.Profiling improvements. Les nouvelles API de profilage non managées suivantes proposent un profilage plus robuste :The following new unmanaged profiling APIs provide more robust profiling:

    Les implémentations précédentes d'ICorProfiler prenaient en charge le chargement tardif des assemblys dépendants.Previous ICorProfiler implementations supported lazy loading of dependent assemblies. Les nouvelles API de profilage ont besoin que les assemblys dépendants soient injectés par le profileur pour qu'ils puissent être chargés immédiatement, plutôt qu'une fois que l'application est entièrement initialisée.The new profiling APIs require dependent assemblies that are injected by the profiler to be loadable immediately, instead of being loaded after the app is fully initialized. Cette modification ne concerne pas les utilisateurs des API ICorProfiler existantes.This change doesn't affect users of the existing ICorProfiler APIs.

  • Améliorations du débogage.Debugging improvements. Les nouvelles API de débogage non managées suivantes améliorent l'intégration à un profileur.The following new unmanaged debugging APIs provide better integration with a profiler. Vous pouvez à présent accéder aux métadonnées insérées par le profileur ainsi qu'aux variables locales et au code produit par les demandes ReJIT du compilateur pendant le débogage de dump.You can now access metadata inserted by the profiler as well as local variables and code produced by compiler ReJIT requests when dump debugging.

  • Modifications du suivi d’événements.Event tracing changes. .NET Framework 4.5.2 permet le traçage des activités de type Suivi d'événements pour Windows (ETW) hors processus pour une surface d'exposition plus importante.The .NET Framework 4.5.2 enables out-of-process, Event Tracing for Windows (ETW)-based activity tracing for a larger surface area. Ce dernier permet aux fournisseurs de gestion avancée de l'alimentation (APM) de fournir des outils légers qui suivent avec précision les coûts des demandes et activités individuelles qui traversent les threads.This enables Advanced Power Management (APM) vendors to provide lightweight tools that accurately track the costs of individual requests and activities that cross threads. Ces événements sont déclenchés uniquement quand les contrôleurs ETW les autorisent ; par conséquent, les modifications ne concernent pas le code ETW écrit auparavant ni le code qui s'exécute avec la fonctionnalité ETW désactivée.These events are raised only when ETW controllers enable them; therefore, the changes don't affect previously written ETW code or code that runs with ETW disabled.

  • Promotion d’une transaction et sa conversion en une inscription durablePromoting a transaction and converting it to a durable enlistment

    Transaction.PromoteAndEnlistDurable est une nouvelle API ajoutée au .NET Framework 4.5.2 et 4.6 :Transaction.PromoteAndEnlistDurable is a new API added to the .NET Framework 4.5.2 and 4.6:

    [System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.LinkDemand, Name = "FullTrust")]
    public Enlistment PromoteAndEnlistDurable(Guid resourceManagerIdentifier,
                                              IPromotableSinglePhaseNotification promotableNotification,
                                              ISinglePhaseNotification enlistmentNotification,
                                              EnlistmentOptions enlistmentOptions)
    

    La méthode peut être utilisée par une inscription précédemment créée par Transaction.EnlistPromotableSinglePhase en réponse à la méthode ITransactionPromoter.Promote.The method may be used by an enlistment that was previously created by Transaction.EnlistPromotableSinglePhase in response to the ITransactionPromoter.Promote method. Elle demande à System.Transactions de promouvoir la transaction en une transaction MSDTC et de « convertir » l'inscription à promouvoir en une inscription durable.It asks System.Transactions to promote the transaction to an MSDTC transaction and to "convert" the promotable enlistment to a durable enlistment. Après que la méthode s'est terminée avec succès, l'interface IPromotableSinglePhaseNotification n'est plus référencée par System.Transactions et toutes les futures notifications parviennent sur l'interface ISinglePhaseNotification fournie.After this method completes successfully, the IPromotableSinglePhaseNotification interface will no longer be referenced by System.Transactions, and any future notifications will arrive on the provided ISinglePhaseNotification interface. L'inscription en question doit agir comme inscription durable, en prenant en charge la récupération et la journalisation des transactions.The enlistment in question must act as a durable enlistment, supporting transaction logging and recovery. Consultez Transaction.EnlistDurable pour plus d'informations.Refer to Transaction.EnlistDurable for details. En outre, l'inscription doit prendre en charge ISinglePhaseNotification.In addition, the enlistment must support ISinglePhaseNotification. Cette méthode peut être appelée seulement lors du traitement d’un appel ITransactionPromoter.Promote.This method can only be called while processing an ITransactionPromoter.Promote call. Si tel n'est pas le cas, une exception TransactionException est levée.If that is not the case, a TransactionException exception is thrown.

Retour au débutBack to top

Nouveautés dans le .NET Framework 4.5.1What's new in the .NET Framework 4.5.1

Mises à jour d’avril 2014 :April 2014 updates:

  • Visual Studio 2013 Update 2 inclut les mises à jour des modèles de la bibliothèque de classes portable pour prendre en charge les scénarios suivants :Visual Studio 2013 Update 2 includes updates to the Portable Class Library templates to support these scenarios:

    • Vous pouvez utiliser les API Windows Runtime dans les bibliothèques portables qui ciblent Windows 8.1, Windows Phone 8.1, et Windows Phone Silverlight 8.1.You can use Windows Runtime APIs in portable libraries that target Windows 8.1, Windows Phone 8.1, and Windows Phone Silverlight 8.1.

    • Vous pouvez inclure du code XAML (type Windows.UI.XAML) dans les bibliothèques portables quand vous ciblez Windows 8.1 ou Windows Phone 8.1.You can include XAML (Windows.UI.XAML types) in portable libraries when you target Windows 8.1 or Windows Phone 8.1. Les modèles XAML suivants sont pris en charge : Page vierge, Dictionnaire de ressources, Contrôle basé sur un modèle et Contrôle utilisateur.The following XAML templates are supported: Blank Page, Resource Dictionary, Templated Control, and User Control.

    • Vous pouvez créer un composant Windows Runtime portable (fichier .winmd) à utiliser dans les applications du Windows Store qui ciblent Windows 8.1 et Windows Phone 8.1.You can create a portable Windows Runtime component (.winmd file) for use in Store apps that target Windows 8.1 and Windows Phone 8.1.

    • Vous pouvez recibler une bibliothèque de classes du Windows Store ou du Windows Phone Store, par exemple une bibliothèque de classes portable.You can retarget a Windows Store or Windows Phone Store class library like a Portable Class Library.

    Pour plus d’informations sur ces modifications, consultez Bibliothèque de classes portable.For more information about these changes, see Portable Class Library.

  • Le jeu de contenus du .NET Framework inclut à présent la documentation relative à .NET Native.NET Native, une technologie de précompilation qui permet de générer et déployer des applications Windows.The .NET Framework content set now includes documentation for .NET Native.NET Native, which is a precompilation technology for building and deploying Windows apps. .NET Native.NET Native compile directement vos applications en code natif, plutôt qu'en langage intermédiaire, pour de meilleures performances.compiles your apps directly to native code, rather than to intermediate language (IL), for better performance. Pour plus d’informations, consultez Compilation d’applications avec .NET Native.For details, see Compiling Apps with .NET Native.

  • Le site .NET Framework Reference Source propose une nouvelle expérience de navigation et des fonctionnalités améliorées.The .NET Framework Reference Source provides a new browsing experience and enhanced functionality. Vous pouvez à présent parcourir le code source .NET Framework en ligne, télécharger la référence à des fins de consultation hors connexion et parcourir les sources (notamment les correctifs et mises à jour) pendant le débogage.You can now browse through the .NET Framework source code online, download the reference for offline viewing, and step through the sources (including patches and updates) during debugging. Pour plus d’informations, consultez l’entrée de blog qui présente le nouvel aspect de la source de référence .NET.For more information, see the blog entry A new look for .NET Reference Source.

Les principales fonctionnalités et améliorations nouvelles dans le .NET Framework 4.5.1 sont les suivantes :Core new features and enhancements in the .NET Framework 4.5.1 include:

  • Redirection de liaison automatique des assemblys.Automatic binding redirection for assemblies. Depuis Visual Studio 2013, lorsque vous compilez une application qui cible .NET Framework 4.5.1.NET Framework 4.5.1, il est possible d'ajouter des redirections de liaison au fichier de configuration de l'application, si votre application ou ses composants référencent plusieurs versions du même assembly.Starting with Visual Studio 2013, when you compile an app that targets the .NET Framework 4.5.1.NET Framework 4.5.1, binding redirects may be added to the app configuration file if your app or its components reference multiple versions of the same assembly. Vous pouvez également activer cette fonctionnalité pour les projets qui ciblent des versions antérieures du .NET Framework.You can also enable this feature for projects that target older versions of the .NET Framework. Pour plus d’informations, consultez Guide pratique pour activer et désactiver la redirection de liaison automatique.For more information, see How to: Enable and Disable Automatic Binding Redirection.

  • Capacité à collecter des informations de diagnostic pour aider les développeurs à améliorer les performances des applications serveur et cloud.Ability to collect diagnostics information to help developers improve the performance of server and cloud applications. Pour plus d'informations, consultez les méthodes WriteEventWithRelatedActivityId et WriteEventWithRelatedActivityIdCore de la classe EventSource.For more information, see the WriteEventWithRelatedActivityId and WriteEventWithRelatedActivityIdCore methods in the EventSource class.

  • Capacité à compacter explicitement le tas d'objets volumineux (LOH) pendant un garbage collection.Ability to explicitly compact the large object heap (LOH) during garbage collection. Pour plus d'informations, consultez la propriété GCSettings.LargeObjectHeapCompactionMode.For more information, see the GCSettings.LargeObjectHeapCompactionMode property.

  • Autres améliorations des performances, telles que la suspension d'application ASP.NET, les améliorations JIT multicœurs et le démarrage accéléré des applications après une mise à jour du .NET Framework.Additional performance improvements such as ASP.NET app suspension, multi-core JIT improvements, and faster app startup after a .NET Framework update. Pour plus d’informations, consultez l’article Annonce de .NET Framework 4.5.1 et le billet de blog ASP.NET app suspend.For details, see the .NET Framework 4.5.1 announcement and the ASP.NET app suspend blog post.

Les améliorations apportées à Windows Forms incluent :Improvements to Windows Forms include:

  • Redimensionnement dans les contrôles Windows Forms.Resizing in Windows Forms controls. Vous pouvez utiliser le paramètre PPP système pour redimensionner les composants des contrôles (par exemple, les icônes qui apparaissent dans une grille des propriétés) en choisissant de l'utiliser pour votre application grâce à une entrée dans le fichier de configuration de l'application (app.config).You can use the system DPI setting to resize components of controls (for example, the icons that appear in a property grid) by opting in with an entry in the application configuration file (app.config) for your app. Cette fonctionnalité est actuellement prise en charge dans les contrôles Windows Forms suivants :This feature is currently supported in the following Windows Forms controls:

    Pour activer cette fonctionnalité, ajoutez un nouvel élément <appSettings> au fichier de configuration (app.config) et affectez la valeur true à l'élément EnableWindowsFormsHighDpiAutoResizing :To enable this feature, add a new <appSettings> element to the configuration file (app.config) and set the EnableWindowsFormsHighDpiAutoResizing element to true:

    <appSettings>
       <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>
    

Les améliorations lors du débogage de vos applications .NET Framework dans Visual Studio 2013 incluent :Improvements when debugging your .NET Framework apps in Visual Studio 2013 include:

  • Valeurs de retour dans le débogueur Visual Studio.Return values in the Visual Studio debugger. Lorsque vous déboguez une application managée dans Visual Studio 2013, la Fenêtre Automatique affiche les types et les valeurs de retour pour les méthodes.When you debug a managed app in Visual Studio 2013, the Autos window displays return types and values for methods. Ces informations sont disponibles pour les applications de bureau, Windows Store et Windows Phone.This information is available for desktop, Windows Store, and Windows Phone apps. Pour plus d’informations, consultez Examiner les valeurs de retour des appels de méthode.For more information, see Examine return values of method calls.

  • Modifier & Continuer pour applications 64 bits.Edit and Continue for 64-bit apps. Visual Studio 2013 prend en charge la fonctionnalité Modifier & Continuer pour les applications managées 64 bits pour le Bureau, Windows Store et Windows Phone.Visual Studio 2013 supports the Edit and Continue feature for 64-bit managed apps for desktop, Windows Store, and Windows Phone. Les limitations existantes restent effectives pour les applications 32 bits et 64 bits (consultez la dernière section de l’article Modifications de code prises en charge (C#)).The existing limitations remain in effect for both 32-bit and 64-bit apps (see the last section of the Supported Code Changes (C#) article).

  • Débogage asynchrone.Async-aware debugging. Pour simplifier le débogage des applications asynchrones dans Visual Studio 2013, la pile d'appels masque le code d'infrastructure fourni par les compilateurs pour prendre en charge la programmation asynchrone. Elle chaîne également les trames parentes logiques afin que vous puissiez suivre plus clairement l'exécution logique du programme.To make it easier to debug asynchronous apps in Visual Studio 2013, the call stack hides the infrastructure code provided by compilers to support asynchronous programming, and also chains in logical parent frames so you can follow logical program execution more clearly. Une fenêtre Tâches remplace la fenêtre Tâches parallèles et affiche les tâches relatives à un point d'arrêt particulier, ainsi que toutes les autres tâches qui sont actuellement actives ou planifiées dans l'application.A Tasks window replaces the Parallel Tasks window and displays tasks that relate to a particular breakpoint, and also displays any other tasks that are currently active or scheduled in the app. Vous pouvez en savoir plus sur cette fonctionnalité en lisant la section sur le débogage asynchrone de l’annonce relative à .NET Framework 4.5.1.You can read about this feature in the "Async-aware debugging" section of the .NET Framework 4.5.1 announcement.

  • Meilleure prise en charge des exceptions pour les composants Windows Runtime.Better exception support for Windows Runtime components. Dans Windows 8.1Windows 8.1, une exception qui provient des applications Windows Store conserve les informations sur l'erreur qui a provoqué l'exception, même au-delà des limites du langage.In Windows 8.1Windows 8.1, exceptions that arise from Windows Store apps preserve information about the error that caused the exception, even across language boundaries. Vous pouvez en savoir plus sur cette fonctionnalité en lisant la section sur le développement d’applications du Windows Store dans l’annonce relative au .NET Framework 4.5.1.You can read about this feature in the "Windows Store app development" section of the .NET Framework 4.5.1 announcement.

Depuis Visual Studio 2013, vous pouvez utiliser Mpgo.exe (Outil d'optimisation guidée par profil managé) pour optimiser les applications Windows 8.x StoreWindows 8.x Store, ainsi que les applications de bureau.Starting with Visual Studio 2013, you can use the Managed Profile Guided Optimization Tool (Mpgo.exe) to optimize Windows 8.x StoreWindows 8.x Store apps as well as desktop apps.

Pour les nouvelles fonctionnalités dans ASP.NET 4.5.1, consultez Notes de mise à jour ASP.NET et Web Tools pour Visual Studio 2013.For new features in ASP.NET 4.5.1, see ASP.NET and Web Tools for Visual Studio 2013 Release Notes.

Retour au débutBack to top

Nouveautés dans le .NET Framework 4.5What's new in the .NET Framework 4.5

Principales fonctionnalités et améliorations nouvellesCore new features and improvements

  • Capacité à réduire les redémarrages du système en détectant et en fermant les applications .NET Framework 4 pendant le déploiement.Ability to reduce system restarts by detecting and closing .NET Framework 4 applications during deployment. Consultez Réduction des redémarrages système durant les installations de .NET Framework 4.5.See Reducing System Restarts During .NET Framework 4.5 Installations.

  • Prise en charge de tableaux supérieurs à 2 gigaoctets (Go) sur les plateformes 64 bits.Support for arrays that are larger than 2 gigabytes (GB) on 64-bit platforms. Cette fonctionnalité peut être activée dans le fichier de configuration de l'application.This feature can be enabled in the application configuration file. Consultez l’élément <gcAllowVeryLargeObjects>, qui répertorie également d’autres restrictions sur la taille des objets et la taille des tableaux.See the <gcAllowVeryLargeObjects> element, which also lists other restrictions on object size and array size.

  • Meilleures performances via une opération garbage collection en arrière-plan pour les serveurs.Better performance through background garbage collection for servers. Lorsque vous utilisez le garbage collection de serveur dans .NET Framework 4.5.NET Framework 4.5, le garbage collection en arrière-plan est automatiquement activé.When you use server garbage collection in the .NET Framework 4.5.NET Framework 4.5, background garbage collection is automatically enabled. Consultez la section Garbage collection de serveur en arrière-plan, dans la rubrique Notions de base du garbage collection.See the Background Server Garbage Collection section of the Fundamentals of Garbage Collection topic.

  • Compilation juste-à-temps (JIT) en arrière-plan, disponible en option sur les processeurs multicœurs pour améliorer les performances de l'application.Background just-in-time (JIT) compilation, which is optionally available on multi-core processors to improve application performance. Consultez ProfileOptimization.See ProfileOptimization.

  • Capacité à limiter la durée pendant laquelle le moteur d'expressions régulières tentera de résoudre une expression régulière avant d'expirer. Voir la propriété Regex.MatchTimeout.Ability to limit how long the regular expression engine will attempt to resolve a regular expression before it times out. See the Regex.MatchTimeout property.

  • Capacité à définir la culture par défaut d'un domaine d'application.Ability to define the default culture for an application domain. Voir la classe CultureInfo.See the CultureInfo class.

  • Prise en charge de la console pour l'encodage Unicode (UTF-16).Console support for Unicode (UTF-16) encoding. Voir la classe Console.See the Console class.

  • Prise en charge du versioning des données de classement et de comparaison des chaînes culturelles.Support for versioning of cultural string ordering and comparison data. Voir la classe SortVersion.See the SortVersion class.

  • Meilleures performances lors de l'extraction des ressources.Better performance when retrieving resources. Consultez Empaquetage et déploiement de ressources.See Packaging and Deploying Resources.

  • Améliorations de la compression Zip pour réduire la taille d'un fichier compressé.Zip compression improvements to reduce the size of a compressed file. Voir l'espace de noms System.IO.Compression.See the System.IO.Compression namespace.

  • Possibilité de personnaliser un contexte de réflexion pour remplacer le comportement de réflexion par défaut par l'intermédiaire de la classe CustomReflectionContext.Ability to customize a reflection context to override default reflection behavior through the CustomReflectionContext class.

  • Prise en charge de la version 2008 de la norme IDNA (Internationalized Domain Names in Applications) lorsque la classe System.Globalization.IdnMapping est utilisée dans Windows 8Windows 8.Support for the 2008 version of the Internationalized Domain Names in Applications (IDNA) standard when the System.Globalization.IdnMapping class is used on Windows 8Windows 8.

  • Délégation de comparaison de chaînes au système d'exploitation, qui implémente Unicode 6.0, lorsque .NET Framework est utilisé dans Windows 8Windows 8.Delegation of string comparison to the operating system, which implements Unicode 6.0, when the .NET Framework is used on Windows 8Windows 8. Lorsqu'il s'exécute sur d'autres plateformes, .NET Framework inclut ses propres données de comparaison de chaînes, qui implémentent Unicode 5.x.When running on other platforms, the .NET Framework includes its own string comparison data, which implements Unicode 5.x. Voir la classe String et la section Notes de la classe SortVersion.See the String class and the Remarks section of the SortVersion class.

  • Possibilité de calculer les codes de hachage des chaînes par domaine d'application.Ability to compute the hash codes for strings on a per application domain basis. Voir <UseRandomizedStringHashAlgorithm>, élément.See <UseRandomizedStringHashAlgorithm> Element.

  • Prise en charge de la réflexion de type fractionnée entre les classes Type et TypeInfo.Type reflection support split between Type and TypeInfo classes. Consultez Réflexion dans le .NET Framework pour les applications du Windows Store.See Reflection in the .NET Framework for Windows Store Apps.

Managed Extensibility Framework (MEF)Managed Extensibility Framework (MEF)

Dans .NET Framework 4.5.NET Framework 4.5, le package Managed Extensibility Framework (MEF) fournit les nouvelles fonctionnalités suivantes :In the .NET Framework 4.5.NET Framework 4.5, the Managed Extensibility Framework (MEF) provides the following new features:

  • Prise en charge des types génériques.Support for generic types.

  • Modèle de programmation basé sur les conventions qui permet de créer des parties basées sur les conventions d'appellation, plutôt que sur les attributs.Convention-based programming model that enables you to create parts based on naming conventions rather than attributes.

  • Portées multiples.Multiple scopes.

  • Sous-ensemble MEF que vous pouvez utiliser lorsque vous créez des applications Windows 8.x StoreWindows 8.x Store.A subset of MEF that you can use when you create Windows 8.x StoreWindows 8.x Store apps. Ce sous-ensemble est disponible sous la forme d’un package téléchargeable à partir de la galerie NuGet.This subset is available as a downloadable package from the NuGet Gallery. Pour installer ce package, ouvrez votre projet dans Visual Studio, dans le menu Projet choisissez Gérer les packages NuGet, puis recherchez en ligne le package Microsoft.Composition.To install the package, open your project in Visual Studio, choose Manage NuGet Packages from the Project menu, and search online for the Microsoft.Composition package.

Pour plus d’informations, consultez Vue d’ensemble de Managed Extensibility Framework.For more information, see Managed Extensibility Framework (MEF).

Opérations asynchrones sur les fichiersAsynchronous file operations

Dans .NET Framework 4.5.NET Framework 4.5, de nouvelles fonctionnalités asynchrones ont été ajoutées aux langages C# et Visual Basic.In the .NET Framework 4.5.NET Framework 4.5, new asynchronous features were added to the C# and Visual Basic languages. Ces fonctionnalités ajoutent un modèle basé sur les tâches pour exécuter des opérations asynchrones.These features add a task-based model for performing asynchronous operations. Pour utiliser ce nouveau modèle, utilisez les méthodes asynchrones dans les classes d'E/S.To use this new model, use the asynchronous methods in the I/O classes. Consultez E/S de fichier asynchrone.See Asynchronous File I/O.

OutilsTools

Dans .NET Framework 4.5.NET Framework 4.5, l'outil Resource File Generator (Resgen.exe) vous permet de créer un fichier .resw à utiliser dans les applications Windows 8.x StoreWindows 8.x Store à partir d'un fichier .resources incorporé dans un assembly .NET Framework.In the .NET Framework 4.5.NET Framework 4.5, Resource File Generator (Resgen.exe) enables you to create a .resw file for use in Windows 8.x StoreWindows 8.x Store apps from a .resources file embedded in a .NET Framework assembly. Pour plus d’informations, consultez Resgen.exe (Resource File Generator).For more information, see Resgen.exe (Resource File Generator).

L'outil d'optimisation guidée par profil managé (Mpgo.exe) vous permet d'améliorer le temps de démarrage de l'application, l'utilisation de la mémoire (taille du jeu de travail) et le débit en optimisant les assemblys d'image natifs.Managed Profile Guided Optimization (Mpgo.exe) enables you to improve application startup time, memory utilization (working set size), and throughput by optimizing native image assemblies. L'outil en ligne de commande génère des données de profil pour les assemblys natifs d'application graphique.The command-line tool generates profile data for native image application assemblies. Consultez Mpgo.exe (Outil d’optimisation guidée par profil managé).See Mpgo.exe (Managed Profile Guided Optimization Tool). Depuis Visual Studio 2013, vous pouvez utiliser Mpgo.exe pour optimiser les applications Windows 8.x StoreWindows 8.x Store, ainsi que les applications de bureau.Starting with Visual Studio 2013, you can use Mpgo.exe to optimize Windows 8.x StoreWindows 8.x Store apps as well as desktop apps.

Calcul parallèleParallel computing

.NET Framework 4.5.NET Framework 4.5 fournit plusieurs nouvelles fonctionnalités et améliorations pour le calcul parallèle.The .NET Framework 4.5.NET Framework 4.5 provides several new features and improvements for parallel computing. Il s'agit notamment de performances améliorées, d'un contrôle accru, d'une prise en charge améliorée pour la programmation asynchrone, d'une nouvelle bibliothèque de flux de données et d'une prise en charge améliorée pour le débogage parallèle et l'analyse des performances.These include improved performance, increased control, improved support for asynchronous programming, a new dataflow library, and improved support for parallel debugging and performance analysis. Consultez l’entrée relative aux nouveautés en matière de parallélisme dans .NET 4.5 dans le blog consacré à la programmation parallèle avec .NET.See the entry What’s New for Parallelism in .NET 4.5 in the Parallel Programming with .NET blog.

WebWeb

ASP.NET 4.5 et 4.5.1 ajoutent la liaison de modèle pour Web Forms, la prise en charge de WebSocket, les gestionnaires asynchrones, les améliorations de performances et de nombreuses autres fonctionnalités.ASP.NET 4.5 and 4.5.1 add model binding for Web Forms, WebSocket support, asynchronous handlers, performance enhancements, and many other features. Pour plus d'informations, reportez-vous aux ressources suivantes :For more information, see the following resources:

Réseaux Networking

.NET Framework 4.5.NET Framework 4.5 fournit une nouvelle interface de programmation pour les applications HTTP.The .NET Framework 4.5.NET Framework 4.5 provides a new programming interface for HTTP applications. Pour plus d'informations, consultez les nouveaux espaces de noms System.Net.Http et System.Net.Http.Headers.For more information, see the new System.Net.Http and System.Net.Http.Headers namespaces.

La prise en charge d'une nouvelle interface de programmation permettant d'accepter et d'interagir avec une connexion de WebSocket à l'aide de la classe HttpListener existante et des classes associées est également incluse.Support is also included for a new programming interface for accepting and interacting with a WebSocket connection by using the existing HttpListener and related classes. Pour plus d'informations, consultez le nouvel espace de noms System.Net.WebSockets et la classe HttpListener.For more information, see the new System.Net.WebSockets namespace and the HttpListener class.

En outre, .NET Framework 4.5.NET Framework 4.5 inclut les améliorations de mise en réseau suivantes :In addition, the .NET Framework 4.5.NET Framework 4.5 includes the following networking improvements:

  • Prise en charge URI conforme aux documents RFC.RFC-compliant URI support. Pour plus d'informations, consultez Uri et les classes associées.For more information, see Uri and related classes.

  • Prise en charge des analyses du nom de domaine international (IDN, Internationalized Domain Name).Support for Internationalized Domain Name (IDN) parsing. Pour plus d'informations, consultez Uri et les classes associées.For more information, see Uri and related classes.

  • Prise en charge de l'internationalisation des adresses de messagerie.Support for Email Address Internationalization (EAI). Pour plus d'informations, consultez l'espace de noms System.Net.Mail.For more information, see the System.Net.Mail namespace.

  • Prise en charge d'IPv6 améliorée.Improved IPv6 support. Pour plus d'informations, consultez l'espace de noms System.Net.NetworkInformation.For more information, see the System.Net.NetworkInformation namespace.

  • Prise en charge du socket en mode double.Dual-mode socket support. Pour plus d'informations, consultez la classe Socket et TcpListener.For more information, see the Socket and TcpListener classes.

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)

Dans .NET Framework 4.5.NET Framework 4.5, Windows Presentation Foundation (WPF) présente des modifications et des améliorations dans les domaines suivants :In the .NET Framework 4.5.NET Framework 4.5, Windows Presentation Foundation (WPF) contains changes and improvements in the following areas:

  • Le nouveau contrôle Ribbon, qui vous permet d'implémenter une interface utilisateur de type ruban hébergeant une barre d'outils Accès rapide, un menu d'application et des onglets.The new Ribbon control, which enables you to implement a ribbon user interface that hosts a Quick Access Toolbar, Application Menu, and tabs.

  • La nouvelle interface INotifyDataErrorInfo, qui prend en charge la validation synchrone et asynchrone des données.The new INotifyDataErrorInfo interface, which supports synchronous and asynchronous data validation.

  • Nouvelles fonctionnalités des classes VirtualizingPanel et Dispatcher.New features for the VirtualizingPanel and Dispatcher classes.

  • Performances améliorées lors de l'affichage de grands ensembles de données groupées et lors de l'accès aux collections sur les threads autres que ceux d'interface utilisateur.Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.

  • Liaison de données aux propriétés statiques, liaison de données aux types personnalisés qui implémentent l'interface ICustomTypeProvider et extraction des informations de liaison de données à partir d'une expression de liaison.Data binding to static properties, data binding to custom types that implement the ICustomTypeProvider interface, and retrieval of data binding information from a binding expression.

  • Repositionnement des données au fur et à mesure du changement des valeurs (mise en forme active).Repositioning of data as the values change (live shaping).

  • Possibilité de vérifier si le contexte de données d'un conteneur d'éléments est déconnecté.Ability to check whether the data context for an item container is disconnected.

  • Possibilité de définir la durée qui doit s'écouler entre les modifications de propriété et les mises à jour de la source de données.Ability to set the amount of time that should elapse between property changes and data source updates.

  • Prise en charge améliorée pour implémenter des modèles d'événement faible.Improved support for implementing weak event patterns. De plus, les événements peuvent maintenant accepter des extensions de balisage.Also, events can now accept markup extensions.

Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)

Dans .NET Framework 4.5.NET Framework 4.5, les fonctionnalités suivantes ont été ajoutées pour faciliter l'écriture et l'entretien des applications Windows Communication Foundation (WCF) :In the .NET Framework 4.5.NET Framework 4.5, the following features have been added to make it simpler to write and maintain Windows Communication Foundation (WCF) applications:

  • Simplification des fichiers de configuration générés.Simplification of generated configuration files.

  • Prise en charge du développement Contrat en premier.Support for contract-first development.

  • Possibilité de configurer plus facilement le mode de compatibilité ASP.NET.Ability to configure ASP.NET compatibility mode more easily.

  • Modifications des valeurs de propriété de transport par défaut pour réduire la probabilité d'avoir à les définir.Changes in default transport property values to reduce the likelihood that you will have to set them.

  • Mises à jour de la classe XmlDictionaryReaderQuotas afin de réduire la probabilité d'avoir à configurer manuellement les quotas pour les lecteurs de dictionnaire XML.Updates to the XmlDictionaryReaderQuotas class to reduce the likelihood that you will have to manually configure quotas for XML dictionary readers.

  • Validation des fichiers de configuration WCF par Visual Studio dans le cadre du processus de génération, afin que vous puissiez détecter les erreurs de configuration avant d'exécuter votre application.Validation of WCF configuration files by Visual Studio as part of the build process, so you can detect configuration errors before you run your application.

  • Nouvelle prise en charge de la diffusion en continu asynchrone.New asynchronous streaming support.

  • Nouveau mappage de protocole HTTPS pour simplifier l'exposition d'un point de terminaison via HTTPS à l'aide des services Internet (IIS).New HTTPS protocol mapping to make it easier to expose an endpoint over HTTPS with Internet Information Services (IIS).

  • Possibilité de générer des métadonnées dans un document WSDL unique en ajoutant ?singleWSDL à l'URL de service.Ability to generate metadata in a single WSDL document by appending ?singleWSDL to the service URL.

  • Prise en charge Websockets pour activer une véritable communication bidirectionnelle sur les ports 80 et 443 avec des caractéristiques de performances semblables à celles du transport TCP.Websockets support to enable true bidirectional communication over ports 80 and 443 with performance characteristics similar to the TCP transport.

  • Prise en charge de la configuration des services dans le code.Support for configuring services in code.

  • Info-bulles de l'éditeur XML.XML Editor tooltips.

  • Prise en charge de la mise en cache de ChannelFactory.ChannelFactory caching support.

  • Prise en charge de la compression d'encodage binaire.Binary encoder compression support.

  • Prise en charge d'un transport UDP qui permet aux développeurs d'écrire des services qui utilisent une messagerie de type « Fire and Forget » (déclenché et oublié).Support for a UDP transport that enables developers to write services that use "fire and forget" messaging. Un client envoie un message à un service et n'attend aucune réponse de ce dernier.A client sends a message to a service and expects no response from the service.

  • Possibilité de prendre en charge plusieurs modes d'authentification sur un point de terminaison WCF unique lors de l'utilisation du transport HTTP et de la sécurité du transport.Ability to support multiple authentication modes on a single WCF endpoint when using the HTTP transport and transport security.

  • Prise en charge des services WCF qui utilisent des noms IDN.Support for WCF services that use internationalized domain names (IDNs).

Pour plus d’informations, consultez Nouveautés dans Windows Communication Foundation.For more information, see What's New in Windows Communication Foundation.

Windows Workflow Foundation (WF)Windows Workflow Foundation (WF)

Dans .NET Framework 4.5.NET Framework 4.5, plusieurs nouvelles fonctionnalités ont été ajoutées à Windows Workflow Foundation (WF), notamment :In the .NET Framework 4.5.NET Framework 4.5, several new features were added to Windows Workflow Foundation (WF), including:

  • Flux de travail de la machine à états, qui ont été introduits pour la première fois dans le cadre de .NET Framework 4.0.1 (.NET Framework 4 Platform Update 1).State machine workflows, which were first introduced as part of the .NET Framework 4.0.1 (.NET Framework 4 Platform Update 1). Cette mise à jour comprenait plusieurs classes et activités nouvelles qui permettaient aux développeurs de créer des flux de travail de machine à états.This update included several new classes and activities that enabled developers to create state machine workflows. Ces classes et activités ont été mises à jour pour que .NET Framework 4.5.NET Framework 4.5 inclue les fonctionnalités suivantes :These classes and activities were updated for the .NET Framework 4.5.NET Framework 4.5 to include:

    • Possibilité de définir des points d'arrêt sur les états.The ability to set breakpoints on states.

    • Possibilité de copier et coller des transitions dans le concepteur de workflow.The ability to copy and paste transitions in the workflow designer.

    • Prise en charge du concepteur pour la création de transitions de déclencheur partagées.Designer support for shared trigger transition creation.

    • Activités de création de flux de travail de machine à états, notamment : StateMachine, State et Transition.Activities for creating state machine workflows, including: StateMachine, State, and Transition.

  • Fonctionnalités améliorées du Concepteur de flux de travail, dont notamment :Enhanced Workflow Designer features such as the following:

    • Fonctions de recherche de flux de travail améliorées dans Visual Studio, notamment Recherche rapide et Rechercher dans les fichiers.Enhanced workflow search capabilities in Visual Studio, including Quick Find and Find in Files.

    • Possibilité de créer automatiquement une activité de séquence lorsqu'une deuxième activité enfant est ajoutée à une activité de conteneur, et d'inclure les deux activités dans l'activité de séquence.Ability to automatically create a Sequence activity when a second child activity is added to a container activity, and to include both activities in the Sequence activity.

    • Prise en charge des panoramiques, ce qui permet à la partie visible d'un flux de travail d'être modifiée sans utiliser les barres de défilement.Panning support, which enables the visible portion of a workflow to be changed without using the scroll bars.

    • Nouvelle vue Structure du document qui affiche les composants d’un flux de travail en mode Plan sous forme d’arborescence et vous permet de sélectionner un composant dans la vue Structure du document.A new Document Outline view that shows the components of a workflow in a tree-style outline view and lets you select a component in the Document Outline view.

    • Possibilité d'ajouter des annotations aux activités.Ability to add annotations to activities.

    • Possibilité de définir et d'utiliser des délégués d'activité à l'aide du Concepteur de flux de travail.Ability to define and consume activity delegates by using the workflow designer.

    • Connexion automatique et insertion automatique des activités et des transitions dans les flux de travail de machine à états et d'organigramme.Auto-connect and auto-insert for activities and transitions in state machine and flowchart workflows.

  • Stockage des informations d'état d'affichage pour un flux de travail dans un élément unique du fichier XAML, afin que vous puissiez facilement localiser et modifier les informations sur l'état d'affichage.Storage of the view state information for a workflow in a single element in the XAML file, so you can easily locate and edit the view state information.

  • Activité de conteneur NoPersistScope pour empêcher les activités enfants de devenir persistantes.A NoPersistScope container activity to prevent child activities from persisting.

  • Prise en charge des expressions C# :Support for C# expressions:

    • Les projets de flux de travail qui utilisent Visual Basic utiliseront les expressions Visual Basic et les projets de flux de travail C# utiliseront les expressions C#.Workflow projects that use Visual Basic will use Visual Basic expressions, and C# workflow projects will use C# expressions.

    • Les projets de flux de travail C# qui ont été créés dans Visual Studio 2010 et qui possèdent des expressions Visual Basic sont compatibles avec les projets de flux de travail C# qui utilisent des expressions C#.C# workflow projects that were created in Visual Studio 2010 and that have Visual Basic expressions are compatible with C# workflow projects that use C# expressions.

  • Améliorations du contrôle de version :Versioning enhancements:

    • Nouvelle classe WorkflowIdentity, qui fournit un mappage entre une instance de flux de travail rendue persistante et sa définition de flux de travail.The new WorkflowIdentity class, which provides a mapping between a persisted workflow instance and its workflow definition.

    • Exécution côte à côte de plusieurs versions de flux de travail dans le même hôte, y compris WorkflowServiceHost.Side-by-side execution of multiple workflow versions in the same host, including WorkflowServiceHost.

    • Dans une mise à jour dynamique, capacité à modifier la définition d'une instance de flux de travail rendue persistante.In Dynamic Update, the ability to modify the definition of a persisted workflow instance.

  • Développement de services de workflow « Contrat en premier », ce qui permet de générer automatiquement les activités correspondants à un contrat de service existant.Contract-first workflow service development, which provides support for automatically generating activities to match an existing service contract.

Pour plus d’informations, consultez Nouveautés de Windows Workflow Foundation.For more information, see What's New in Windows Workflow Foundation.

.NET pour les applications Windows 8.x Store.NET for Windows 8.x Store apps

Les applications Windows 8.x StoreWindows 8.x Store sont conçues pour des facteurs de forme spécifiques et tirent parti de la puissance du système d'exploitation Windows.Windows 8.x StoreWindows 8.x Store apps are designed for specific form factors and leverage the power of the Windows operating system. Un sous-ensemble de .NET Framework 4.5.NET Framework 4.5 ou 4.5.1 est disponible pour générer des applications Windows 8.x StoreWindows 8.x Store pour Windows à l'aide de C# ou de Visual Basic.A subset of the .NET Framework 4.5.NET Framework 4.5 or 4.5.1 is available for building Windows 8.x StoreWindows 8.x Store apps for Windows by using C# or Visual Basic. Ce sous-ensemble s’appelle .NET pour les applications Windows 8.x Store.NET for Windows 8.x Store apps et est décrit dans une vue d’ensemble disponible dans le Centre de développement Windows.This subset is called .NET pour les applications Windows 8.x Store.NET for Windows 8.x Store apps and is discussed in an overview in the Windows Dev Center.

Bibliothèques de classes portablesPortable Class Libraries

Le projet Bibliothèque de classes portable dans Visual Studio 2012 (et les versions ultérieures) vous permet d'écrire et de générer des assemblys managés qui fonctionnent sur plusieurs plateformes .NET Framework.The Portable Class Library project in Visual Studio 2012 (and later versions) enables you to write and build managed assemblies that work on multiple .NET Framework platforms. Un projet Bibliothèque de classes portable vous permet de choisir les plateformes (telles que Windows Phone et .NET pour les applications Windows 8.x Store.NET for Windows 8.x Store apps) à cibler.Using a Portable Class Library project, you choose the platforms (such as Windows Phone and .NET pour les applications Windows 8.x Store.NET for Windows 8.x Store apps) to target. Les types et les membres disponibles dans votre projet sont automatiquement restreints aux types et aux membres communs entre ces plateformes.The available types and members in your project are automatically restricted to the common types and members across these platforms. Pour plus d’informations, consultez Bibliothèque de classes portable.For more information, see Portable Class Library.

Voir aussiSee also