Novedades de .NET Framework What's new in the .NET Framework

En este artículo se resumen las nuevas características y mejoras en las siguientes versiones de .NET Framework:This article summarizes key new features and improvements in the following versions of the .NET Framework:

Este artículo no proporciona información completa sobre cada una de las características nuevas y puede estar sujeto a cambios.This article does not provide comprehensive information about each new feature and is subject to change. Para obtener información general sobre .NET Framework, vea Introducción.For general information about the .NET Framework, see Getting Started. Para conocer las plataformas compatibles, vea Requisitos de sistema.For supported platforms, see System Requirements. Para obtener vínculos de descarga e instrucciones de instalación, vea Instalar.For download links and installation instructions, see Installation Guide.

Nota

El equipo de .NET Framework también publica características fuera de banda con NuGet para expandir la compatibilidad con la plataforma e introducir nuevas funciones (como colecciones invariables y tipos de vector habilitados para 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. Para obtener más información, vea Las API y las bibliotecas de clases adicionales y .NET Framework y versiones fuera de banda.For more information, see Additional Class Libraries and APIs and The .NET Framework and Out-of-Band Releases. Vea una lista completa de paquetes NuGet para .NET Framework o suscríbase a nuestra fuente.See a complete list of NuGet packages for the .NET Framework, or subscribe to our feed.

Introducción a .NET Framework 4.7.2Introducing the .NET Framework 4.7.2

.NET Framework 4.7.2 se basa en las versiones anteriores de .NET Framework 4.x mediante la adición de muchas correcciones nuevas y varias características nuevas, sin dejar de ser un producto muy estable.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.

Descarga e instalación de .NET Framework 4.7.2Downloading and installing the .NET Framework 4.7.2

Puede descargar .NET Framework 4.7.2 de las ubicaciones siguientes:You can download the .NET Framework 4.7.2 from the following locations:

.NET Framework 4.7.2 se puede instalar en Windows 10, Windows 8.1, Windows 7 SP1 y las plataformas de servidor correspondientes a 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. Puede instalar .NET Framework 4.7.2 mediante el instalador web o el instalador sin conexión.You can install the .NET Framework 4.7.2 by using either the web installer or the offline installer. La manera recomendada para la mayoría de los usuarios es usar el programa de instalación web.The recommended way for most users is to use the web installer.

Puede usar como destino .NET Framework 4.7.2 en Visual Studio 2012 o una versión posterior mediante la instalación del Paquete de desarrollador de .NET Framework 4.7.2.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.

Novedades de .NET Framework 4.7.2What's new in the .NET Framework 4.7.2

.NET Framework 4.7.2 incluye características nuevas en las áreas siguientes:The .NET Framework 4.7.2 includes new features in the following areas:

Un aspecto muy importante de .NET Framework 4.7.2 es mejorar la accesibilidad, lo que permite que una aplicación proporcione una experiencia adecuada para los usuarios de tecnología de asistencia.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. Para obtener información sobre las mejoras de accesibilidad en .NET Framework 4.7.2, vea Novedades de accesibilidad en .NET Framework.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 ofrece un gran número de mejoras criptográficas, mayor compatibilidad de descompresión de archivos ZIP y API de colección adicionales.The .NET Framework 4.7.2 features a large number of cryptographic enhancements, better decompression support for ZIP archives, and additional collection APIs.

Nuevas sobrecargas de RSA.Create y DSA.CreateNew overloads of RSA.Create and DSA.Create

Los métodos DSA.Create(DSAParameters) y RSA.Create(RSAParameters) permiten especificar parámetros de clave cuando se crea una instancia de una clave DSA o RSA.The DSA.Create(DSAParameters) and RSA.Create(RSAParameters) methods let you supply key parameters when instantiated a new DSA or RSA key. Permiten reemplazar código similar al siguiente: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

con código como este: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

Los métodos DSA.Create(Int32) y RSA.Create(Int32) permiten generar claves DSA o RSA nuevas con un tamaño de clave específico.The DSA.Create(Int32) and RSA.Create(Int32) methods let you generate new DSA or RSA keys with a specific key size. Por ejemplo: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

Los constructores de Rfc2898DeriveBytes aceptan un nombre de algoritmo hashRfc2898DeriveBytes constructors accept a hash algorithm name

La clase Rfc2898DeriveBytes tiene tres constructores nuevos con un parámetro HashAlgorithmName que identifica el algoritmo HMAC que se va a usar en la derivación de las claves.The Rfc2898DeriveBytes class has three new constructors with a HashAlgorithmName parameter that identifies the HMAC algorithm to use when deriving keys. En lugar de usar SHA-1, los programadores deben usar un algoritmo HMAC basado en SHA-2 como SHA-256, como se muestra en el ejemplo siguiente: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

Compatibilidad con claves efímerasSupport for ephemeral keys

La importación de PFX puede cargar de manera opcional las claves privadas directamente desde la memoria, omitiendo la unidad de disco duro.PFX import can optionally load private keys directly from memory, bypassing the hard drive. Cuando se especifica la marca X509KeyStorageFlags.EphemeralKeySet nueva en un constructor de X509Certificate2 o una de las sobrecargas del método X509Certificate2.Import, las claves privadas se cargarán como claves efímeras. 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. Esto impide que las claves sean visibles en el disco.This prevents the keys from being visible on the disk. Pero:However:

  • Como las claves no se conservan en el disco, los certificados que se cargan con esta marca no son buenos candidatos para agregar a un X509Store.Since the keys are not persisted to disk, certificates loaded with this flag are not good candidates to add to an X509Store.

  • Las claves que se cargan de esta manera casi siempre se cargan a través de CNG de Windows.Keys loaded in this manner are almost always loaded via Windows CNG. Por tanto, los autores de la llamada deben tener acceso a la clave privada mediante la llamada a métodos de extensión, como cert.GetRSAPrivateKey().Therefore, callers must access the private key by calling extension methods, such as cert.GetRSAPrivateKey(). La propiedad X509Certificate2.PrivateKey no funciona.The X509Certificate2.PrivateKey property does not function.

  • Como la propiedad X509Certificate2.PrivateKey heredada no funciona con los certificados, los desarrolladores deben realizar pruebas rigurosas antes de cambiar a las claves efímeras.Since the legacy X509Certificate2.PrivateKey property does not work with certificates, developers should perform rigorous testing before switching to ephemeral keys.

Creación mediante programación de solicitudes de firma de certificación de PKCS#10 y certificados de clave pública X.509Programmatic creation of PKCS#10 certification signing requests and X.509 public key certificates

A partir de .NET Framework 4.7.2, las cargas de trabajo pueden generar solicitudes de firma de certificado (CSR), lo que permite que la generación de solicitudes de certificado se almacene provisionalmente en las herramientas existentes.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. Esto es útil en muchas ocasiones en escenarios de prueba.This is frequently useful in test scenarios.

Para obtener más información y ejemplos de código, vea "Programmatic creation of PKCS#10 certification signing requests and X.509 public key certificates" (Creación mediante programación de solicitudes de firma de certificación de PKCS#10 y certificados de clave pública X.509) en el blog de .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.

Nuevos miembros SignerInfoNew SignerInfo members

A partir de .NET Framework 4.7.2, la clase SignerInfo expone más información sobre la firma.Starting with the .NET Framework 4.7.2, the SignerInfo class exposes more information about the signature. Se puede recuperar el valor de la propiedad System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm para determinar el algoritmo de firma que usa el firmante.You can retrieve the value of the System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm property to determine the signature algorithm used by the signer. Se puede llamar a SignerInfo.GetSignature para obtener una copia de la firma criptográfica para este firmante.SignerInfo.GetSignature can be called to get a copy of the cryptographic signature for this signer.

Mantener abierta una secuencia ajustada después de eliminar CryptoStreamLeaving a wrapped stream open after CryptoStream is disposed

A partir de .NET Framework 4.7.2, la clase CryptoStream tiene un constructor adicional que permite que Dispose no cierre la secuencia ajustada.Starting with the .NET Framework 4.7.2, the CryptoStream class has an additional constructor that allows Dispose to not close the wrapped stream. Para dejar abierta la secuencia ajustada después de eliminar la instancia de CryptoStream, llame al nuevo constructor de CryptoStream como se indica a continuación: 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)

Cambios de descompresión en DeflateStreamDecompression changes in DeflateStream

A partir de .NET Framework 4.7.2, la implementación de las operaciones de descompresión en la clase DeflateStream ha cambiado para usar las API nativas de Windows de forma predeterminada.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. Normalmente, esto da como resultado una mejora considerable del rendimiento.Typically, this results in a substantial performance improvement.

La compatibilidad para la descompresión mediante las API de Windows está habilitada de forma predeterminada para las aplicaciones que tienen como destino .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. Las aplicaciones que tienen como destino versiones anteriores de .NET Framework pero que se ejecutan en .NET Framework 4.7.2 pueden participar en este comportamiento mediante la adición del modificador de AppContext siguiente al archivo de configuración de la aplicación: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 colección adicionalesAdditional collection APIs

En .NET Framework 4.7.2 se agregan varias API nuevas a los tipos SortedSet<T> y HashSet<T>.The .NET Framework 4.7.2 adds a number of new APIs to the SortedSet<T> and HashSet<T> types. Se incluyen los siguientes:These include:

La clase ConcurrentDictionary<TKey,TValue> incluye sobrecargas nuevas de los métodos AddOrUpdate y GetOrAdd para recuperar un valor del diccionario o para agregarlo si no se encuentra, y para agregar un valor al diccionario o actualizarlo si ya existe.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

Compatibilidad con la inserción de dependencias en formularios Web FormsSupport for dependency injection in Web Forms

La inserción de dependencias (DI) desacopla los objetos y sus dependencias para que ya no sea necesario cambiar el código de un objeto solo porque haya cambiado una dependencia.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. Al desarrollar aplicaciones de ASP.NET que tienen como destino .NET Framework 4.7.2, se puede:When developing ASP.NET applications that target the .NET Framework 4.7.2, you can:

Compatibilidad con cookies de SameSiteSupport for same-site cookies

SameSite impide que un explorador envíe una cookie junto con una solicitud entre sitios.SameSite prevents a browser from sending a cookie along with a cross-site request. .NET Framework 4.7.2 agrega una propiedad HttpCookie.SameSite cuyo valor es un miembro de la enumeración System.Web.SameSiteMode.The .NET Framework 4.7.2 adds a HttpCookie.SameSite property whose value is a System.Web.SameSiteMode enumeration member. Si su valor es SameSiteMode.Strict o SameSiteMode.Lax, ASP.NET agrega el atributo SameSite al encabezado set-cookie.If its value is SameSiteMode.Strict or SameSiteMode.Lax, ASP.NET adds the SameSite attribute to the set-cookie header. La compatibilidad con SameSite se aplica a los objetos HttpCookie, y también a las cookies FormsAuthentication y System.Web.SessionState.SameSite support applies to HttpCookie objects, as well as to FormsAuthentication and System.Web.SessionState cookies.

Puede establecer SameSite para un objeto HttpCookie de esta forma: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

También se pueden configurar cookies de SameSite en el nivel de aplicación si se modifica el archivo 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>

Se puede agregar SameSite para las cookies FormsAuthentication y System.Web.SessionState si se modifica el archivo de configuración 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>

RedesNetworking

Implementación de propiedades de HttpClientHandlerImplementation of HttpClientHandler properties

En .NET Framework 4.7.1 se agregaron ocho propiedades a la clase System.Net.Http.HttpClientHandler.The .NET Framework 4.7.1 added eight properties to the System.Net.Http.HttpClientHandler class. Pero dos de ellas iniciaban una excepción PlatformNotSupportedException.However, two threw a PlatformNotSupportedException. En .NET Framework 4.7.2 ahora se proporciona una implementación para estas propiedades.The .NET Framework 4.7.2 now provides an implementation for these properties. Las propiedades son las siguientes:The properties are:

SQLClientSQLClient

Compatibilidad con la autenticación universal y Multi-Factor Authentication de Azure Active DirectorySupport for Azure Active Directory Universal Authentication and Multi-Factor authentication

Las necesidades crecientes de seguridad y cumplimiento requieren que muchos clientes usen Multi-Factor Authentication (MFA).Growing compliance and security demands require that many customers use multi-factor authentication (MFA). Además, los procedimientos recomendados actuales desaconsejan incluir las contraseñas de usuario directamente en las cadenas de conexión.In addition, current best practices discourage including user passwords directly in connection strings. Para admitir estos cambios, en .NET Framework 4.7.2 se extienden las cadenas de conexión de SQLClient mediante la adición de un valor nuevo, "Active Directory Interactive", para la palabra clave "Authentication" existente para admitir MFA y Autenticación de Azure AD.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. El nuevo método interactivo admite los usuarios nativos y federados de Azure AD, así como los usuarios invitados de Azure AD.The new interactive method supports native and federated Azure AD users as well as Azure AD guest users. Cuando se usa este método, se admite la autenticación MFA impuesta por Azure AD para las bases de datos SQL.When this method is used, the MFA authentication imposed by Azure AD is supported for SQL databases. Además, el proceso de autenticación solicita una contraseña de usuario para cumplir con los procedimientos recomendados de seguridad.In addition, the authentication process requests a user password to adhere to security best practices.

En versiones anteriores de .NET Framework, la conectividad SQL solo admitía las opciones SqlAuthenticationMethod.ActiveDirectoryPassword y SqlAuthenticationMethod.ActiveDirectoryIntegrated.In previous versions of the .NET Framework, SQL connectivity supported only the SqlAuthenticationMethod.ActiveDirectoryPassword and SqlAuthenticationMethod.ActiveDirectoryIntegrated options. Ambas forman parte del protocolo ADAL no interactivo, que no admite MFA.Both of these are part of the non-interactive ADAL protocol, which does not support MFA. Con la nueva opción SqlAuthenticationMethod.ActiveDirectoryInteractive, la conectividad SQL es compatible con MFA, así como los métodos de autenticación existentes (contraseña y autenticación integrada), lo que permite a los usuarios escribir las contraseñas de usuario de manera interactiva sin guardarlas en la cadena de conexión.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.

Para obtener más información y un ejemplo, vea "SQL -- Azure AD Universal and Multi-factor Authentication Support" (SQL: Compatibilidad con la autenticación universal y Multi-Factor Authentication de Azure AD) en el blog de .NET.For more information and an example, see "SQL -- Azure AD Universal and Multi-factor Authentication Support" in the .NET Blog.

Compatibilidad con la versión 2 de Always EncryptedSupport for Always Encrypted version 2

En .NET Framework 4.7.2 se agrega compatibilidad con Always Encrypted basada en enclave.NET Framework 4.7.2 adds supports for enclave-based Always Encrypted. La versión original de Always Encrypted es una tecnología de cifrado del lado cliente en la que las claves de cifrado nunca salen del cliente.The original version of Always Encrypted is a client-side encryption technology in which encryption keys never leave the client. En Always Encrypted basada en enclave, el cliente puede enviar opcionalmente las claves de cifrado a un enclave seguro, que es una entidad de cálculo segura que se puede considerar parte de SQL Server pero que el código de SQL Server no puede alterar.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. Para admitir Always Encrypted basada en enclave, en .NET Framework 4.7.2 se agregan los tipos y miembros siguientes al espacio de nombres 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:

Después, el archivo de configuración de la aplicación especifica una implementación concreta de la clase abstracta System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider en la que se proporciona la funcionalidad para el proveedor de enclaves.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. Por ejemplo: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>

El flujo básico de Always Encrypted basada en enclave es el siguiente:The basic flow of enclave-based Always Encrypted is:

  1. El usuario crea una conexión de AlwaysEncrypted a SQL Server que admita Always Encrypted basada en enclave.The user creates an AlwaysEncrypted connection to SQL Server that supported enclave-based Always Encrypted. El controlador se pone en contacto con el servicio de atestación para asegurarse de que se está conectando al enclave correcto.The driver contacts the attestation service to ensure that it is connecting to right enclave.

  2. Una vez comprobado al enclave, el controlador establece un canal seguro con el enclave seguro alojado en SQL Server.Once the enclave has been attested, the driver establishes a secure channel with the secure enclave hosted on SQL Server.

  3. El controlador comparte las claves de cifrado autorizadas por el cliente con el enclave seguro para la duración de la conexión 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

Búsqueda de objetos ResourceDictionary por origenFinding ResourceDictionaries by Source

A partir de .NET Framework 4.7.2, un asistente de diagnóstico puede localizar los  ResourceDictionaries que se han creado desde un URI de origen determinado.Starting with the .NET Framework 4.7.2, a diagnostic assistant can locate the ResourceDictionaries that have been created from a given source Uri. (Esta característica es para uso por parte de los asistentes de diagnóstico, no por las aplicaciones de producción). Un asistente de diagnóstico, como la opción "Editar y continuar" de Visual Studio, permite al usuario editar un objeto ResourceDictionary con la intención de que los cambios se puedan aplicar a la aplicación en ejecución. (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. Un paso para lograr esto consiste en buscar todos los objetos ResourceDictionary que la aplicación en ejecución ha creado a partir del diccionario que se está editando.One step in achieving this is finding all the ResourceDictionaries that the running application has created from the dictionary that’s being edited. Por ejemplo, una aplicación puede declarar un objeto ResourceDictionary cuyo contenido se copia desde un URI de origen determinado:For example, an application can declare a ResourceDictionary whose content is copied from a given source URI:

<ResourceDictionary Source="MyRD.xaml">

Un asistente de diagnóstico que edite el marcado original en MyRD.xaml  puede usar la característica nueva para buscar el diccionario.A diagnostic assistant that edits the original markup in MyRD.xaml can use the new feature to locate the dictionary. La característica se implementa mediante un método estático nuevo, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. The feature is implemented by a new static method, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. El asistente de diagnóstico llama al método nuevo mediante un URI absoluto que identifica el marcado original, como se muestra en el código siguiente: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"))

El método devuelve un enumerable vacío a menos que se habilite  VisualDiagnostics y se establezca la variable de entorno ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO .The method returns an empty enumerable unless VisualDiagnostics is enabled and the ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO environment variable is set.

Buscar los propietarios de ResourceDictionaryFinding ResourceDictionary owners

A partir de .NET Framework 4.7.2, un asistente de diagnóstico puede localizar los propietarios de un objeto ResourceDictionary determinado.Starting with the .NET Framework 4.7.2, a diagnostic assistant can locate the owners of a given ResourceDictionary. (La característica está pensada para que la usen los asistentes de diagnóstico, no las aplicaciones de producción). Siempre que se realice un cambio en un ResourceDictionary, WPF busca automáticamente todas las referencias DynamicResource que es posible que se vean afectadas por el cambio. (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 asistente de diagnóstico como la opción "Editar y continuar" de Visual Studio puede extender esta opción para controlar las referencias StaticResource.A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility may want extend this to handle StaticResource references. El primer paso de este proceso consiste en encontrar los propietarios del diccionario; es decir, buscar todos los objetos cuya propiedad Resources hace referencia al diccionario (ya sea directa o indirectamente a través de la propiedad 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). Tres métodos estáticos nuevos implementadas en la clase System.Windows.Diagnostics.ResourceDictionaryDiagnostics, uno para cada uno de los tipos base que tengan una propiedad Resources, admiten este paso: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:

Estos métodos devuelven un enumerable vacío a menos que se habilite  VisualDiagnostics y se establezca la variable de entorno ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO .These methods return an empty enumerable unless VisualDiagnostics is enabled and the ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO environment variable is set.

Buscar referencias StaticResourceFinding StaticResource references

Ahora un asistente de diagnóstico puede recibir una notificación cada vez que se resuelva una referencia StaticResource.A diagnostic assistant can now receive a notification whenever a StaticResource reference is resolved. (La característica está pensada para que la usen los asistentes de diagnóstico, no las aplicaciones de producción). Es posible que un asistente de diagnóstico, como la opción "Editar y continuar" de Visual Studio, quiera actualizar todos los usos de un recurso cuando cambie su valor en un objeto ResourceDictionary. (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 hace esto automáticamente para las referencias DynamicResource, pero no deliberadamente para las referencias StaticResource.WPF does this automatically for DynamicResource references, but it intentionally does not do so for StaticResource references. A partir de .NET Framework 4.7.2, el asistente de diagnóstico puede usar estas notificaciones para buscar esos usos del recurso estático.Starting with the .NET Framework 4.7.2, the diagnostic assistant can use these notifications to locate those uses of the static resource.

La notificación se implementa mediante el nuevo evento 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)

Este evento se desencadena cuando el tiempo de ejecución resuelve una referencia StaticResource.This event is raised whenever the runtime resolves a StaticResource reference. Los argumentos de StaticResourceResolvedEventArgs describen la resolución e indican el objeto y la propiedad que hospedan la referencia StaticResource y el objeto  ResourceDictionary y la clave que se usan para la resolución: 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; }
}

El evento no se desencadena y su descriptor de acceso add se ignora, a menos que se habilite  VisualDiagnostics y se establezca la variable de entorno ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO .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

Las aplicaciones compatibles con HDPI para Windows Forms, Windows Presentation Foundation (WPF) y Visual Studio Tools para Office (VSTO) se pueden implementar mediante 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 la entrada siguiente se encuentra en el manifiesto de aplicación, se podrá completar correctamente la implementación en .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>

Para la aplicación de Windows Forms, la solución anterior de establecer el reconocimiento de PPP en el archivo de configuración de la aplicación en lugar de en el manifiesto de aplicación ya no es necesaria para que la implementación de ClickOnce sea correcta.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.

Novedades de .NET Framework 4.7.1What's new in the .NET Framework 4.7.1

.NET Framework 4.7.1 incluye nuevas características en las áreas siguientes:The .NET Framework 4.7.1 includes new features in the following areas:

Además, un aspecto muy importante de .NET Framework 4.7.1 es mejorar la accesibilidad, lo que permite que una aplicación proporcione una experiencia adecuada para los usuarios de tecnología de asistencia.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. Para obtener información sobre las mejoras de accesibilidad en .NET Framework 4.7.1, vea Novedades de accesibilidad en .NET Framework.For information on accessibility improvements in the .NET Framework 4.7.1, see What's new in accessibility in the .NET Framework.

PrincipalCore

Compatibilidad con .NET Standard 2.0Support for .NET Standard 2.0

.NET Standard define un conjunto de API que debe estar disponible en cada implementación de .NET que cumple con esa versión de Standard..NET Standard defines a set of APIs that must be available on each .NET implementation that supports that version of the standard. .NET Framework 4.7.1 es totalmente compatible con .NET Standard 2.0 y agrega unas doscientas API definidas en .NET Standard 2.0 y que no se encuentran en .NET Framework 4.6.1, 4.6.2 y 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. (Tenga en cuenta que estas versiones de .NET Framework son compatibles con .NET Standard 2.0 solo si también se implementan los archivos de compatibilidad adicionales de .NET Standard en el sistema de destino). Para más información, vea "BCL - .NET Standard 2.0 Support" (BCL: compatibilidad con .NET Standard 2.0) en la entrada de blog .NET Framework 4.7.1 Runtime and Compiler Features (Características del compilador y del tiempo de ejecución de NET Framework 4.7.1).(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.

Compatibilidad con los generadores de configuraciónSupport for configuration builders

Los generadores de configuración permiten a los desarrolladores insertar y crear valores de configuración de forma dinámica para aplicaciones en tiempo de ejecución.Configuration builders allow developers to inject and build configuration settings for applications dynamically at run time. Se pueden usar generadores de configuración personalizados para modificar datos existentes de una sección de configuración o para crear una sección de configuración totalmente desde cero.Custom configuration builders can be used to modify existing data in a configuration section or to build a configuration section entirely from scratch. Sin los generadores de configuración, los archivos .config son estáticos y sus valores se definen algún tiempo antes de que se inicie la aplicación.Without configuration builders, .config files are static, and their settings are defined some time before an application is launched.

Para crear un generador de configuración personalizado, derive el generador de la clase ConfigurationBuilder abstracta y reemplace sus métodos ConfigurationBuilder.ProcessConfigurationSection y 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. También debe definir los generadores en el archivo .config.You also define your builders in your .config file. Para más información, vea la sección "Configuration Builders" (Generadores de configuración) en la entrada de blog .NET Framework 4.7.1 ASP.NET and Configuration Features (Características de configuración y ASP.NET en .NET Framework 4.7.1).For more information, see the "Configuration Builders" section in the .NET Framework 4.7.1 ASP.NET and Configuration Features blog post.

Detección de características en tiempo de ejecuciónRun-time feature detection

La clase System.Runtime.CompilerServices.RuntimeFeature proporciona un mecanismo para determinar si se admite una característica predefinida en una determinada implementación de .NET en tiempo de compilación o en tiempo de ejecución.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. En tiempo de compilación, un compilador puede comprobar si existe un campo especificado para determinar si se admite la característica; si es así, puede emitir código que aprovecha las ventajas de la característica.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. En tiempo de ejecución, una aplicación puede llamar al método RuntimeFeature.IsSupported antes de emitir el código en tiempo de ejecución.At run time, an application can call the RuntimeFeature.IsSupported method before emitting code at runtime. Para obtener más información, vea Add helper method to describe features supported by the runtime (Adición de un método del asistente para describir características admitidas en tiempo de ejecución).For more information, see Add helper method to describe features supported by the runtime.

Los tipos value tuple son serializablesValue tuple types are serializable

A partir de .NET Framework 4.7.1, System.ValueTuple y sus tipos genéricos asociados se marcan como serializables, lo que permite la serialización binaria.Starting with the .NET Framework 4.7.1, System.ValueTuple and its associated generic types are marked as Serializable, which allows binary serialization. Esto facilita la migración de tipos tuple, como Tuple<T1,T2,T3> y Tuple<T1,T2,T3,T4>, a tipos value tuple.This should make migrating Tuple types, such as Tuple<T1,T2,T3> and Tuple<T1,T2,T3,T4>, to value tuple types easier. Para más información, vea "Compiler -- ValueTuple is Serializable" (Compilador: ValueTuple serializable) en la entrada de blog .NET Framework 4.7.1 Runtime and Compiler Features (Características del compilador y del tiempo de ejecución de .NET Framework 4.7.1).For more information, see "Compiler -- ValueTuple is Serializable" in the .NET Framework 4.7.1 Runtime and Compiler Features blog post.

Compatibilidad con referencias de solo lecturaSupport for read-only references

.NET Framework 4.7.1 agrega System.Runtime.CompilerServices.IsReadOnlyAttribute.The .NET Framework 4.7.1 adds the System.Runtime.CompilerServices.IsReadOnlyAttribute. Los compiladores de lenguaje utilizan este atributo para marcar los miembros que tienen parámetros o tipos de valor devuelto con referencias de solo lectura.This attribute is used by language compilers to mark members that have read-only ref return types or parameters. Para más información, vea "Compiler -- Support for ReadOnlyReferences" (Compilador: compatibilidad con referencias de solo lectura) en la entrada de blog .NET Framework 4.7.1 Runtime and Compiler Features (Características del compilador y del tiempo de ejecución de NET Framework 4.7.1).For more information, see "Compiler -- Support for ReadOnlyReferences" in the .NET Framework 4.7.1 Runtime and Compiler Features blog post. Para obtener información sobre los valores devueltos de referencia, vea Ref return values and ref locals (C# Guide) [Valores devueltos y variables locales de tipo ref (Guía de C#)] y Ref return values (Visual Basic) [Valores devueltos tipo ref (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)

Mejoras de rendimiento de la recolección de elementos no utilizadosGarbage collection performance improvements

Los cambios en la recolección de elementos no utilizados en .NET Framework 4.7.1 mejoran el rendimiento general, sobre todo para las asignaciones del montón de objetos grandes.Changes to garbage collection (GC) in the .NET Framework 4.7.1 improve overall performance, especially for Large Object Heap (LOH) allocations. En .NET Framework 4.7.1, se usan bloqueos independientes para las asignaciones de montón de objetos pequeños y de montón de objetos grandes, lo que permite que se realicen las asignaciones de montón de objetos grandes cuando la operación de GC en segundo plano (BGC) rastrea el montón de objetos pequeños.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. Como resultado, las aplicaciones que realizan un número elevado de asignaciones de montón de objetos grandes deben observar una reducción de la contención del bloqueo de asignación y un rendimiento mejorado.As a result, applications that make a large number of LOH allocations should see a reduction in allocation lock contention and improved performance. Para más información, vea la sección "Runtime - GC Performance Improvements" (Tiempo de ejecución: mejoras de rendimiento de GC) en la entrada de blog .NET Framework 4.7.1 Runtime and Compiler Features (Características del compilador y del tiempo de ejecución de NET Framework 4.7.1).For more information, see the "Runtime -- GC Performance Improvements" section in the .NET Framework 4.7.1 Runtime and Compiler Features blog post.

RedesNetworking

Compatibilidad de SHA-2 con Message.HashAlgorithmSHA-2 support for Message.HashAlgorithm

En .NET Framework 4.7 y en versiones anteriores, la propiedad Message.HashAlgorithm solo admitía los valores HashAlgorithm.Md5 y HashAlgorithm.Sha.In the .NET Framework 4.7 and earlier versions, the Message.HashAlgorithm property supported values of HashAlgorithm.Md5 and HashAlgorithm.Sha only. A partir de .NET Framework 4.7.1, también se admiten HashAlgorithm.Sha256, HashAlgorithm.Sha384 y HashAlgorithm.Sha512.Starting with the .NET Framework 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384, and HashAlgorithm.Sha512 are also supported. Si este valor se usa realmente, depende de MSMQ, ya que la propia instancia Message no tiene ninguna función hash, sino que solo pasa los valores a 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. Para más información, vea la sección "SHA-2 support for Message.HashAlgorithm" (Compatibilidad de SHA-2 con Message.HashAlgorithm) en la entrada de blog .NET Framework 2 ASP.NET and Configuration Features (Características de configuración y ASP.NET en .NET Framework 4.7.1).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

Pasos de ejecución en aplicaciones ASP.NETExecution steps in ASP.NET applications

ASP.NET procesa las solicitudes en una canalización predefinida que incluye veintitrés eventos.ASP.NET processes requests in a predefined pipeline that includes 23 events. ASP.NET ejecuta cada controlador de eventos como un paso de ejecución.ASP.NET executes each event handler as an execution step. En las versiones de ASP.NET hasta .NET Framework 4.7, ASP.NETno puede permitir el flujo del contexto de ejecución debido al cambio entre subprocesos nativos y administrados.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. En su lugar, ASP.NET solo crea un flujo selectivo de HttpContext.Instead, ASP.NET selectively flows only the HttpContext. A partir de .NET Framework 4.7.1, el método HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) también permite que los módulos restauren los datos de ambiente.Starting with the .NET Framework 4.7.1, the HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) method also allows modules to restore ambient data. Esta característica está orientada a las bibliotecas que tratan sobre el seguimiento, la generación de perfiles, el diagnóstico o las transacciones, que, por ejemplo, abordan el flujo de ejecución de la aplicación.This feature is targeted at libraries concerned with tracing, profiling, diagnostics, or transactions, for example, that care about the execution flow of the application. Para más información, vea la sección "ASP.NET Execution Step Feature" (Característica de pasos de ejecución de ASP.NET) en la entrada de blog .NET Framework 4.7.1 ASP.NET and Configuration Features (Características de configuración y ASP.NET en .NET Framework 4.7.1).For more information, see the "ASP.NET Execution Step Feature" in the .NET Framework 4.7.1 ASP.NET and Configuration Features blog post.

Análisis HttpCookie de ASP.NETASP.NET HttpCookie parsing

.NET Framework 4.7.1 incluye un nuevo método, HttpCookie.TryParse, que ofrece una forma estandarizada para crear un objeto HttpCookie a partir de una cadena y asignar con precisión los valores de cookie, como la fecha de expiración y la ruta de acceso.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. Para más información, vea la sección "ASP.NET HttpCookie parsing" (Análisis HttpCookie de ASP.NET) en la entrada de blog .NET Framework 4.7.1 ASP.NET and Configuration Features (Características de configuración y ASP.NET en .NET Framework 4.7.1).For more information, see "ASP.NET HttpCookie parsing" in the .NET Framework 4.7.1 ASP.NET and Configuration Features blog post.

Compatibilidad con opciones hash SHA-2 para las credenciales de autenticación de formularios de ASP.NETSHA-2 hash options for ASP.NET forms authentication credentials

En .NET Framework 4.7 y versiones anteriores, ASP.NET permitía a los desarrolladores almacenar las credenciales de usuario con contraseñas a las que se les ha aplicado el algoritmo hash en archivos de configuración que usan MD5 o 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. A partir de .NET Framework 4.7.1, ASP.NET también admite nuevas opciones hash SHA-2 seguras, como SHA256, SHA384 y 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 sigue siendo la opción predeterminada, aunque se puede definir un algoritmo hash no predeterminado en el archivo de configuración web.SHA1 remains the default, and a non-default hash algorithm can be defined in the web configuration file. Por ejemplo:For example:

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

Novedades de .NET Framework 4.7What's new in the .NET Framework 4.7

.NET Framework 4.7 incluye nuevas características en las áreas siguientes:The .NET Framework 4.7 includes new features in the following areas:

Para una lista de las nuevas API agregadas a .NET Framework 4.7, consulte .NET Framework 4.7 API Changes (Cambios de API de .NET Framework 4.7) en GitHub.For a list of new APIs added to the .NET Framework 4.7, see .NET Framework 4.7 API Changes on GitHub. Para una lista de las mejoras de características y correcciones de errores en .NET Framework 4.7, consulte .NET Framework 4.7 List of Changes (Lista de cambios de .NET Framework 4.7) en 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. Para más información, vea Announcing .NET Framework 4.7 (Anuncio de .NET Framework 4.7) en el blog de .NET.For additional information, see Announcing the .NET Framework 4.7 in the .NET blog.

PrincipalCore

.NET Framework 4.7 mejora la serialización con DataContractJsonSerializer:The .NET Framework 4.7 improves serialization by the DataContractJsonSerializer:

Funcionalidad mejorada con criptografía de curva elíptica (ECC)*Enhanced functionality with Elliptic Curve Cryptography (ECC)*

En .NET Framework 4.7, los métodos ImportParameters(ECParameters) se han agregado a las clases ECDsa y ECDiffieHellman para permitir que un objeto represente una clave establecida previamente.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. También se agregó un método ExportParameters(Boolean) para exportar la clave mediante parámetros de curva explícitos.An ExportParameters(Boolean) method was also added for exporting the key using explicit curve parameters.

.NET Framework 4.7 también admite las curvas adicionales, incluido el conjunto de curvas Brainpool, e incluye definiciones predefinidas agregadas para facilitar la creación a través de los nuevos patrones de diseño Factory Method Create y 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.

Puede ver un ejemplo de las mejoras de criptografía de .NET Framework 4.7 en GitHub.You can see an example of .NET Framework 4.7 cryptography improvements on GitHub.

Mayor compatibilidad para caracteres de control mediante DataContractJsonSerializerBetter support for control characters by the DataContractJsonSerializer

En .NET Framework 4.7, DataContractJsonSerializer serializa los caracteres de control en conformidad con el estándar ECMAScript 6.In the .NET Framework 4.7, the DataContractJsonSerializer serializes control characters in conformity with the ECMAScript 6 standard. Este comportamiento está habilitado de manera predeterminada para aplicaciones que tienen .NET Framework 4.7 como destino y es una característica opcional para las aplicaciones que se ejecutan en .NET Framework 4.7 pero tienen como destino una versión anterior de .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. Para más información, consulte Cambios de redestinación en .NET Framework 4.7.For more information, see Retargeting Changes in the .NET Framework 4.7.

RedesNetworking

.NET Framework 4.7 agregue la siguiente característica relacionada con la red:The .NET Framework 4.7 adds the following network-related feature:

Compatibilidad predeterminada del sistema operativo con protocolos TLS*Default operating system support for TLS protocols*

La pila TLS, que la usan System.Net.Security.SslStream y los componentes que se encuentran por encima de la pila, como HTTP, FTP y SMTP, permite a los desarrolladores usar los protocolos TLS predeterminados compatibles con el sistema operativo.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. Ya no es necesario que los desarrolladores codifiquen una versión de TLS de forma rígida.Developers need no longer hard-code a TLS version.

ASP.NETASP.NET

En .NET Framework 4.7, ASP.NET incluye las siguientes características nuevas:In the .NET Framework 4.7, ASP.NET includes the following new features:

Extensibilidad de caché de objetosObject Cache Extensibility

A partir de .NET Framework 4.7, ASP.NET agrega un nuevo conjunto de API que permiten que los desarrolladores reemplacen las implementaciones predeterminadas de ASP.NET por la supervisión de memoria y el almacenamiento en caché de objetos en memoria.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. Ahora los desarrolladores pueden reemplazar cualquiera de los siguientes tres componentes si la implementación de ASP.NET no es adecuada:Developers can now replace any of the following three components if the ASP.NET implementation is not adequate:

  • Almacén de caché de objetos.Object Cache Store. En la nueva sección de configuración de proveedores de caché, los desarrolladores pueden insertar implementaciones nuevas de una caché de objetos para una aplicación de ASP.NET mediante la nueva interfaz 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.

  • Supervisión de memoria.Memory monitoring. El monitor de memoria predeterminado de ASP.NET notifica a las aplicaciones cuando se ejecutan cerca del límite de bytes privado configurado para el proceso o cuando queda poca RAM física total disponible en la máquina.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. Las notificaciones se activan cuando se está cerca de estos límites.When these limits are near, notifications are fired. En el caso de algunas aplicaciones, las notificaciones se activan demasiado cerca de los límites configurados como para permitir reacciones que sean útiles.For some applications, notifications are fired too close to the configured limits to allow for useful reactions. Los desarrolladores ahora pueden usar la propiedad ApplicationMonitors.MemoryMonitor para escribir sus propios monitores de memoria y, así, reemplazar el predeterminado.Developers can now write their own memory monitors to replace the default by using the ApplicationMonitors.MemoryMonitor property.

  • Reacciones por límite de memoria.Memory Limit Reactions. De forma predeterminada, ASP.NET intenta recortar la caché de objetos y llama periódicamente a GC.Collect cuando se está cerca del límite de proceso de bytes privados.By default, ASP.NET attempts to trim the object cache and periodically call GC.Collect when the private byte process limit is near. En algunas aplicaciones, la frecuencia de llamadas a GC.Collect o la cantidad de caché que se recorta no son suficientes.For some applications, the frequency of calls to GC.Collect or the amount of cache that is trimmed are inefficient. Ahora los desarrolladores puede reemplazar o complementar el comportamiento predeterminado si suscriben las implementaciones de IObserver al monitor de memoria de la aplicación.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) agrega las siguientes características y cambios:Windows Communication Foundation (WCF) adds the following features and changes:

Capacidad de configurar las opciones de seguridad de mensaje predeterminadas en TLS 1.1 o TLS 1.2Ability to configure the default message security settings to TLS 1.1 or TLS 1.2

A partir de .NET Framework 4.7, WCF le permite configurar TSL 1.1 o TLS 1.2 además de SSL 3.0 y TSL 1.0 como el protocolo de seguridad de mensajes predeterminado.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. Esta es una configuración opcional; para habilitarla, debe agregar la entrada siguiente al archivo de configuración de la aplicación: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>

Confiabilidad mejorada de las aplicaciones WFC y la serialización WCFImproved reliability of WCF applications and WCF serialization

WCF incluye varios cambios de código que eliminan condiciones de carrera, por lo que se mejora el rendimiento y la confiabilidad de las opciones de serialización.WCF includes a number of code changes that eliminate race conditions, thereby improving performance and the reliability of serialization options. Se incluyen los siguientes:These include:

  • Mayor compatibilidad para combinar código asincrónico y sincrónico en las llamadas a SocketConnection.BeginRead y SocketConnection.Read.Better support for mixing asynchronous and synchronous code in calls to SocketConnection.BeginRead and SocketConnection.Read.
  • Confiabilidad mejorada cuando se anula una conexión con SharedConnectionListener y DuplexChannelBinder.Improved reliability when aborting a connection with SharedConnectionListener and DuplexChannelBinder.
  • Confiabilidad mejorada de las operaciones de serialización al llamar al método FormatterServices.GetSerializableMembers(Type).Improved reliability of serialization operations when calling the FormatterServices.GetSerializableMembers(Type) method.
  • Confiabilidad mejorada cuando se elimina un objeto waiter mediante una llamada al método ChannelSynchronizer.RemoveWaiter.Improved reliability when removing a waiter by calling the ChannelSynchronizer.RemoveWaiter method.

Windows FormsWindows Forms

En .NET Framework 4.7, Windows Forms mejora la compatibilidad con monitores con valores altos de PPP.In the .NET Framework 4.7, Windows Forms improves support for high DPI monitors.

Compatibilidad con valores altos de PPPHigh DPI support

A partir de las aplicaciones que tienen .NET Framework 4.7 como destino, .NET Framework cuenta con compatibilidad con valores altos de PPP y PPP dinámicos.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 compatibilidad con valores altos de PPP mejora el diseño y la apariencia de los formularios y controles en monitores con valores altos de PPP.High DPI support improves the layout and appearance of forms and controls on high DPI monitors. PPP dinámicos cambia el diseño y la apariencia de los formularios y controles cuando el usuario cambia los PPP o el factor de escala de visualización de una aplicación en ejecución.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.

Compatibilidad con valores altos de PPP es una característica opcional que se configura definiendo una sección <System.Windows.Forms.ConfigurationSection> en el archivo de configuración de la aplicación.High DPI support is an opt-in feature that you configure by defining a <System.Windows.Forms.ConfigurationSection> section in your application configuration file. Para más información sobre cómo agregar compatibilidad con valores altos de PPP y PPP dinámicos a la aplicación de Windows Forms, consulte Compatibilidad con valores altos de PPP en 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)

En .NET Framework 4.7, WPF incluye las siguientes mejoras:In the .NET Framework 4.7, WPF includes the following enhancements:

Compatibilidad con una pila de entrada táctil o de lápiz basada en mensajes WM_POINTER de WindowsSupport for a touch/stylus stack based on Windows WM_POINTER messages

Ahora tiene la opción de usar una pila de entrada táctil o de lápiz basada en mensajes WM_POINTER en lugar de Windows Ink Services Platform (WISP).You now have the option of using a touch/stylus stack based on WM_POINTER messages instead of the Windows Ink Services Platform (WISP). Se trata de una característica opcional de .NET Framework.This is an opt-in feature in the .NET Framework. Para más información, consulte Cambios de redestinación en .NET Framework 4.7.For more information, see Retargeting Changes in the .NET Framework 4.7.

Nueva implementación para API de impresión de WPFNew implementation for WPF printing APIs

Las API de impresión de WPF de la clase System.Printing.PrintQueue llaman a la API Print Document Package de Windows en lugar de a la API XPS Print, que está en desuso.WPF's printing APIs in the System.Printing.PrintQueue class call the Windows Print Document Package API instead of the deprecated XPS Print API. Para ver el impacto que este cambio tiene en la compatibilidad de aplicaciones, consulte Cambios de redestinación en .NET Framework 4.7.For the impact of this change on application compatibility, see Retargeting Changes in the .NET Framework 4.7.

Novedades de .NET Framework 4.6.2What's new in the .NET Framework 4.6.2

.NET Framework 4.6.2.NET Framework 4.6.2 incluye nuevas características en las áreas siguientes:The .NET Framework 4.6.2.NET Framework 4.6.2 includes new features in the following areas:

Para una lista de las nuevas API agregadas a .NET Framework 4.6.2, consulte los cambios de API de .NET Framework 4.6.2 en 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. Para una lista de las mejoras de características y correcciones de errores en .NET Framework 4.6.2, consulte .NET Framework 4.6.2 List of Changes (Lista de cambios de .NET Framework 4.6.2) en 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. Para obtener más información, vea Announcing .NET Framework 4.6.2 (Anuncio de .NET Framework 4.6.2) en el blog de .NET.For additional information, see Announcing .NET Framework 4.6.2 in the .NET blog.

ASP.NETASP.NET

En .NET Framework 4.6.2.NET Framework 4.6.2, ASP.NET incluye las siguientes mejoras:In the .NET Framework 4.6.2.NET Framework 4.6.2, ASP.NET includes the following enhancements:

Compatibilidad mejorada para los mensajes de error localizado de validadores de anotación de datosImproved support for localized error messages in data annotation validators

Los validadores de anotación de datos permiten realizar la validación agregando uno o varios atributos a una propiedad de clase.Data annotation validators enable you to perform validation by adding one or more attributes to a class property. El elemento ValidationAttribute.ErrorMessage del atributo define el texto del mensaje de error si se produce un error de validación.The attribute's ValidationAttribute.ErrorMessage element defines the text of the error message if validation fails. A partir de .NET Framework 4.6.2.NET Framework 4.6.2, ASP.NET facilita la tarea de localizar mensajes de error.Starting with the .NET Framework 4.6.2.NET Framework 4.6.2, ASP.NET makes it easy to localize error messages. Los mensajes de error se localizarán si:Error messages will be localized if:

  1. Se proporciona ValidationAttribute.ErrorMessage en el atributo de validación.The ValidationAttribute.ErrorMessage is provided in the validation attribute.

  2. El archivo de recursos está almacenado en la carpeta App_LocalResources.The resource file is stored in the App_LocalResources folder.

  3. El nombre del archivo de recursos localizados tiene la forma DataAnnotation.Localization.{nombre}.resx, donde nombre es un nombre de referencia cultural en el formato códigoDeIdioma-códigoDePaís/Región o códigoDeIdioma.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. El nombre de clave del recurso es la cadena asignada al atributo ValidationAttribute.ErrorMessage y su valor es el mensaje de error localizado.The key name of the resource is the string assigned to the ValidationAttribute.ErrorMessage attribute, and its value is the localized error message.

Por ejemplo, el siguiente atributo de anotación de datos define el mensaje de error de la referencia cultural predeterminada para una clasificación no válida.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

A continuación, puede crear un archivo de recursos DataAnnotation.Localization.fr.resx cuya clave sea la cadena del mensaje de error y cuyo valor sea el mensaje de error localizado.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. El archivo debe encontrarse en la carpeta App.LocalResources.The file must be found in the App.LocalResources folder. Por ejemplo, a continuación se muestra la clave y su valor en un mensaje de error localizado en idioma francés (fr):For example, the following is the key and its value in a localized French (fr) language error message:

nombreName ValorValue
La clasificación debe estar entre 1 y 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.

Además, la localización de anotaciones de datos es extensible.In addition, data annotation localization is extensible. Los desarrolladores pueden conectar su propio proveedor de localizador de cadenas mediante la implementación de la interfaz IStringLocalizerProvider para almacenar la cadena de localización en un lugar distinto de un archivo de recursos.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.

Compatibilidad asincrónica con proveedores de almacenes de estados de sesiónAsync support with session-state store providers

Actualmente, ASP.NET permite el uso de métodos de devolución de tareas con proveedores de almacenes de estados de sesión, lo que permite que las aplicaciones ASP.NET aprovechen las ventajas de escalabilidad de la asincronía.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. Para admitir operaciones asincrónicas con proveedores de almacenes de estados de sesión, ASP.NET incluye una nueva interfaz, System.Web.SessionState.ISessionStateModule, que se hereda de IHttpModule y permite a los desarrolladores implementar sus propios módulos de estados de sesión y proveedores de almacenes de sesión asincrónica.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. La interfaz se define de la siguiente manera:The interface is defined as follows:

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

Además, la clase SessionStateUtility incluye dos nuevos métodos, IsSessionStateReadOnly y IsSessionStateRequired, que se pueden usar para admitir operaciones asincrónicas.In addition, the SessionStateUtility class includes two new methods, IsSessionStateReadOnly and IsSessionStateRequired, that can be used to support asynchronous operations.

Compatibilidad asincrónica con proveedores de caché de resultadosAsync support for output-cache providers

A partir de .NET Framework 4.6.2.NET Framework 4.6.2, pueden usarse métodos de devolución de tarea con proveedores de caché de resultados para proporcionar las ventajas de escalabilidad de la asincronía.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. Los proveedores que implementan estos métodos reducen el bloqueo de subprocesos en un servidor web y mejoran la escalabilidad de un servicio de ASP.NET.Providers that implement these methods reduce thread-blocking on a web server and improve the scalability of an ASP.NET service.

Se han agregado las API siguientes para ofrecer compatibilidad con proveedores de caché de resultados asincrónicos:The following APIs have been added to support asynchronous output-cache providers:

Categorías de caracteresCharacter categories

Los caracteres de .NET Framework 4.6.2.NET Framework 4.6.2 se clasifican según el estándar Unicode, versión 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. En .NET Framework 4.6.NET Framework 4.6 y .NET Framework 4.6.1.NET Framework 4.6.1, los caracteres están clasificados según las categorías de caracteres 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 compatibilidad con Unicode 8.0 está limitada a la clasificación de caracteres mediante la clase CharUnicodeInfo y a los tipos y los métodos que se basan en ella.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. Entre ellos se incluyen la clase StringInfo, el método sobrecargado Char.GetUnicodeCategory y las clases de caracteres reconocidas por el motor de expresiones regulares de .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 comparación y la ordenación de caracteres y cadenas no se ven afectadas por este cambio y siguen dependiendo del sistema operativo subyacente o, en el caso de los sistemas Windows 7, de los datos de caracteres proporcionados por .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.

Para realizar cambios en las categorías de caracteres de Unicode 6.0 a Unicode 7.0, consulte la página sobre el estándar Unicode, versión 7.0.0 en el sitio web de The Unicode Consortium.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. Para realizar cambios de caracteres de Unicode 7.0 a Unicode 8.0, consulte la página sobre el estándar Unicode, versión 8.0.0 en el sitio web de The Unicode Consortium.For changes from Unicode 7.0 to Unicode 8.0, see The Unicode Standard, Version 8.0.0 at The Unicode Consortium website.

CriptografíaCryptography

Compatibilidad con certificados X509 que contienen DSA de FIPS 186-3Support for X509 certificates containing FIPS 186-3 DSA

.NET Framework 4.6.2.NET Framework 4.6.2 agrega compatibilidad con certificados X509 de DSA (algoritmo de firma digital) cuyas claves superan el límite de 1024 bits de 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.

Además de admitir los tamaños de clave más grandes de FIPS 186-3, .NET Framework 4.6.2.NET Framework 4.6.2 permite calcular firmas con la familia SHA-2 de algoritmos hash (SHA256, SHA384 y 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 compatibilidad con FIPS 186-3 se proporciona mediante la nueva clase System.Security.Cryptography.DSACng.FIPS 186-3 support is provided by the new System.Security.Cryptography.DSACng class.

Para conservar los cambios recientes en la clase RSA de .NET Framework 4.6 y la clase ECDsa de .NET Framework 4.6.1, la clase base abstracta DSA de .NET Framework 4.6.2.NET Framework 4.6.2 tiene métodos adicionales que permiten que los llamadores usen esta funcionalidad sin conversión.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. Puede llamar al método de extensión DSACertificateExtensions.GetDSAPrivateKey para firmar los datos, como se muestra en el ejemplo siguiente.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

También puede llamar al método de extensión DSACertificateExtensions.GetDSAPublicKey para comprobar los datos firmados, como se muestra en el ejemplo siguiente.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

Mayor claridad para las entradas en rutinas de derivación de claves ECDiffieHellmanIncreased clarity for inputs to ECDiffieHellman key derivation routines

.NET Framework 3.5 incluía compatibilidad para el acuerdo de claves Diffie-Hellman de curva elíptica con tres rutinas diferentes de función de derivación de claves (KDF).The .NET Framework 3.5 added support for Ellipic Curve Diffie-Hellman Key Agreement with three different Key Derivation Function (KDF) routines. Las entradas en las rutinas y las propias rutinas se configuraban mediante propiedades en el objeto ECDiffieHellmanCng.The inputs to the routines, and the routines themselves, were configured via properties on the ECDiffieHellmanCng object. Pero como no todas las rutinas leían todas las propiedades de entrada, esto podía provocar confusión al desarrollador.But since not every routine read every input property, there was ample room for confusion on the past of the developer.

Para solucionarlo en .NET Framework 4.6.2.NET Framework 4.6.2, se han agregado los tres métodos siguientes a la clase base ECDiffieHellman para representar con mayor claridad estas rutinas KDF y sus entradas: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étodo ECDiffieHellmanECDiffieHellman method DescripciónDescription
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]) Deriva el material de clave mediante la fórmulaDerives 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)

donde x es el resultado calculado del algoritmo de Diffie-Hellman de curva elíptica.where x is the computed result of the EC Diffie-Hellman algorithm.
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]) Deriva el material de clave mediante la fórmulaDerives 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)

donde x es el resultado calculado del algoritmo de Diffie-Hellman de curva elíptica.where x is the computed result of the EC Diffie-Hellman algorithm.
DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[]) Deriva el material de clave mediante el algoritmo de derivación de función pseudoaleatoria (PRF) de TLS.Derives key material using the TLS pseudo-random function (PRF) derivation algorithm.

Compatibilidad con el cifrado simétrico de clave persistenteSupport for persisted-key symmetric encryption

La biblioteca de criptografía (CNG) de Windows agrega compatibilidad para almacenar claves simétricas persistentes y para usar claves simétricas almacenadas en el hardware, y .NET Framework 4.6.2.NET Framework 4.6.2 hace posible que los desarrolladores usen esta característica.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. Como el concepto de nombres de clave y proveedores de clave depende de la implementación, el uso de esta característica obliga a emplear el constructor de los tipos de la implementación concreta, en lugar del enfoque de fábrica preferido (por ejemplo, llamar a 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).

Existe compatibilidad con el cifrado simétrico de clave persistente para los algoritmos AES (AesCng) y 3DES (TripleDESCng).Persisted-key symmetric encryption support exists for the AES (AesCng) and 3DES (TripleDESCng) algorithms. Por ejemplo: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

Compatibilidad con SignedXml para hash SHA-2SignedXml support for SHA-2 hashing

.NET Framework 4.6.2.NET Framework 4.6.2 agrega compatibilidad con la clase SignedXml para los métodos de firma PKCS#1 RSA-SHA256, RSA-SHA384 y RSA-SHA512, y para los algoritmos de resumen de referencia SHA256, SHA384 y 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.

Todas las constantes URI se exponen en SignedXml:The URI constants are all exposed on SignedXml:

Campo 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"

Todos los programas que hayan registrado un controlador SignatureDescription personalizado en CryptoConfig para agregar compatibilidad para estos algoritmos seguirán funcionando como antes, pero como ahora hay valores predeterminados de la plataforma, ya no es necesario el registro de CryptoConfig.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

El proveedor de datos .NET Framework para SQL Server (System.Data.SqlClient) incluye las siguientes características nuevas en .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:

Agrupación de conexiones y tiempos de espera con bases de datos SQL de AzureConnection pooling and timeouts with Azure SQL databases

Cuando se habilita la agrupación de conexiones y se produce un error de tiempo de espera u otro tipo de error de inicio de sesión, se almacena en caché una excepción que se produce en todos los intentos de conexión posteriores que se realicen en un plazo de entre 5 segundos y 1 minuto.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. Para obtener más información, vea Agrupación de conexiones en SQL Server (ADO.NET).For more details, see SQL Server Connection Pooling (ADO.NET).

Este comportamiento no es el deseable al conectarse a bases de datos SQL de Azure, ya que en los intentos de conexión se pueden producir errores transitorios que normalmente se recuperan rápidamente.This behavior is not desirable when connecting to Azure SQL Databases, since connection attempts can fail with transient errors that are typically recovered quickly. Para optimizar la experiencia de reintento de conexión, se elimina el comportamiento del período de bloqueo del grupo de conexiones cuando se produce un error en las conexiones a bases de datos SQL de Azure.To better optimize the connection retry experience, the connection pool blocking period behavior is removed when connections to Azure SQL Databases fail.

La adición de la nueva palabra clave PoolBlockingPeriod permite seleccionar el período de bloqueo más adecuado para la aplicación.The addition of the new PoolBlockingPeriod keyword lets you to select the blocking period best suited for your app. Estos valores incluyen:Values include:

Auto

El período de bloqueo del grupo de conexiones para una aplicación que se conecta a una base de datos SQL de Azure está deshabilitado, mientras que el período de bloqueo del grupo de conexiones para una aplicación que se conecta a cualquier otra instancia de SQL Server está habilitado.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. Este es el valor predeterminado.This is the default value. Si el nombre del punto de conexión del servidor termina de alguna de las siguientes maneras, se considera que se trata de bases de datos SQL de Azure: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

El período de bloqueo del grupo de conexión siempre está habilitado.The connection pool blocking period is always enabled.

NeverBlock

El período de bloqueo del grupo de conexión siempre está deshabilitado.The connection pool blocking period is always disabled.

Mejoras para Always EncryptedEnhancements for Always Encrypted

SQLClient presenta dos mejoras para Always Encrypted:SQLClient introduces two enhancements for Always Encrypted:

  • Para mejorar el rendimiento de las consultas con parámetros en las columnas de una base de datos cifrada, ahora se almacenan en caché los metadatos de cifrado de los parámetros de consulta.To improve performance of parameterized queries against encrypted database columns, encryption metadata for query parameters is now cached. Con la propiedad SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled establecida en true (que es el valor predeterminado), si se llama varias veces a la misma consulta, el cliente recupera los metadatos de parámetros del servidor una sola vez.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.

  • Ahora, las entradas de clave de cifrado de columna incluidas en la caché de claves se expulsan después de un intervalo de tiempo configurable, que se establece mediante la propiedad 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

En .NET Framework 4.6.2.NET Framework 4.6.2, Windows Communication Foundation se ha mejorado en las áreas siguientes:In the .NET Framework 4.6.2.NET Framework 4.6.2, Windows Communication Foundation has been enhanced in the following areas:

Compatibilidad con la seguridad de transporte de WCF para los certificados almacenados con CNGWCF transport security support for certificates stored using CNG

La seguridad de transporte de WCF es compatible con los certificados almacenados mediante la biblioteca de criptografía (CNG) de Windows.WCF transport security supports certificates stored using the Windows cryptography library (CNG). En .NET Framework 4.6.2.NET Framework 4.6.2, esta compatibilidad está limitada al uso de certificados con una clave pública que tenga un exponente con una longitud no superior a 32 bits.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. Cuando una aplicación tiene .NET Framework 4.6.2.NET Framework 4.6.2 como destino, esta característica está activada de forma predeterminada.When an application targets the .NET Framework 4.6.2.NET Framework 4.6.2, this feature is on by default.

En el caso de las aplicaciones que tengan como destino .NET Framework 4.6.1.NET Framework 4.6.1 o versiones anteriores, pero se ejecuten en .NET Framework 4.6.2.NET Framework 4.6.2, esta característica se puede activar agregando la siguiente línea a la sección <runtime> del archivo app.config o 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"
/>

Esto también se puede hacer mediante programación con código similar al siguiente: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)

Mejor compatibilidad para varias reglas de ajuste al horario de verano mediante la clase DataContractJsonSerializerBetter support for multiple daylight saving time adjustment rules by the DataContractJsonSerializer class

Los clientes pueden usar una opción de configuración de la aplicación para determinar si la clase DataContractJsonSerializer admite varias reglas de ajuste para una sola zona horaria.Customers can use an application configuration setting to determine whether the DataContractJsonSerializer class supports multiple adjustment rules for a single time zone. Esta característica es opcional.This is an opt-in feature. Para habilitarla, agregue la siguiente opción de configuración al archivo app.config:To enable it, add the following setting to your app.config file:

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

Cuando se habilita esta característica, un objeto DataContractJsonSerializer usa el tipo TimeZoneInfo en lugar del tipo TimeZone para deserializar los datos de fecha y hora.When this feature is enabled, a DataContractJsonSerializer object uses the TimeZoneInfo type instead of the TimeZone type to deserialize date and time data. TimeZoneInfo admite varias reglas de ajuste, lo que permite trabajar con datos históricos de zona horaria, mientras que TimeZone no las admite.TimeZoneInfo supports multiple adjustment rules, which makes it possible to work with historic time zone data; TimeZone does not.

Para obtener más información sobre la estructura TimeZoneInfo y los ajustes de zona horaria, consulte Información general sobre zonas horarias.For more information on the TimeZoneInfo structure and time zone adjustments, see Time Zone Overview.

Mejor coincidencia de NetNamedPipeBindingNetNamedPipeBinding best match

WCF tiene una nueva opción de la aplicación que se puede establecer en las aplicaciones cliente para garantizar que siempre se conecten al servicio que escucha en el URI que mejor coincida con el que solicitan.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. Con esta opción de la aplicación establecida en false (valor predeterminado), es posible que los clientes que usan NetNamedPipeBinding intenten conectarse a un servicio que escucha en un URI que es una subcadena del URI solicitado.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.

Por ejemplo, un cliente intenta conectarse a un servicio que escucha en net.pipe://localhost/Service1, pero un servicio diferente en ese equipo que se ejecuta con privilegios de administrador escucha en 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. Con esta opción de la aplicación establecida en false, el cliente intentará conectarse al servicio incorrecto.With this app setting set to false, the client would attempt to connect to the wrong service. Después de establecer la opción de la aplicación en true, el cliente siempre se conectará al mejor servicio.After setting the app setting to true, the client will always connect to the best matching service.

Nota

Los clientes que usan NetNamedPipeBinding encuentran servicios basados en la dirección base del servicio (si existe) en lugar de la dirección del punto de conexión completo.Clients using NetNamedPipeBinding find services based on the service's base address (if it exists) rather than the full endpoint address. Para garantizar que esta opción siempre funcione, el servicio debe usar una dirección base única.To ensure this setting always works the service should use a unique base address.

Para habilitar este cambio, agregue la siguiente opción de la aplicación al archivo App.config o Web.config de la aplicación 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 no es el protocolo predeterminadoSSL 3.0 is not a default protocol

Al usar NetTcp con seguridad de transporte y un tipo de credencial de certificado, SSL 3.0 ya no es el protocolo predeterminado para negociar una conexión segura.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. En la mayoría de los casos, esto no debería afectar a las aplicaciones existentes, porque TLS 1.0 está incluido en la lista de protocolos para NetTcp.In most cases, there should be no impact to existing apps, because TLS 1.0 is included in the protocol list for NetTcp. Todos los clientes deberían poder negociar una conexión usando como mínimo TLS 1.0.All existing clients should be able to negotiate a connection using at least TLS 1.0. Si se requiere Ssl3, use uno de los siguientes mecanismos de configuración para agregarlo a la lista de protocolos negociados.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)

En .NET Framework 4.6.2.NET Framework 4.6.2, Windows Presentation Foundation se ha mejorado en las áreas siguientes:In the .NET Framework 4.6.2.NET Framework 4.6.2, Windows Presentation Foundation has been enhanced in the following areas:

Ordenación de gruposGroup sorting

Ahora, una aplicación que use un objeto CollectionView para agrupar los datos puede declarar explícitamente cómo ordenar los grupos.An application that uses a CollectionView object to group data can now explicitly declare how to sort the groups. La ordenación explícita resuelve el problema de la ordenación no intuitiva que se produce cuando una aplicación agrega o elimina grupos dinámicamente, o cuando cambia el valor de las propiedades de elementos implicadas en la agrupación.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. También puede mejorar el rendimiento del proceso de creación de grupos, ya que mueve las comparaciones de las propiedades de agrupación de la ordenación de la colección completa a la ordenación de los grupos.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.

Para admitir la ordenación de grupos, las nuevas propiedades GroupDescription.SortDescriptions y GroupDescription.CustomSort describen cómo ordenar la colección de grupos generada por el objeto 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. Esto es análogo a la forma en que las propiedades ListCollectionView con el mismo nombre describen cómo se ordenan los elementos de datos.This is analogous to the way the identically named ListCollectionView properties describe how to sort the data items.

Dos nuevas propiedades estáticas de la clase PropertyGroupDescription, CompareNameAscending y CompareNameDescending, se pueden usar para los casos más comunes.Two new static properties of the PropertyGroupDescription class, CompareNameAscending and CompareNameDescending, can be used for the most common cases.

Por ejemplo, el siguiente código XAML agrupa los datos por edad, ordena los grupos de edad en orden ascendente y agrupa los elementos de cada grupo de edad por apellido.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>

Compatibilidad con teclado en pantallaSoft keyboard support

La compatibilidad con teclado en pantalla permite el seguimiento del foco en aplicaciones WPF, ya que invoca y descarta automáticamente el nuevo teclado en pantalla de Windows 10 cuando un control que acepta entrada de texto recibe la entrada táctil.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.

En versiones anteriores de .NET Framework, las aplicaciones WPF no pueden optar por el seguimiento del foco sin deshabilitar la compatibilidad con lápiz o movimiento táctil en WPF.In previous versions of the .NET Framework, WPF applications cannot opt into the focus tracking without disabling WPF pen/touch gesture support. Como resultado, las aplicaciones WPF deben elegir entre compatibilidad táctil completa en WPF o basarse en la promoción del mouse de Windows.As a result, WPF applications must choose between full WPF touch support or rely on Windows mouse promotion.

PPP por monitorPer-monitor DPI

Para admitir la reciente proliferación de entornos con valores altos o híbridos de PPP para las aplicaciones WPF, WPF en .NET Framework 4.6.2.NET Framework 4.6.2 habilita el reconocimiento de monitor.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. Consulte los ejemplos y la guía para desarrolladores en GitHub para obtener más información sobre cómo activar el reconocimiento de PPP por monitor en la aplicación WPF.See the samples and developer guide on GitHub for more information about how to enable your WPF app to become per-monitor DPI aware.

En versiones anteriores de .NET Framework, las aplicaciones WPF tienen habilitado el reconocimiento de PPP del sistema.In previous versions of the .NET Framework, WPF apps are system-DPI aware. En otras palabras, el sistema operativo escala la interfaz de usuario de la aplicación según corresponda, en función del valor de PPP del monitor en el que se representa la aplicación.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. ,,

Para aplicaciones que se ejecutan en .NET Framework 4.6.2.NET Framework 4.6.2, puede deshabilitar los cambios de PPP por monitor en las aplicaciones WPF. Para ello, agregue una instrucción de configuración en la sección <runtime> del archivo de configuración de la aplicación de la siguiente manera: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)

En .NET Framework 4.6.2.NET Framework 4.6.2, Windows Workflow Foundation se ha mejorado en las áreas siguientes:In the .NET Framework 4.6.2.NET Framework 4.6.2, Windows Workflow Foundation has been enhanced in the following area:

Compatibilidad con expresiones de C# e IntelliSense en el Diseñador de WF rehospedadoSupport for C# expressions and IntelliSense in the Re-hosted WF Designer

A partir de .NET Framework 4.5.NET Framework 4.5, WF admite expresiones de C# en el diseñador de Visual Studio y en los flujos de trabajo de código.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. El Diseñador de flujo de trabajo rehospedado es una característica clave de WF que permite que el Diseñador de flujo de trabajo esté en una aplicación fuera de Visual Studio (por ejemplo, en 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 permite admitir expresiones de C# e IntelliSense en el Diseñador de flujo de trabajo rehospedado.Windows Workflow Foundation provides the ability to support C# expressions and IntelliSense in the Re-hosted Workflow Designer. Para obtener más información, consulte el blog de 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 En las versiones de .NET Framework anteriores a .NET Framework 4.6.2.NET Framework 4.6.2, IntelliSense del Diseñador de WF se interrumpe cuando un cliente vuelve a compilar un proyecto de flujo de trabajo desde 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. Aunque la compilación del proyecto es correcta, los tipos de flujo de trabajo no se encuentran en el diseñador y en la ventana Lista de errores aparecen advertencias de IntelliSense que indican los tipos de flujo de trabajo que faltan.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. .NET Framework 4.6.2.NET Framework 4.6.2 soluciona este problema y hace que IntelliSense esté disponible.The .NET Framework 4.6.2.NET Framework 4.6.2 addresses this issue and makes IntelliSense available.

Las aplicaciones V1 de flujo de trabajo con seguimiento del flujo de trabajo ahora se ejecutan en modo FIPSWorkflow V1 applications with Workflow Tracking on now run under FIPS-mode

Los equipos que tienen habilitado el modo de cumplimiento de FIPS ahora pueden ejecutar correctamente una aplicación de versión 1 de flujo de trabajo con el seguimiento del flujo de trabajo habilitado.Machines with FIPS Compliance Mode enabled can now successfully run a workflow Version 1-style application with Workflow tracking on. Para habilitar este escenario, debe realizar el cambio siguiente en el archivo 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 este escenario no está habilitado, al ejecutar la aplicación se sigue generando una excepción con el mensaje "Esta implementación no forma parte de los algoritmos criptográficos validados por Windows Platform FIPS".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."

Mejoras en el flujo de trabajo al usar la actualización dinámica con el Diseñador de flujo de trabajo de Visual StudioWorkflow Improvements when using Dynamic Update with Visual Studio Workflow Designer

El Diseñador de flujo de trabajo, el Diseñador de actividad de diagrama de flujo y otros diseñadores de actividad de flujo de trabajo ahora cargan y muestran correctamente los flujos de trabajo que se han guardado después de llamar al método 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. En versiones de .NET Framework anteriores a .NET Framework 4.6.2.NET Framework 4.6.2, la carga de un archivo XAML en Visual Studio para un flujo de trabajo guardado después de llamar a DynamicUpdateServices.PrepareForUpdate puede producir los problemas siguientes: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:

  • El Diseñador de flujo de trabajo no se puede cargar el archivo XAML correctamente (cuando ViewStateData.Id se encuentra al final de la línea).The Workflow Designer can't load the XAML file correctly (when the ViewStateData.Id is at the end of the line).

  • El Diseñador de actividad de diagrama de flujo u otros diseñadores de actividad de flujo de trabajo pueden mostrar todos los objetos en sus ubicaciones predeterminadas en lugar de los valores de la propiedad adjunta.Flowchart Activity Designer or other Workflow Activity Designers may display all objects in their default locations as opposed to attached property values.

ClickOnceClickOnce

Se ha actualizado ClickOnce para que admita TLS 1.1 y TLS 1.2 además del protocolo 1.0, que ya se admite.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 detecta automáticamente qué protocolo se requiere; no es necesario realizar ningún paso adicional en la aplicación ClickOnce para habilitar la compatibilidad con TLS 1.1 y 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.

Conversión de aplicaciones de Windows Forms y WPF a aplicaciones de UWPConverting Windows Forms and WPF apps to UWP apps

Windows ahora ofrece funciones para llevar aplicaciones existentes de escritorio de Windows, incluidas aplicaciones de Windows Forms y WPF, a la Plataforma universal de Windows (UWP).Windows now offers capabilities to bring existing Windows desktop apps, including WPF and Windows Forms apps, to the Universal Windows Platform (UWP). Esta tecnología actúa como un puente, ya que permite migrar gradualmente su base de código existente a UWP, lo que lleva su aplicación a todos los dispositivos 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.

Las aplicaciones de escritorio convertidas obtienen una identidad de aplicación similar a la identidad de aplicación de las aplicaciones de UWP, lo que hace que las API de UWP sean accesibles para habilitar características como iconos dinámicos y notificaciones.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. La aplicación sigue comportándose como antes y se ejecuta como una aplicación de plena confianza.The app continues to behave as before and runs as a full trust app. Una vez convertida la aplicación, se puede agregar un proceso de contenedor de la aplicación al proceso de plena confianza existente para agregar una interfaz de usuario adaptable.Once the app is converted, an app container process can be added to the existing full trust process to add an adaptive user interface. Cuando todas las funciones se hayan movido al proceso de contenedor de la aplicación, se puede quitar el proceso de plena confianza y la nueva aplicación de UWP estará disponible para todos los dispositivos 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.

Mejoras en la depuraciónDebugging improvements

La API de depuración no administrada se ha mejorado en .NET Framework 4.6.2.NET Framework 4.6.2 para que realice análisis adicionales cuando se produzca una excepción NullReferenceException, de modo que sea posible determinar qué variable de una sola línea de código fuente es null.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. Para admitir este escenario, se han agregado las API siguientes a la API de depuración no administrada.To support this scenario, the following APIs have been added to the unmanaged debugging API.

Novedades de .NET Framework 4.6.1What's new in the .NET Framework 4.6.1

.NET Framework 4.6.1.NET Framework 4.6.1 incluye nuevas características en las áreas siguientes:The .NET Framework 4.6.1.NET Framework 4.6.1 includes new features in the following areas:

Para obtener más información sobre .NET Framework 4.6.1.NET Framework 4.6.1, vea uno de los temas siguientes:For more information on the .NET Framework 4.6.1.NET Framework 4.6.1, see the following topics:

Cifrado: compatibilidad con certificados X509 que contienen ECDSACryptography: Support for X509 certificates containing ECDSA

La versión 4.6 de .NET Framework agrega compatibilidad con RSACng para certificados X509.The .NET Framework 4.6 added RSACng support for X509 certificates. .NET Framework 4.6.1.NET Framework 4.6.1 agrega compatibilidad para certificados 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 ofrece un mejor rendimiento y es un algoritmo de cifrado más seguro que RSA, lo que lo convierte en una excelente elección cuando están en juego la escalabilidad y el rendimiento de la seguridad de capa de transporte (TLS).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. La implementación de .NET Framework encapsula las llamadas en funciones de Windows existentes.The .NET Framework implementation wraps calls into existing Windows functionality.

El ejemplo de código siguiente muestra lo fácil que es generar una firma para una secuencia de bytes mediante la nueva compatibilidad para certificados X509 de ECDSA incluidos en .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

Esto ofrece un contraste marcado para el código necesario para generar una firma en .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

Se agregó lo siguiente a ADO.NET:The following have been added to ADO.NET:

Compatibilidad con Always Encrypted para claves protegidas por hardwareAlways Encrypted support for hardware protected keys

ADO.NET ahora permite almacenar claves maestras de la columna Always Encrypted de forma nativa en módulos de seguridad de hardware (HSM).ADO.NET now supports storing Always Encrypted column master keys natively in Hardware Security Modules (HSMs). Con esta compatibilidad, los clientes pueden aprovechar las claves asimétricas almacenadas en HSM sin tener que escribir proveedores de almacenes de clave maestra de la columna personalizada ni registrarlos en las aplicaciones.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.

Los clientes necesitan instalar el proveedor CSP proporcionado por el fabricante HSM o los proveedores de almacén de claves de CNG en los servidores de aplicación o en los equipos cliente para tener acceso a los datos que Always Encrypted ha protegido con las claves maestras de columna almacenadas en un 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.

Comportamiento de la conexión de MultiSubnetFailover mejorado para AlwaysOnImproved MultiSubnetFailover connection behavior for AlwaysOn

Ahora SqlClient proporciona de forma automática conexiones más rápidas a un grupo de disponibilidad AlwaysOn (AG).SqlClient now automatically provides faster connections to an AlwaysOn Availability Group (AG). Detecta de forma transparente si la aplicación se conecta a un grupo de disponibilidad AlwaysOn (AG) en una subred diferente y detecta rápidamente el servidor activo actual y proporciona una conexión al servidor.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. Antes de esta versión, una aplicación tenía que establecer la cadena de conexión para incluir "MultisubnetFailover=true" e indicar que se conecta a un grupo de disponibilidad 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. Sin establecer la palabra clave de conexión en true, una aplicación podría experimentar un tiempo de espera mientras se conecta a un grupo de disponibilidad AlwaysOn.Without setting the connection keyword to true, an application might experience a timeout while connecting to an AlwaysOn Availability Group. Con esta versión, la aplicación ya no necesita establecer MultiSubnetFailover en true.With this release, an application does not need to set MultiSubnetFailover to true anymore. Para obtener más información sobre la compatibilidad de SqlClient con grupos de disponibilidad AlwaysOn, vea Compatibilidad de SqlClient para alta disponibilidad y recuperación ante desastres.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 incluye una serie de mejoras y cambios.Windows Presentation Foundation includes a number of improvements and changes.

Rendimiento mejoradoImproved performance

Se ha corregido el retraso de activación de eventos touch en .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. Además, al escribir un control RichTextBox ya no se bloquea el subproceso de representación durante la entrada rápida.In addition, typing in a RichTextBox control no longer ties up the render thread during fast input.

Mejoras en el corrector ortográficoSpell checking improvements

El corrector ortográfico en WPF se ha actualizado en Windows 8.1 y en versiones posteriores para aprovechar la compatibilidad del sistema operativo con la corrección ortográfica de idiomas adicionales.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. No hay ningún cambio en la funcionalidad en las versiones de Windows anteriores a Windows 8.1.There is no change in functionality on Windows versions prior to Windows 8.1.

Como en versiones anteriores de .NET Framework, el idioma de un control TextBox o un bloque RichTextBox se detecta mediante la búsqueda de información en el orden siguiente: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, si está presente.xml:lang, if it is present.

  • Idioma de entrada actual.Current input language.

  • Referencia cultural del subproceso actual.Current thread culture.

Para obtener más información sobre la compatibilidad de idioma en WPF, vea la entrada de blog de WPF sobre las características 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.

Compatibilidad adicional con diccionarios personalizados por el usuarioAdditional support for per-user custom dictionaries

En .NET Framework 4.6.1.NET Framework 4.6.1, WPF reconoce los diccionarios personalizados que se registran de forma global.In .NET Framework 4.6.1.NET Framework 4.6.1, WPF recognizes custom dictionaries that are registered globally. Esta funcionalidad está disponible además de la posibilidad de registrarlos por control.This capability is available in addition to the ability to register them per-control.

En versiones anteriores de WPF, los diccionarios personalizados no reconocían palabras excluidas ni listas de autocorrección.In previous versions of WPF, custom dictionaries did not recognize Excluded Words and AutoCorrect lists. Ahora se admiten en Windows 8.1 y Windows 10 mediante el uso de archivos que se pueden colocar en el directorio %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. Las reglas siguientes se aplican a estos archivos:The following rules apply to these files:

  • Los archivos deben tener las extensiones .dic (para palabras agregadas), .exc (para las palabras excluidas) o .acl (para la autocorrección).The files should have extensions of .dic (for added words), .exc (for excluded words), or .acl (for AutoCorrect).

  • Los archivos deben ser texto sin formato UTF-16 LE que comienza con la marca BOM (Byte Order Mark).The files should be UTF-16 LE plaintext that starts with the Byte Order Mark (BOM).

  • Cada línea debe constar de una palabra (en las listas de palabras agregadas y excluidas) o un par de autocorrección con las palabras separadas por una barra vertical ("|") (en la lista de palabras de Autocorrección).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).

  • Estos archivos se consideran de solo lectura y el sistema no los modifica.These files are considered read-only and are not modified by the system.

Nota

Estos nuevos formatos de archivos no son compatibles directamente con las API de corrección ortográfica de WPF, y los diccionarios personalizados proporcionados a WPF en las aplicaciones deben continuar usando los archivos .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.

MuestrasSamples

Hay una serie de ejemplos de WPF en MSDN.There are a number of WPF Samples on MSDN. Más de 200 de los ejemplos más populares (según su utilización) se moverán a un repositorio de GitHub de código abierto.More than 200 of the most popular samples (based on their usage) will be moved into an Open Source GitHub repository. Ayúdenos a mejorar nuestros ejemplos enviando una solicitud de extracción o abriendo un problema de GitHub.Help us improve our samples by sending us a pull-request or opening a GitHub issue.

Extensiones de DirectXDirectX extensions

WPF incluye un paquete NuGet en el que se proporcionan nuevas implementaciones de D3DImage que facilitan la tarea de interoperar con contenido DX10 y 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. El código para este paquete se ha abierto y está disponible en GitHub.The code for this package has been open sourced and is available on GitHub.

Windows Workflow Foundation: transaccionesWindows Workflow Foundation: Transactions

El método Transaction.EnlistPromotableSinglePhase ahora puede usar un administrador de transacciones distribuidas que no sea MSDTC para promocionar la transacción.The Transaction.EnlistPromotableSinglePhase method can now use a distributed transaction manager other than MSDTC to promote the transaction. Para ello, especifique un identificador GUID de promoción de transacción a la nueva sobrecarga Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid).You do this by specifying a GUID transaction promoter identifier to the new Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overload . Si esta operación se realiza correctamente, hay limitaciones de las capacidades de la transacción.If this operation is successful, there are limitations placed on the capabilities of the transaction. Una vez que se activa un promotor de transacciones que no sea MSDTC, los métodos siguientes inician una TransactionPromotionException porque estos métodos requieren promoción a MSDTC:Once a non-MSDTC transaction promoter is enlisted, the following methods throw a TransactionPromotionException because these methods require promotion to MSDTC:

Una vez que se activa un promotor de transacciones que no sea MSDTC, debe usarse para futuras inscripciones duraderas a través de los protocolos que define.Once a non-MSDTC transaction promoter is enlisted, it must be used for future durable enlistments by using protocols that it defines. El Guid del promotor de transacción puede obtenerse con la propiedad PromoterType.The Guid of the transaction promoter can be obtained by using the PromoterType property. Cuando se promueve la transacción, el promotor de transacciones proporciona una matriz Byte que representa el token promocionado.When the transaction promotes, the transaction promoter provides a Byte array that represents the promoted token. Una aplicación puede obtener el token promocionado de una transacción promocionada que no sea de MSDTC con el método GetPromotedToken.An application can obtain the promoted token for a non-MSDTC promoted transaction with the GetPromotedToken method.

Los usuarios de la nueva sobrecarga Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) deben seguir una secuencia de llamadas específica para completar correctamente la operación de promoción.Users of the new Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overload must follow a specific call sequence in order for the promotion operation to complete successfully. Estas reglas están registradas en la documentación del método.These rules are documented in the method's documentation.

Generación de perfilesProfiling

La API de generación de perfiles no administrada se ha mejorado de la siguiente forma:The unmanaged profiling API has been enhanced as follows:

  • Se ha mejorado la compatibilidad para acceder a archivos PDB en la interfaz ICorProfilerInfo7.Better support for accessing PDBs in the ICorProfilerInfo7 interface.

    En ASP.NET Core, cada vez es más común que los ensamblados se compilen en memoria mediante Roslyn.In ASP.NET Core, it is becoming much more common for assemblies to be compiled in-memory by Roslyn. Para desarrolladores que crean herramientas de generación de perfiles, esto significa que los PDB serializados históricamente en disco ya no estén presentes.For developers making profiling tools, this means that PDBs that historically were serialized on disk may no longer be present. Las herramientas del generador de perfiles suelen usar archivos PDB para asignar código a las líneas de código fuente para tareas como el análisis de rendimiento de línea por línea o de cobertura de código.Profiler tools often use PDBs to map code back to source lines for tasks such as code coverage or line-by-line performance analysis. La interfaz ICorProfilerInfo7 ahora incluye dos nuevos métodos, ICorProfilerInfo7::GetInMemorySymbolsLength e ICorProfilerInfo7::ReadInMemorySymbols, para proporcionar estas herramientas del generador de perfiles con acceso a los datos de PDB en memoria. Usando las nuevas API, un generador de perfiles puede obtener el contenido de un PDB en memoria como una matriz de bytes y luego procesarlo o serializarlo en el disco.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.

  • Se ha mejorado la instrumentación con la interfaz ICorProfiler.Better instrumentation with the ICorProfiler interface.

    Los generadores de perfiles que utilizan la funcionalidad ReJit de la API ICorProfiler para la instrumentación dinámica ahora pueden modificar algunos metadatos.Profilers that are using the ICorProfiler API’s ReJit functionality for dynamic instrumentation can now modify some metadata. Anteriormente dichas herramientas podían instrumentar IL en cualquier momento, pero los metadatos solo se podían modificar en tiempo de carga del módulo.Previously such tools could instrument IL at any time, but metadata could only be modified at module load time. Dado que IL hace referencia a los metadatos, esto limita los tipos de instrumentación que se podían hacer.Because IL refers to metadata, this limited the kinds of instrumentation that could be done. Hemos solucionado algunos de esos límites agregando el método ICorProfilerInfo7::ApplyMetaData para admitir un subconjunto de ediciones de metadatos después de que el módulo se cargue, en particular agregando nuevos registros AssemblyRef, TypeRef, TypeSpec, MemberRef, MemberSpec y 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. Este cambio permite una mayor variedad de instrumentación sobre la marcha.This change makes a much broader range of on-the-fly instrumentation possible.

PDB del generador de imágenes nativas (NGEN)Native Image Generator (NGEN) PDBs

El seguimiento de eventos de varios equipos permite a los clientes generar perfiles de un programa en la máquina A y mirar los datos de generación de perfiles con la asignación de la línea de origen en la máquina B. Al usar versiones anteriores de .NET Framework, el usuario copiaría todos los módulos y las imágenes nativas de la máquina con generación de perfiles a la máquina de análisis que contiene el archivo PDB de IL para crear la asignación de código fuente a nativo.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. Aunque este proceso puede funcionar bien cuando los archivos son relativamente pequeños, como en aplicaciones de teléfono, los archivos pueden ser muy grandes en sistemas de escritorio y requieren mucho tiempo para copiarse.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.

Con los archivos PDB de NGen, NGen puede crear un archivo PDB que contenga la asignación de IL a nativo sin una dependencia del archivo PDB de IL.With Ngen PDBs, NGen can create a PDB that contains the IL-to-native mapping without a dependency on the IL PDB. En nuestro escenario de seguimiento de eventos de varias máquinas, todo lo que se necesita es copiar la imagen nativa PDB generada por la máquina A a la máquina B y utilizar Depurar API de acceso de interfaz para leer la asignación de origen al IL del archivo PDB de IL y la asignación del IL a nativo del archivo PDB de imágenes nativas.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 combinación de ambas asignaciones permite asignar código fuente a nativo.Combining both mappings provides a source-to-native mapping. Dado que el PDB de imagen nativa es mucho menor que todos los módulos y las imágenes nativas, el proceso de copiar de la máquina A a la máquina B es mucho más rápido.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.

Novedades de .NET 2015What's new in .NET 2015

.NET 2015 presenta .NET Framework 4.6.NET Framework 4.6 y .NET Core..NET 2015 introduces the .NET Framework 4.6.NET Framework 4.6 and .NET Core. Algunas características nuevas se aplican a ambos, y otras son específicas de .NET Framework 4.6.NET Framework 4.6 o Núcleo de .NET.NET Core.Some new features apply to both, and other features are specific to .NET Framework 4.6.NET Framework 4.6 or Núcleo de .NET.NET Core.

  • ASP.NET CoreASP.NET Core

    .NET Framework 2015 incluye ASP.NET Core, que es una implementación .NET eficiente para la compilación de aplicaciones modernas basadas en la nube..NET 2015 includes ASP.NET Core, which is a lean .NET implementation for building modern cloud-based apps. ASP.NET Core es modular, por lo que puede incluir solo aquellas características que se necesitan en la aplicación.ASP.NET Core is modular so you can include only those features that are needed in your application. Puede hospedarse en IIS o autohospedarse en un proceso personalizado y se pueden ejecutar aplicaciones con diferentes versiones de .NET Framework en el mismo servidor.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. Incluye un nuevo sistema de configuración de entorno que está diseñado para la implementación de la nube.It includes a new environment configuration system that is designed for cloud deployment.

    MVC, Web API y Web Pages están unificados en un marco único llamado MVC 6.MVC, Web API, and Web Pages are unified into a single framework called MVC 6. Las aplicaciones de ASP.NET Core se compilan con las herramientas de Visual Studio 2015 o versiones posteriores.You build ASP.NET Core apps through tools in Visual Studio 2015 or later. Las aplicaciones existentes funcionarán en la nueva versión de .NET Framework; sin embargo, para compilar una aplicación que use MVC 6 o SignalR 3, debe usar el sistema de proyectos de Visual Studio 2015 o versiones posteriores.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.

    Para obtener información, vea ASP.NET Core.For information, see ASP.NET Core.

  • Actualizaciones de ASP.NETASP.NET Updates

    • API basada en tareas para el vaciado de respuestas asincrónicasTask-based API for Asynchronous Response Flushing

      Ahora, ASP.NET proporciona una API sencilla basada en tareas para el vaciado de respuestas asincrónicas, HttpResponse.FlushAsync, que permite vaciar las respuestas de forma asincrónica con el soporte async/await de su lenguaje.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.

    • El enlace de modelos admite los métodos de devolución de tareasModel binding supports task-returning methods

      ASP.NET agregó en .NET Framework 4.5.NET Framework 4.5 la característica Enlace de modelos, que habilita un enfoque extensible y centrado en el código en las operaciones de datos basadas en CRUD de las páginas de formularios Web Forms y los controles de usuario.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. Ahora el sistema Enlace de modelos es compatible con los métodos de enlace de modelos que devuelven Task.The Model Binding system now supports Task-returning model binding methods. Esta característica permite que los desarrolladores de formularios Web Forms aprovechen las ventajas que presenta la escalabilidad de la asincronía con la facilidad del sistema de enlace de datos al usar las versiones más recientes de ORM, incluido 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.

      El enlace de modelos asincrónicos se controla con la opción de configuración aspnet:EnableAsyncModelBinding.Async model binding is controlled by the aspnet:EnableAsyncModelBinding configuration setting.

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

      En las aplicaciones que tienen como destino .NET Framework 4.6.NET Framework 4.6, el valor predeterminado es true.On apps the target the .NET Framework 4.6.NET Framework 4.6, it defaults to true. En las aplicaciones que se ejecutan en .NET Framework 4.6.NET Framework 4.6 y que tienen como destino una versión anterior de .NET Framework, el valor predeterminado es 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. Se puede habilitar estableciendo la opción de configuración en true.It can be enabled by setting the configuration setting to true.

    • Compatibilidad con HTTP/2 (Windows 10)HTTP/2 Support (Windows 10)

      HTTP/2 es una nueva versión del protocolo HTTP que proporciona un uso mucho mejor de la conexión (menos recorridos de ida y vuelta entre el cliente y el servidor), lo que permite una latencia más baja para los usuarios al cargar páginas web.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. Las páginas web (no de servicios) aprovechan HTTP/2 al máximo, porque el protocolo se optimizó para la solicitud de varios artefactos como parte de una sola experiencia.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 compatibilidad para HTTP/2 se agregó a ASP.NET en .NET Framework 4.6.HTTP/2 support has been added to ASP.NET in the .NET Framework 4.6. Como la funcionalidad de red existe en varios niveles, se necesitaban nuevas características en Windows, IIS y ASP.NET para habilitar 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. Debe ejecutar Windows 10 para usar HTTP/2 con ASP.NET.You must be running on Windows 10 to use HTTP/2 with ASP.NET.

      También se admite HTTP/2, y está activado de forma predeterminada en las aplicaciones de la Plataforma universal de Windows (UWP) de Windows 10 que usan la 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.

      Para proporcionar una forma de usar la característica PUSH_PROMISE en aplicaciones de ASP.NET, se ha agregado un método nuevo con dos sobrecargas, PushPromise(String) y PushPromise(String, String, NameValueCollection), a la clase 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.

      Nota

      Mientras que ASP.NET Core admite HTTP/2, la compatibilidad con la característica PUSH PROMISE aún no se ha agregado.While ASP.NET Core supports HTTP/2, support for the PUSH PROMISE feature has not yet been added.

      El explorador y el servidor web (IIS en Windows) hacen todo el trabajo.The browser and the web server (IIS on Windows) do all the work. No tiene que hacer el trabajo más farragoso para los usuarios.You don't have to do any heavy-lifting for your users.

      La mayoría de los principales navegadores admiten HTTP/2, por lo que probablemente los usuarios se beneficiarán de la compatibilidad con HTTP/2 si el servidor lo admite.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.

    • Compatibilidad con el Protocolo de enlace de tokensSupport for the Token Binding Protocol

      Google y Microsoft colaboraron en un nuevo sistema de autenticación llamado Protocolo de enlace de tokens.Microsoft and Google have been collaborating on a new approach to authentication, called the Token Binding Protocol. La premisa es que los tokens de autenticación (en la memoria caché del navegador) pueden ser robados y usados por delincuentes para acceder a recursos seguros (por ejemplo, su cuenta bancaria) sin necesidad de contraseña ni de otra información privilegiada.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. El nuevo protocolo tiene como objetivo mitigar este problema.The new protocol aims to mitigate this problem.

      El Protocolo de enlace de tokens se implementará en Windows 10 como una característica del explorador.The Token Binding Protocol will be implemented in Windows 10 as a browser feature. Las aplicaciones de ASP.NET participarán en el protocolo para validar la legitimidad de los tokens de autenticación.ASP.NET apps will participate in the protocol, so that authentication tokens are validated to be legitimate. Las implementaciones de cliente y de servidor establecen la protección de extremo a extremo especificada por el protocolo.The client and the server implementations establish the end-to-end protection specified by the protocol.

    • Algoritmos hash de cadena aleatoriaRandomized string hash algorithms

      En .NET Framework 4.5, se introdujo un algoritmo hash de cadena aleatorio.The .NET Framework 4.5 introduced a randomized string hash algorithm. pero no era compatible con ASP.NET porque algunas características de ASP.NET dependían de un código hash estable.However, it was not supported by ASP.NET because of some ASP.NET features depended on a stable hash code. En .NET Framework 4.6.NET Framework 4.6 ya se admiten los algoritmos hash de cadena aleatoria.In .NET Framework 4.6.NET Framework 4.6, randomized string hash algorithms are now supported. Para habilitar esta característica, use la opción de configuración 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 ahora es compatible con la característica Always Encrypted disponible en SQL Server 2016 Community Technology Preview 2 (CTP2).ADO .NET now supports the Always Encrypted feature available in SQL Server 2016 Community Technology Preview 2 (CTP2). Con Always Encrypted, SQL Server puede realizar operaciones en los datos cifrados y, lo mejor de todo, es que la clave de cifrado reside, junto con la aplicación, en el entorno de confianza del cliente y no en el servidor.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. Always Encrypted protege los datos del cliente para que los administradores de bases de datos no tengan acceso a los datos de texto sin formato.Always Encrypted secures customer data so DBAs do not have access to plain text data. El cifrado y descifrado de datos ocurre de forma transparente en el nivel de controlador, lo que minimiza los cambios que deben realizarse en las aplicaciones existentes.Encryption and decryption of data happens transparently at the driver level, minimizing changes that have to be made to existing applications. Para obtener más información, vea Always Encrypted (motor de base de datos) y Always Encrypted (desarrollo de cliente).For details, see Always Encrypted (Database Engine) and Always Encrypted (client development).

  • Compilador JIT de 64 bits para código administrado64-bit JIT Compiler for managed code

    .NET Framework 4.6 incluye una nueva versión del compilador JIT de 64 bits (llamado originalmente RyuJIT).The .NET Framework 4.6 features a new version of the 64-bit JIT compiler (originally code-named RyuJIT). El nuevo compilador de 64 bits proporciona importantes mejoras de rendimiento con respecto al antiguo compilador JIT de 64 bits.The new 64-bit compiler provides significant performance improvements over the older 64-bit JIT compiler. El nuevo compilador de 64 bits está habilitado para los procesos de 64 bits que se ejecutan en .NET Framework 4.6.The new 64-bit compiler is enabled for 64-bit processes running on top of the .NET Framework 4.6. La aplicación se ejecutará en un proceso de 64 bits si se ha compilado como aplicación de 64 bits o AnyCPU y se está ejecutando en un sistema operativo de 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. Aunque se hayan tomado precauciones para efectuar la transición al nuevo compilador de la manera más transparente posible, es posible que se produzcan cambios en el comportamiento.While care has been taken to make the transition to the new compiler as transparent as possible, changes in behavior are possible. Nos gustaría que se pusiera en contacto con nosotros si encuentra algún problema al usar el nuevo compilador JIT.We would like to hear directly about any issues encountered when using the new JIT compiler. Póngase en contacto con nosotros a través de Microsoft Connect si detecta algún problema que pueda estar relacionado con el nuevo compilador JIT de 64 bits.Please contact us through Microsoft Connect if you encounter an issue that may be related to the new 64-bit JIT compiler.

    El nuevo compilador JIT de 64 bits también incluye características de aceleración SIMD de hardware al acoplarse con tipos SIMD habilitados para SIMD en el espacio de nombres System.Numerics, que puede producir notables mejoras en el rendimiento.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.

  • Mejoras en el cargador de ensambladosAssembly loader improvements

    Ahora el cargador de ensamblados usa la memoria de un modo más eficaz al descargar ensamblados de IL después de cargar una imagen NGEN correspondiente.The assembly loader now uses memory more efficiently by unloading IL assemblies after a corresponding NGEN image is loaded. Este cambio reduce la memoria virtual, que es bastante útil en las aplicaciones de 32 bits de gran tamaño (por ejemplo, Visual Studio), y también guarda la memoria física.This change decreases virtual memory, which is particularly beneficial for large 32-bit apps (such as Visual Studio), and also saves physical memory.

  • Cambios en la biblioteca de clases baseBase class library changes

    Se agregaron muchas nuevas API a .NET Framework 4.6.NET Framework 4.6 para habilitar escenarios clave.Many new APIs have been added around to .NET Framework 4.6.NET Framework 4.6 to enable key scenarios. Incluyen los siguientes cambios y adiciones:These include the following changes and additions:

    • Implementaciones de IReadOnlyCollection<T>IReadOnlyCollection<T> implementations

      Las colecciones adicionales implementan IReadOnlyCollection<T>, como Queue<T> y Stack<T>.Additional collections implement IReadOnlyCollection<T> such as Queue<T> and Stack<T>.

    • CultureInfo.CurrentCulture y CultureInfo.CurrentUICultureCultureInfo.CurrentCulture and CultureInfo.CurrentUICulture

      Las propiedades CultureInfo.CurrentCulture y CultureInfo.CurrentUICulture ahora son de lectura y escritura, en lugar de solo lectura.The CultureInfo.CurrentCulture and CultureInfo.CurrentUICulture properties are now read-write rather than read-only. Si asigna un nuevo objeto CultureInfo a estas propiedades, también cambian la referencia cultural del subproceso actual definida por la propiedad Thread.CurrentThread.CurrentCulture y la referencia cultural del subproceso de la interfaz usuario actual definida por las propiedades Thread.CurrentThread.CurrentUICulture.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.

    • Mejoras en la recolección de elementos no utilizados (GC)Enhancements to garbage collection (GC)

      La clase GC ahora incluye los métodos TryStartNoGCRegion y EndNoGCRegion que permiten impedir la recolección de elementos no usados durante la ejecución de una ruta crítica.The GC class now includes TryStartNoGCRegion and EndNoGCRegion methods that allow you to disallow garbage collection during the execution of a critical path.

      Una nueva sobrecarga del método GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) permite controlar si el montón del objeto pequeño y el montón del objeto grande se exploran y compactan o si solo se exploran.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.

    • Tipos habilitados para SIMDSIMD-enabled types

      El espacio de nombres System.Numerics incluye ahora varios tipos habilitados para SIMD, como Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3 y Vector4.The System.Numerics namespace now includes a number of SIMD-enabled types, such as Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3, and Vector4.

      Como el nuevo compilador JIT de 64 bits también incluye características de aceleración de hardware SIMD, hay mejoras de rendimiento considerablemente importantes al usar los tipos habilitados para SIMD con el nuevo compilador JIT de 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.

    • Actualizaciones de criptografíaCryptography updates

      La API System.Security.Cryptography se está actualizando para que sea compatible con las API de criptografía CNG de Windows.The System.Security.Cryptography API is being updated to support the Windows CNG cryptography APIs. Las versiones anteriores de .NET Framework dependían totalmente de una versión anterior de las API de criptografía de Windows como base para la implementación 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. Recibimos solicitudes para admitir la API de CNG, ya que admite algoritmos de criptografía modernos, que son importantes para determinadas categorías de aplicaciones.We have had requests to support the CNG API, since it supports modern cryptography algorithms, which are important for certain categories of apps.

      .NET Framework 4.6 incluye las siguientes mejoras para admitir las API de criptografía de CNG de Windows:The .NET Framework 4.6 includes the following new enhancements to support the Windows CNG cryptography APIs:

      • Un conjunto de métodos de extensión para los certificados X509, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2) y System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2), que devuelven, siempre que sea posible, una implementación basada en CNG en lugar de una implementación basada en CAPIA 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. (algunas tarjetas inteligentes, entre otros, siguen necesitando CAPI, mientras que las API controlan la reserva).(Some smartcards, etc., still require CAPI, and the APIs handle the fallback).

      • La clase System.Security.Cryptography.RSACng, que proporciona una implementación de CNG del algoritmo RSA.The System.Security.Cryptography.RSACng class, which provides a CNG implementation of the RSA algorithm.

      • Mejoras en la API de RSA, de modo que las acciones habituales ya no necesitan ninguna conversión.Enhancements to the RSA API so that common actions no longer require casting. Por ejemplo, el cifrado de datos con un objeto X509Certificate2 necesita un código similar al siguiente en las versiones anteriores de .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)
        

        El código que usa las nuevas API de criptografía en .NET Framework 4.6 se puede reescribir del siguiente modo para evitar la conversión.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)
        
    • Compatibilidad con la conversión de fechas y horas a o desde la hora de UnixSupport for converting dates and times to or from Unix time

      Se han agregado los siguientes métodos nuevos a la estructura DateTimeOffset para admitir la conversión de valores de fecha y hora a o desde la hora de Unix:The following new methods have been added to the DateTimeOffset structure to support converting date and time values to or from Unix time:

    • Modificadores de compatibilidadCompatibility switches

      La nueva clase AppContext agrega una nueva característica de compatibilidad que permite a los autores de bibliotecas proporcionar a sus usuarios un mecanismo uniforme para cancelar la participación de la nueva funcionalidad.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. Establece un contrato flexible entre los componentes para poder comunicar una solicitud de cancelación de la participación.It establishes a loosely-coupled contract between components in order to communicate an opt-out request. Esta capacidad normalmente es importante cuando se realiza un cambio en la funcionalidad existente.This capability is typically important when a change is made to existing functionality. Por el contrario, la nueva funcionalidad participa de forma implícita.Conversely, there is already an implicit opt-in for new functionality.

      Con AppContext, las bibliotecas definen y exponen modificadores de compatibilidad, mientras que el código que depende de ellas puede configurar dichos modificadores para que afecten al comportamiento de la biblioteca.With AppContext, libraries define and expose compatibility switches, while code that depends on them can set those switches to affect the library behavior. De forma predeterminada, las bibliotecas proporcionan la nueva funcionalidad y solo la modifican (es decir, ofrecen la funcionalidad anterior) si el modificador está establecido.By default, libraries provide the new functionality, and they only alter it (that is, they provide the previous functionality) if the switch is set.

      Una aplicación (o una biblioteca) puede declarar el valor de un modificador (que es siempre un valor Boolean) que define una biblioteca dependiente.An application (or a library) can declare the value of a switch (which is always a Boolean value) that a dependent library defines. El modificador siempre es implícitamente false.The switch is always implicitly false. Cuando el modificador se establece en true, se habilita.Setting the switch to true enables it. Cuando el modificador se establece explícitamente en false, proporciona el nuevo comportamiento.Explicitly setting the switch to false provides the new behavior.

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

      La biblioteca debe comprobar si un consumidor declaró el valor del conmutador y, después, actuar en consecuencia.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
         }
      }
      

      Es conveniente usar un formato coherente para los modificadores porque son un contrato formal que expone una biblioteca.It's beneficial to use a consistent format for switches, since they are a formal contract exposed by a library. Las siguientes son dos formatos obvios.The following are two obvious formats.

      • Modificador.espacio de nombres.nombre del modificadorSwitch.namespace.switchname

      • Modificador.biblioteca.nombre del modificadorSwitch.library.switchname

    • Cambios en el modelo asincrónico basado en tareas (TAP)Changes to the task-based asynchronous pattern (TAP)

      Para las aplicaciones que tienen como destino .NET Framework 4.6.NET Framework 4.6, los objetos Task y Task<TResult> heredan la referencia cultural y la referencia cultural de interfaz de usuario del subproceso que realiza la llamada.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. No se ve afectado el comportamiento de las aplicaciones que tienen como destino las versiones anteriores de .NET Framework o que no especifican una versión concreta de .NET Framework.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. Para obtener más información, vea la sección "Referencia cultural y operaciones asincrónicas basadas en tareas" del tema sobre la clase CultureInfo.For more information, see the "Culture and task-based asynchronous operations" section of the CultureInfo class topic.

      La clase System.Threading.AsyncLocal<T> le permite representar datos de ambiente locales de un flujo de control asincrónico determinado, por ejemplo, un método 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. Se puede usar para conservar los datos en todos los subprocesos.It can be used to persist data across threads. También puede definir un método de devolución de llamada que se le notifique al cambiar los datos de ambiente, ya sea porque se ha cambiado la propiedad AsyncLocal<T>.Value de forma explícita o porque el subproceso ha encontrado una transición de contexto.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.

      Se han agregado tres prácticos métodos, Task.CompletedTask, Task.FromCanceled y Task.FromException, al patrón asincrónico basado en tareas (TAP) para que devuelva las tareas completadas en un estado determinado.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 clase NamedPipeClientStream ahora admite la comunicación asincrónica con su nuevo método ConnectAsync.The NamedPipeClientStream class now supports asynchronous communication with its new ConnectAsync. .method.

    • EventSource ahora permite escribir en el Registro de eventosEventSource now supports writing to the Event log

      Ahora puede usar la clase EventSource para registrar mensajes administrativos u operativos en el registro de eventos, además de cualquier sesión ETW existente que se haya creado en el equipo.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. Anteriormente, tenía que usar el paquete de NuGet Microsoft.Diagnostics.Tracing.EventSource para poder aprovechar esta funcionalidad,In the past, you had to use the Microsoft.Diagnostics.Tracing.EventSource NuGet package for this functionality. que ahora está integrada en .NET Framework 4.6.This functionality is now built-into the .NET Framework 4.6.

      El paquete de NuGet y .NET Framework 4.6 se han actualizado con las siguientes características:Both the NuGet package and the .NET Framework 4.6 have been updated with the following features:

      • Eventos dinámicosDynamic events

        Permite eventos definidos "sobre la marcha" sin crear métodos de eventos.Allows events defined "on the fly" without creating event methods.

      • Cargas enriquecidasRich payloads

        Permite que las matrices y clases con atributos especiales, así como los tipos primitivos, se pasen como cargaAllows specially attributed classes and arrays as well as primitive types to be passed as a payload

      • Seguimiento de actividadActivity tracking

        Hace que los eventos de inicio y de detención etiqueten eventos entre ellos con un identificador que representa todas las actividades actualmente activas.Causes Start and Stop events to tag events between them with an ID that represents all currently active activities.

      Para admitir estas características, se ha agregado el método Write sobrecargado a la clase EventSource.To support these features, the overloaded Write method has been added to the EventSource class.

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

    • Mejoras en el HDPIHDPI improvements

      Se ha mejorado la compatibilidad con HDPI en WPF en .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. Se han hecho cambios en el redondeo del diseño para reducir las instancias de recorte en los controles que contienen bordes.Changes have been made to layout rounding to reduce instances of clipping in controls with borders. De forma predeterminada, esta característica solo está habilitada si se establece TargetFrameworkAttribute en .NET 4.6.By default, this feature is enabled only if your TargetFrameworkAttribute is set to .NET 4.6. Las aplicaciones que tienen como destino versiones anteriores de .NET Framework y que se ejecutan en .NET Framework 4.6.NET Framework 4.6 pueden participar en el nuevo comportamiento agregando la siguiente línea a la sección <runtime> del archivo 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"
      />
      

      Actualmente, las ventanas de WPF que ocupan varios monitores con diferentes valores de PPP (configuración de varios PPP) se representan completamente sin regiones oscurecidas.WPF windows straddling multiple monitors with different DPI settings (Multi-DPI setup) are now completely rendered without blacked-out regions. Puede deshabilitar este comportamiento agregando la siguiente línea a la sección <appSettings> del archivo 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"/>
      

      Se ha agregado a System.Windows.Input.Cursor compatibilidad para cargar automáticamente el cursor derecho según la configuración de PPP.Support for automatically loading the right cursor based on DPI setting has been added to System.Windows.Input.Cursor.

    • Mejor si es táctilTouch is better

      Los informes de los clientes en Connect acerca del comportamiento impredecible de la función táctil se han tratado en .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. Ahora, el umbral de doble punteo de las aplicaciones de WPF y de la Tienda Windows es el mismo en Windows 8.1 y versiones superiores.The double tap threshold for Windows Store applications and WPF applications is now the same in Windows 8.1 and above.

    • Compatibilidad con las ventanas secundarias transparentesTransparent child window support

      En .NET Framework 4.6.NET Framework 4.6, WPF admite las ventanas secundarias transparentes en Windows 8.1 y versiones superiores,WPF in the .NET Framework 4.6.NET Framework 4.6 supports transparent child windows in Windows 8.1 and above. de manera que puede crear ventanas secundarias transparentes y no rectangulares en las ventanas de nivel superior.This allows you to create non-rectangular and transparent child windows in your top-level windows. Puede habilitar esta característica estableciendo la propiedad HwndSourceParameters.UsesPerPixelTransparency en true.You can enable this feature by setting the HwndSourceParameters.UsesPerPixelTransparency property to true.

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

    • Compatibilidad con SSLSSL support

      WCF ahora admite la versión con SSL TLS 1.1 y TLS 1.2, además de SSL 3.0 y TLS 1.0, al usar NetTcp con la autenticación de cliente y la seguridad de transporte.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. Ahora se puede seleccionar el protocolo que se quiere usar o bien deshabilitar protocolos antiguos menos seguros;It is now possible to select which protocol to use, or to disable old lesser secure protocols. para ello, establezca la propiedad SslProtocols o agregue lo siguiente a un archivo de configuración.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>
      
    • Enviar mensajes con diferentes conexiones HTTPSending messages using different HTTP connections

      Ahora WCF permite que los usuarios se aseguren de que se han enviado determinados mensajes con diferentes conexiones HTTP subyacentes.WCF now allows users to ensure certain messages are sent using different underlying HTTP connections. Existen dos modos para hacer esto:There are two ways to do this:

      • Usar un prefijo de nombre de grupo de conexiónUsing a connection group name prefix

        Los usuarios pueden especificar una cadena que WCF usará como prefijo del nombre del grupo de conexión.Users can specify a string that WCF will use as a prefix for the connection group name. Se envían dos mensajes con prefijos diferentes por distintas conexiones HTTP subyacentes.Two messages with different prefixes are sent using different underlying HTTP connections. Establezca el prefijo agregando un par clave-valor a la propiedad Message.Properties del mensaje.You set the prefix by adding a key/value pair to the message's Message.Properties property. La clave es "httpTransporteConexiónGrupoNombrePrefijo"; el valor es el prefijo deseado.The key is "HttpTransportConnectionGroupNamePrefix"; the value is the desired prefix.

      • Usar distintos generadores de canalesUsing different channel factories

        Los usuarios también pueden habilitar una característica que garantiza que los mensajes enviados por canales creados por distintos generadores de canales usen diferentes conexiones HTTP subyacentes.Users can also enable a feature that ensures that messages sent using channels created by different channel factories will use different underlying HTTP connections. Para habilitar esta característica, los usuarios deben establecer el siguiente valor appSetting en 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)

    Ahora puede especificar los segundos durante los que un servicio de flujo de trabajo retendrá una solicitud de operación fuera de servicio cuando haya un marcador que no sea de protocolo pendiente antes de que expire la solicitud.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 marcador "no de protocolo" es un marcador que no está relacionado con las actividades de recepción pendientes.A "non-protocol" bookmark is a bookmark that is not related to outstanding Receive activities. Algunas actividades crean marcadores no de protocolo dentro de su implementación, por lo que es posible que no sea obvio que exista un marcador no de protocolo.Some activities create non-protocol bookmarks within their implementation, so it may not be obvious that a non-protocol bookmark exists. Entre ellas se encuentran Estado y Selección.These include State and Pick. Si tiene un servicio de flujo de trabajo implementado con un equipo de estado o que contiene una actividad de selección, lo más probable es que tenga marcadores no de protocolo.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. Especifique el intervalo agregando una línea como la siguiente a la sección appSettings del archivo 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"/>
    

    El valor predeterminado es de 60 segundos.The default value is 60 seconds. Si value se establece en 0, las solicitudes fuera de servicio se rechazan inmediatamente con un error que contiene un texto similar a este: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.
    

    Este es el mismo mensaje que aparece si recibe un mensaje de operación fuera de servicio y no hay ningún marcador que no sea de protocolo.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 el valor del elemento FilterResumeTimeoutInSeconds es distinto de cero, hay marcadores no de protocolo y el intervalo de tiempo de espera expira, se produce un error en la operación con un mensaje de tiempo de espera.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.

  • TransaccionesTransactions

    Ahora puede incluir el identificador de transacción distribuida para la transacción que provocó que se produjera una excepción derivada de TransactionException.You can now include the distributed transaction identifier for the transaction that has caused an exception derived from TransactionException to be thrown. Para ello, agregue la siguiente clave a la sección appSettings del archivo 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"/>
    

    El valor predeterminado es false.The default value is false.

  • RedesNetworking

    • Reutilización del socketSocket reuse

      Windows 10 incluye un nuevo algoritmo de red de alta escalabilidad que optimiza los recursos del equipo con la reutilización de los puertos locales para las conexiones TCP salientes.Windows 10 includes a new high-scalability networking algorithm that makes better use of machine resources by reusing local ports for outbound TCP connections. .NET Framework 4.6 es compatible con este algoritmo y permite que las aplicaciones de .NET aprovechen el nuevo comportamiento.The .NET Framework 4.6 supports the new algorithm, enabling .NET apps to take advantage of the new behavior. En versiones anteriores de Windows había un límite de conexiones simultáneas artificial (normalmente de 16.384, el tamaño predeterminado del intervalo de puertos dinámicos) y esto podía limitar la escalabilidad de un servicio provocando el agotamiento de puertos durante la carga.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.

      Se han agregado dos API nuevas a .NET Framework 4.6.NET Framework 4.6 para permitir la reutilización de puertos, lo que elimina de forma eficaz el límite de 64 K de las conexiones simultáneas: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:

      De forma predeterminada, la propiedad ServicePointManager.ReusePort es false, a menos que el valor HWRPortReuseOnSocketBind de la clave del Registro HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 se establezca en 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. Para habilitar la reutilización del puerto local en las conexiones HTTP, establezca la propiedad ServicePointManager.ReusePort en true.To enable local port reuse on HTTP connections, set the ServicePointManager.ReusePort property to true. Esto hace que todas las conexiones de socket TCP salientes de HttpClient y HttpWebRequest usen una nueva opción de socket de Windows 10, SO_REUSE_UNICASTPORT, que permite la reutilización del puerto 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.

      Los desarrolladores que crean una aplicación solo de sockets pueden especificar la opción System.Net.Sockets.SocketOptionName al llamar a un método (como Socket.SetSocketOption) para que los sockets de salida reutilicen los puertos locales durante el enlace.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.

    • Compatibilidad con nombres de dominio internacionales y PunyCodeSupport for international domain names and PunyCode

      Se ha agregado una nueva propiedad, IdnHost, a la clase Uri para ofrecer una mejor compatibilidad con los nombres de dominio internacionales y PunyCode.A new property, IdnHost, has been added to the Uri class to better support international domain names and PunyCode.

  • Cambio de tamaño en controles de Windows FormsResizing in Windows Forms controls.

    Esta característica se amplió en .NET Framework 4.6.NET Framework 4.6 para incluir los tipos DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn y ToolStripSplitButton y el rectángulo especificado por la propiedad Bounds que se usa al dibujar un 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.

    Esta característica es opcional.This is an opt-in feature. Para habilitarla, establezca el elemento EnableWindowsFormsHighDpiAutoResizing en true en el archivo de configuración de la aplicación (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>
    
  • Compatibilidad para codificaciones de páginas de códigosSupport for code page encodings

    Núcleo de .NET.NET Core admite principalmente las codificaciones Unicode y, de forma predeterminada, proporciona compatibilidad limitada para las codificaciones de páginas de códigos.primarily supports the Unicode encodings and by default provides limited support for code page encodings. Puede agregar compatibilidad para codificaciones de páginas de códigos disponibles en .NET Framework pero no admitidas en Núcleo de .NET.NET Core registrando codificaciones de páginas de códigos con el método Encoding.RegisterProvider.You can add support for code page encodings available in the .NET Framework but unsupported in Núcleo de .NET.NET Core by registering code page encodings with the Encoding.RegisterProvider method. Para obtener más información, vea System.Text.CodePagesEncodingProvider.For more information, see System.Text.CodePagesEncodingProvider.

  • .NET Native.NET Native

    Las aplicaciones de Windows para Windows 10 que tienen como destino Núcleo de .NET.NET Core y están escritas en C# o Visual Basic pueden aprovechar una nueva tecnología que compila las aplicaciones en código nativo en lugar de IL.Windows apps for Windows 10 that target Núcleo de .NET.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. Generan aplicaciones que se caracterizan por un inicio y tiempos de ejecución más rápidos.They produce apps characterized by faster startup and execution times. Para obtener más información, consulte Compilar aplicaciones con .NET Native.For more information, see Compiling Apps with .NET Native. Para obtener información general sobre .NET Native en la que se examina cómo difiere de la compilación JIT y de NGEN, y lo que eso conlleva para el código, vea .NET Native y compilación.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.

    Las aplicaciones se compilan en código nativo de forma predeterminada cuando se compilan con Visual Studio 2015 o versiones posteriores.Your apps are compiled to native code by default when you compile them with Visual Studio 2015 or later. Para obtener más información, vea Introducción a .NET Native.For more information, see Getting Started with .NET Native.

    Para admitir la depuración de aplicaciones .NET Native, se agregó una serie de interfaces y enumeraciones nuevas a la API de depuración no administrada.To support debugging .NET Native apps, a number of new interfaces and enumerations have been added to the unmanaged debugging API. Para obtener más información, consulte el tema Depuración (Referencia de la API no administrada).For more information, see the Debugging (Unmanaged API Reference) topic.

  • Paquetes de .NET Framework de código abiertoOpen-source .NET Framework packages

    Los paquetes de .NET Core como las colecciones inmutables, las API de SIMD y las API de red, como las que se encuentran en el espacio de nombres System.Net.Http, ahora están disponibles como paquetes de código abierto en 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. Para tener acceso al código, vea CoreFx en GitHub.To access the code, see CoreFx on GitHub. Para obtener más información y saber cómo contribuir a estos paquetes, vea .NET Core y código abierto y la página principal de .NET en GitHub.For more information and how to contribute to these packages, see .NET Core and Open-Source, .NET Home Page on GitHub.

Volver al principioBack to top

Novedades de .NET Framework 4.5.2What's new in the .NET Framework 4.5.2

Volver al principioBack to top

Novedades de .NET Framework 4.5.1What's new in the .NET Framework 4.5.1

Actualizaciones de abril de 2014:April 2014 updates:

  • Visual Studio 2013 Update 2 incluye actualizaciones para las plantillas de la Biblioteca de clases portable para garantizar la compatibilidad en los escenarios siguientes:Visual Studio 2013 Update 2 includes updates to the Portable Class Library templates to support these scenarios:

    • Puede usar las API de Windows en tiempo de ejecución en bibliotecas portables cuyo destino sea Windows 8.1, Windows Phone 8.1 y 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.

    • Puede incluir XAML (tipos de Windows.UI.XAML) en las bibliotecas portables cuyo destino es Windows 8.1 o 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. Se admiten las siguientes plantillas de XAML: página en blanco, diccionario de recursos, control basado en modelo y control de usuario.The following XAML templates are supported: Blank Page, Resource Dictionary, Templated Control, and User Control.

    • Se puede crear un componente de Windows en tiempo de ejecución portable (archivo .winmd) para usarlo en aplicaciones de la Tienda que tengan como destino Windows 8.1 y 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.

    • Puede cambiar el destino de una biblioteca de clases de la Tienda Windows o la Tienda de Windows Phone como biblioteca de clases portable.You can retarget a Windows Store or Windows Phone Store class library like a Portable Class Library.

    Para obtener más información sobre estos cambios, vea Biblioteca de clases portable.For more information about these changes, see Portable Class Library.

  • El conjunto de contenido de .NET Framework ahora incluye documentación para .NET Native.NET Native, que es una tecnología de precompilación para crear e implementar aplicaciones de 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 compila aplicaciones directamente en código nativo, en lugar de hacerlo en un lenguaje intermedio (IL), lo que mejora el rendimiento.compiles your apps directly to native code, rather than to intermediate language (IL), for better performance. Para obtener información detallada, vea Compilar aplicaciones con .NET Native.For details, see Compiling Apps with .NET Native.

  • .NET Framework Reference Source proporciona una nueva experiencia de navegación y mejores funciones.The .NET Framework Reference Source provides a new browsing experience and enhanced functionality. Ahora puede navegar en línea por el código fuente de .NET Framework, descargar la referencia para visualizarlo sin conexión y examinar los orígenes (incluidas revisiones y actualizaciones) durante la depuración.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. Para obtener más información, vea la entrada de blog A new look for .NET Reference Source (Un nuevo aspecto para el origen de referencia de .NET).For more information, see the blog entry A new look for .NET Reference Source.

Estas son las principales características nuevas y mejoras realizadas en .NET Framework 4.5.1:Core new features and enhancements in the .NET Framework 4.5.1 include:

  • Redirección automática de enlace de ensamblados.Automatic binding redirection for assemblies. A partir de Visual Studio 2013, cuando se compila una aplicación cuyo destino es .NET Framework 4.5.1.NET Framework 4.5.1, se pueden agregar al archivo de configuración de la aplicación redirecciones de enlace si la aplicación o sus componentes hacen referencia a varias versiones del mismo ensamblado.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. Esta característica también se puede habilitar en proyectos que tienen como destino versiones anteriores de .NET Framework.You can also enable this feature for projects that target older versions of the .NET Framework. Para obtener más información, vea Cómo: Habilitar y deshabilitar redireccionamiento de enlaces automático.For more information, see How to: Enable and Disable Automatic Binding Redirection.

  • Capacidad de recopilar información de diagnóstico para ayudar a los desarrolladores a mejorar el rendimiento de las aplicaciones de servidor y en la nube.Ability to collect diagnostics information to help developers improve the performance of server and cloud applications. Para obtener más información, vea los métodos WriteEventWithRelatedActivityId y WriteEventWithRelatedActivityIdCore de la clase EventSource.For more information, see the WriteEventWithRelatedActivityId and WriteEventWithRelatedActivityIdCore methods in the EventSource class.

  • Capacidad de compactar explícitamente el montón de objetos grandes (LOH) durante la recolección de elementos no utilizados.Ability to explicitly compact the large object heap (LOH) during garbage collection. Para obtener más información, vea la propiedad GCSettings.LargeObjectHeapCompactionMode.For more information, see the GCSettings.LargeObjectHeapCompactionMode property.

  • Mejoras adicionales de rendimiento como, por ejemplo, la suspensión de la aplicación ASP.NET, mejoras de JIT con varios núcleos o reducción del tiempo de inicio de la aplicación tras una actualización de .NET Framework.Additional performance improvements such as ASP.NET app suspension, multi-core JIT improvements, and faster app startup after a .NET Framework update. Para obtener información detallada, vea las entradas de blog relativas al anuncio de .NET Framework 4.5.1 y la suspensión de aplicaciones ASP.NET.For details, see the .NET Framework 4.5.1 announcement and the ASP.NET app suspend blog post.

Las mejoras en Windows Forms son las siguientes:Improvements to Windows Forms include:

  • Cambio de tamaño en controles de Windows Forms.Resizing in Windows Forms controls. Puede usar el valor de PPP del sistema para cambiar el tamaño de los componentes de controles (por ejemplo, los iconos que aparecen en una cuadrícula de propiedades); para ello, active esta opción con una entrada en el archivo de configuración de la aplicación (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. Actualmente, esta característica es compatible con los siguientes controles de Windows Forms:This feature is currently supported in the following Windows Forms controls:

    Para activar esta característica, agregue un nuevo elemento <appSettings> al archivo de configuración (app.config) y establezca el elemento EnableWindowsFormsHighDpiAutoResizing en true: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>
    

Algunas de las mejoras realizadas durante la depuración de las aplicaciones de .NET Framework en Visual Studio 2013 son:Improvements when debugging your .NET Framework apps in Visual Studio 2013 include:

  • Valores devueltos en el depurador de Visual Studio.Return values in the Visual Studio debugger. Al depurar una aplicación administrada en Visual Studio 2013, en la ventana Automático se muestran los valores y tipos devueltos de los métodos.When you debug a managed app in Visual Studio 2013, the Autos window displays return types and values for methods. Esta información está disponible para el escritorio, la Tienda Windows y las aplicaciones Windows Phone.This information is available for desktop, Windows Store, and Windows Phone apps. Para más información, vea Examinar los valores devueltos de llamadas a métodos.For more information, see Examine return values of method calls.

  • Editar y continuar en aplicaciones de 64 bits.Edit and Continue for 64-bit apps. Visual Studio 2013 admite la característica Editar y continuar en aplicaciones administradas de 64 bits para el escritorio, la Tienda Windows y Windows Phone.Visual Studio 2013 supports the Edit and Continue feature for 64-bit managed apps for desktop, Windows Store, and Windows Phone. Las limitaciones existentes siguen en vigor para las aplicaciones de 32 bits y 64 bits (vea la última sección del artículo Cambios admitidos en el código (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).

  • Depuración asincrónica.Async-aware debugging. Para facilitar la depuración de aplicaciones asincrónicas en Visual Studio 2013, la pila de llamadas oculta el código de infraestructura proporcionado por los compiladores para permitir la programación asincrónica y, además, encadena los principales marcos lógicos para que pueda seguir la ejecución lógica del programa con mayor claridad.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. La ventana Tareas reemplaza a la ventana Tareas paralelas, donde se muestran las tareas relacionadas con un punto de interrupción determinado, así como las demás tareas que actualmente están activas o programadas en la aplicación.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. Puede obtener más información sobre esta característica en la sección "Async-aware debugging" (Depuración asincrónica) de la publicación sobre el anuncio de .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.

  • Mayor compatibilidad con las excepciones de los componentes de Windows en tiempo de ejecución.Better exception support for Windows Runtime components. En Windows 8.1Windows 8.1, las excepciones que se inician en aplicaciones de la Tienda Windows conservan información sobre el error que provocó la excepción, incluso entre diferentes lenguajes.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. Puede obtener más información sobre esta característica en la sección "Windows Store app development" (Desarrollo de aplicaciones de la Tienda Windows) de la publicación del anuncio de .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.

A partir de Visual Studio 2013, puede usar la herramienta de optimización guiada por perfiles administrados (Mpgo.exe) para optimizar las aplicaciones de Tienda Windows 8.xWindows 8.x Store, así como las de escritorio.Starting with Visual Studio 2013, you can use the Managed Profile Guided Optimization Tool (Mpgo.exe) to optimize Tienda Windows 8.xWindows 8.x Store apps as well as desktop apps.

Para descubrir las nuevas características de ASP.NET 4.5.1, vea ASP.NET and Web Tools for Visual Studio 2013 Release Notes (Notas de la versión de ASP.NET y herramientas web para Visual Studio 2013).For new features in ASP.NET 4.5.1, see ASP.NET and Web Tools for Visual Studio 2013 Release Notes.

Volver al principioBack to top

Novedades de .NET Framework 4.5What's new in the .NET Framework 4.5

Principales características nuevas y mejorasCore new features and improvements

  • Capacidad para reducir los reinicios del sistema mediante la detección y cierre de las aplicaciones de .NET Framework 4 durante la implementación.Ability to reduce system restarts by detecting and closing .NET Framework 4 applications during deployment. Vea Reducir los reinicios del sistema durante las instalaciones de .NET Framework 4.5.See Reducing System Restarts During .NET Framework 4.5 Installations.

  • Compatibilidad con matrices mayores de 2 gigabytes (GB) en plataformas de 64 bits.Support for arrays that are larger than 2 gigabytes (GB) on 64-bit platforms. Esta característica se puede habilitar en el archivo de configuración de la aplicación.This feature can be enabled in the application configuration file. Consulte el elemento <gcAllowVeryLargeObjects>, donde también se indican otras restricciones de tamaño de objeto y de tamaño de matriz.See the <gcAllowVeryLargeObjects> element, which also lists other restrictions on object size and array size.

  • Mayor rendimiento a través de la recolección de elementos no utilizados en segundo plano en el caso de los servidores.Better performance through background garbage collection for servers. Cuando se usa la recolección de elementos no utilizados de los servidores en .NET Framework 4.5.NET Framework 4.5, se habilita automáticamente la recolección de elementos no utilizados en segundo plano.When you use server garbage collection in the .NET Framework 4.5.NET Framework 4.5, background garbage collection is automatically enabled. Vea la sección sobre la recolección de elementos no utilizados en segundo plano de los servidores del tema Fundamentals of Garbage Collection (Fundamentos de la recolección de elementos no utilizados).See the Background Server Garbage Collection section of the Fundamentals of Garbage Collection topic.

  • Compilación Just-in-time (JIT) en segundo plano, que se encuentra disponible opcionalmente en los procesadores de varios núcleos para mejorar el rendimiento de la aplicación.Background just-in-time (JIT) compilation, which is optionally available on multi-core processors to improve application performance. Vea ProfileOptimization.See ProfileOptimization.

  • Capacidad para limitar el tiempo durante el cual el motor de expresiones regulares intentará resolver una expresión regular antes de agotar el tiempo de espera. Vea la propiedad 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.

  • Capacidad para definir la referencia cultural predeterminada de un dominio de aplicación.Ability to define the default culture for an application domain. Vea la descripción de la clase CultureInfo.See the CultureInfo class.

  • Compatibilidad de la consola con la codificación Unicode (UTF-16).Console support for Unicode (UTF-16) encoding. Vea la descripción de la clase Console.See the Console class.

  • Compatibilidad con el control de versiones de ordenación cultural de cadenas y datos de comparación.Support for versioning of cultural string ordering and comparison data. Vea la descripción de la clase SortVersion.See the SortVersion class.

  • Mayor rendimiento al recuperar recursos.Better performance when retrieving resources. Vea Empaquetar e implementar recursos.See Packaging and Deploying Resources.

  • Mejoras en la compresión Zip para reducir el tamaño de un archivo comprimido.Zip compression improvements to reduce the size of a compressed file. Vea el espacio de nombres System.IO.Compression.See the System.IO.Compression namespace.

  • Capacidad de personalizar un contexto de reflexión para invalidar el comportamiento predeterminado de reflexión a través de la clase CustomReflectionContext.Ability to customize a reflection context to override default reflection behavior through the CustomReflectionContext class.

  • Compatibilidad con la versión 2008 del estándar de internacionalización de nombres de dominio de las aplicaciones (IDNA) cuando se utiliza la clase System.Globalization.IdnMapping en 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.

  • Delegación de comparación de cadenas en el sistema operativo, que implementa Unicode 6.0, cuando se usa .NET Framework en 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. Al ejecutarse en otras plataformas, .NET Framework incluye sus propios datos de comparación de cadenas, que implementan Unicode 5.x.When running on other platforms, the .NET Framework includes its own string comparison data, which implements Unicode 5.x. Vea la clase String y la sección Comentarios de la clase SortVersion.See the String class and the Remarks section of the SortVersion class.

  • Capacidad para calcular los códigos hash de cadenas en cada dominio de aplicación.Ability to compute the hash codes for strings on a per application domain basis. Vea el elemento <UseRandomizedStringHashAlgorithm>.See <UseRandomizedStringHashAlgorithm> Element.

  • Compatibilidad con la reflexión de tipos dividida entre las clases Type y TypeInfo.Type reflection support split between Type and TypeInfo classes. Vea Reflection in the .NET Framework for Windows Store Apps (Reflexión en .NET Framework para aplicaciones de la Tienda Windows).See Reflection in the .NET Framework for Windows Store Apps.

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

En .NET Framework 4.5.NET Framework 4.5, Managed Extensibility Framework (MEF) cuenta con las siguientes características nuevas:In the .NET Framework 4.5.NET Framework 4.5, the Managed Extensibility Framework (MEF) provides the following new features:

  • Compatibilidad con los tipos genéricos.Support for generic types.

  • Modelo de programación basado en convenciones que permite crear elementos basándose en convenciones de nomenclatura en lugar de en atributos.Convention-based programming model that enables you to create parts based on naming conventions rather than attributes.

  • Ámbitos múltiples.Multiple scopes.

  • Un subconjunto de MEF que puede usar cuando cree aplicaciones de la Tienda Windows 8.xWindows 8.x Store.A subset of MEF that you can use when you create Tienda Windows 8.xWindows 8.x Store apps. Este subconjunto está disponible como un paquete descargable en la galería de NuGet.This subset is available as a downloadable package from the NuGet Gallery. Para instalar el paquete, abra el proyecto en Visual Studio, elija Administrar paquetes de NuGet en el menú Proyecto y busque en línea el paquete 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.

Para obtener más información, vea Managed Extensibility Framework (MEF).For more information, see Managed Extensibility Framework (MEF).

Operaciones de archivo asincrónicasAsynchronous file operations

En .NET Framework 4.5.NET Framework 4.5, se agregaron nuevas características asincrónicas a los lenguajes C# y Visual Basic.In the .NET Framework 4.5.NET Framework 4.5, new asynchronous features were added to the C# and Visual Basic languages. Estas características agregan un modelo basado en tareas para realizar operaciones asincrónicas.These features add a task-based model for performing asynchronous operations. Para utilizar este nuevo modelo, use los métodos asincrónicos de las clases de E/S.To use this new model, use the asynchronous methods in the I/O classes. Vea E/S de archivos asincrónica.See Asynchronous File I/O.

HerramientasTools

En .NET Framework 4.5.NET Framework 4.5, el generador de archivos de recursos (Resgen.exe) permite crear un archivo .resw para su uso en aplicaciones de la Tienda Windows 8.xWindows 8.x Store desde un archivo .resources incrustado en un ensamblado de .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 Tienda Windows 8.xWindows 8.x Store apps from a .resources file embedded in a .NET Framework assembly. Para obtener más información, vea Resgen.exe (Resource File Generator) (Resgen.exe [generador de archivos de recursos]).For more information, see Resgen.exe (Resource File Generator).

La optimización guiada por perfiles administrados (Mpgo.exe) permite mejorar el tiempo de inicio de la aplicación, la utilización de la memoria (el tamaño del espacio de trabajo) y el rendimiento mediante la optimización de los ensamblados de imagen nativos.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. La herramienta de línea de comandos genera datos de perfil para los ensamblados nativos de aplicación de la imagen.The command-line tool generates profile data for native image application assemblies. Vean Mpgo.exe (Managed Profile Guided Optimization Tool) (Mpgo.exe [herramienta de optimización guiada por perfiles administrados]).See Mpgo.exe (Managed Profile Guided Optimization Tool). A partir de Visual Studio 2013, puede usar Mpgo.exe para optimizar las aplicaciones de Tienda Windows 8.xWindows 8.x Store, así como las de escritorio.Starting with Visual Studio 2013, you can use Mpgo.exe to optimize Tienda Windows 8.xWindows 8.x Store apps as well as desktop apps.

Informática en paraleloParallel computing

.NET Framework 4.5.NET Framework 4.5 cuenta con varias características y mejoras nuevas para el procesamiento informático en paralelo.The .NET Framework 4.5.NET Framework 4.5 provides several new features and improvements for parallel computing. Entre estas se incluyen un rendimiento mejorado, mayor control, mejor compatibilidad con la programación asincrónica, una nueva biblioteca de flujo de datos y mejor compatibilidad para la depuración y el análisis de rendimiento en paralelo.These include improved performance, increased control, improved support for asynchronous programming, a new dataflow library, and improved support for parallel debugging and performance analysis. Vea la entrada What’s New for Parallelism in .NET 4.5 (Novedades de paralelismo en .NET 4.5) de la sección sobre Programación en paralelo del blog sobre .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 y 4.5.1 incorporan el enlace de modelos de formularios Web Forms, compatibilidad con WebSocket, controladores asincrónicos, mejoras de rendimiento y muchas otras características.ASP.NET 4.5 and 4.5.1 add model binding for Web Forms, WebSocket support, asynchronous handlers, performance enhancements, and many other features. Para obtener más información, vea los siguientes recursos:For more information, see the following resources:

Redes Networking

.NET Framework 4.5.NET Framework 4.5 proporciona una nueva interfaz de programación para aplicaciones HTTP.The .NET Framework 4.5.NET Framework 4.5 provides a new programming interface for HTTP applications. Para obtener más información, vea los nuevos espacios de nombres System.Net.Http y System.Net.Http.Headers.For more information, see the new System.Net.Http and System.Net.Http.Headers namespaces.

También se incluye compatibilidad con una nueva interfaz de programación para aceptar e interactuar con una conexión WebSocket mediante el objeto HttpListener existente y las clases relacionadas.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. Para obtener más información, vea el nuevo espacio de nombres System.Net.WebSockets y la clase HttpListener.For more information, see the new System.Net.WebSockets namespace and the HttpListener class.

Además, .NET Framework 4.5.NET Framework 4.5 incluye las siguientes mejoras de red:In addition, the .NET Framework 4.5.NET Framework 4.5 includes the following networking improvements:

  • Compatibilidad de URI conforme a RFC.RFC-compliant URI support. Para obtener más información, vea Uri y las clases relacionadas.For more information, see Uri and related classes.

  • Compatibilidad con el análisis de nombres de dominio internacionalizados (IDN).Support for Internationalized Domain Name (IDN) parsing. Para obtener más información, vea Uri y las clases relacionadas.For more information, see Uri and related classes.

  • Compatibilidad con la internacionalización de direcciones de correo electrónico (EAI).Support for Email Address Internationalization (EAI). Para obtener más información, vea el espacio de nombres System.Net.Mail.For more information, see the System.Net.Mail namespace.

  • Compatibilidad mejorada de IPv6.Improved IPv6 support. Para obtener más información, vea el espacio de nombres System.Net.NetworkInformation.For more information, see the System.Net.NetworkInformation namespace.

  • Compatibilidad con el socket de modo dual.Dual-mode socket support. Para obtener más información, vea las clases Socket y TcpListener.For more information, see the Socket and TcpListener classes.

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

En .NET Framework 4.5.NET Framework 4.5, Windows Presentation Foundation (WPF) contiene cambios y mejoras en las áreas siguientes:In the .NET Framework 4.5.NET Framework 4.5, Windows Presentation Foundation (WPF) contains changes and improvements in the following areas:

  • El nuevo control Ribbon, que permite implementar una interfaz de usuario en forma de cinta que incluye una barra de herramientas de acceso rápido, un menú de aplicación y pestañas.The new Ribbon control, which enables you to implement a ribbon user interface that hosts a Quick Access Toolbar, Application Menu, and tabs.

  • La nueva interfaz INotifyDataErrorInfo, que admite la validación de datos sincrónica y asincrónica.The new INotifyDataErrorInfo interface, which supports synchronous and asynchronous data validation.

  • Nuevas características para las clases VirtualizingPanel y Dispatcher.New features for the VirtualizingPanel and Dispatcher classes.

  • Rendimiento mejorado al mostrar conjuntos grandes de datos agrupados y al acceder a colecciones en subprocesos que no son de interfaz de usuario.Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.

  • Enlace de datos a propiedades estáticas, enlace de datos a tipos personalizados que implementan la interfaz ICustomTypeProvider y recuperación de información de enlace de datos desde una expresión de enlace.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.

  • Reposición de los datos a medida que cambian los valores (modelado dinámico).Repositioning of data as the values change (live shaping).

  • Capacidad de comprobar si el contexto de datos de un contenedor de elementos está desconectado.Ability to check whether the data context for an item container is disconnected.

  • Capacidad de establecer la cantidad de tiempo que debe transcurrir entre los cambios de propiedad y las actualizaciones del origen de datos.Ability to set the amount of time that should elapse between property changes and data source updates.

  • Compatibilidad mejorada para implementar patrones de eventos débiles.Improved support for implementing weak event patterns. Además, los eventos ahora pueden aceptar extensiones de marcado.Also, events can now accept markup extensions.

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

En .NET Framework 4.5.NET Framework 4.5, se han agregado las características siguientes para facilitar la creación y el mantenimiento de aplicaciones de 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:

  • Simplificación de los archivos de configuración generados.Simplification of generated configuration files.

  • Compatibilidad con el desarrollo del contrato en primer lugar.Support for contract-first development.

  • Capacidad de configurar el modo de compatibilidad de ASP.NET más fácilmente.Ability to configure ASP.NET compatibility mode more easily.

  • Cambios en los valores de propiedad de transporte predeterminados para reducir las probabilidades de tener que establecerlos.Changes in default transport property values to reduce the likelihood that you will have to set them.

  • Actualizaciones de la clase XmlDictionaryReaderQuotas que reducen las probabilidades de tener que configurar manualmente cuotas para los lectores de diccionarios XML.Updates to the XmlDictionaryReaderQuotas class to reduce the likelihood that you will have to manually configure quotas for XML dictionary readers.

  • Validación de los archivos de configuración de WCF por parte de Visual Studio dentro del proceso de compilación, para que se puedan detectar errores de configuración antes de ejecutar la aplicación.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.

  • Nueva compatibilidad con streaming asincrónico.New asynchronous streaming support.

  • Nueva asignación del protocolo HTTPS para facilitar la exposición de un extremo a través de HTTPS con Internet Information Services (IIS).New HTTPS protocol mapping to make it easier to expose an endpoint over HTTPS with Internet Information Services (IIS).

  • Capacidad de generar metadatos en un solo documento WSDL anexando ?singleWSDL a la dirección URL del servicio.Ability to generate metadata in a single WSDL document by appending ?singleWSDL to the service URL.

  • Compatibilidad con Websockets para permitir una comunicación bidireccional verdadera a través de los puertos 80 y 443 con características de rendimiento similares a las del transporte TCP.Websockets support to enable true bidirectional communication over ports 80 and 443 with performance characteristics similar to the TCP transport.

  • Compatibilidad para configurar servicios en el código.Support for configuring services in code.

  • Información sobre herramientas del editor XML.XML Editor tooltips.

  • Compatibilidad con el almacenamiento en caché de ChannelFactory.ChannelFactory caching support.

  • Compatibilidad con la compresión de codificadores binarios.Binary encoder compression support.

  • Compatibilidad con un transporte UDP que permite a los desarrolladores escribir servicios que utilizan mensajería de tipo "desencadenar y omitir”.Support for a UDP transport that enables developers to write services that use "fire and forget" messaging. Un cliente envía un mensaje a un servicio y no espera ninguna respuesta de él.A client sends a message to a service and expects no response from the service.

  • Capacidad de admitir varios modos de autenticación en un único extremo de WCF mediante el uso de transporte HTTP y seguridad de transporte.Ability to support multiple authentication modes on a single WCF endpoint when using the HTTP transport and transport security.

  • Compatibilidad con los servicios WCF que utilizan nombres de dominio internacionalizados (IDN).Support for WCF services that use internationalized domain names (IDNs).

Para obtener más información, vea Novedades de Windows Communication Foundation.For more information, see What's New in Windows Communication Foundation.

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

Se han agregado varias características nuevas a Windows Workflow Foundation (WF) en .NET Framework 4.5.NET Framework 4.5, incluidas las siguientes:In the .NET Framework 4.5.NET Framework 4.5, several new features were added to Windows Workflow Foundation (WF), including:

  • Flujos de trabajo de máquina de estados, que se incluyeron primero como parte 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). Esta actualización incluía varias clases y actividades nuevas que permitían a los desarrolladores crear flujos de trabajo de máquina de estados.This update included several new classes and activities that enabled developers to create state machine workflows. Estas clases y actividades se actualizaron para .NET Framework 4.5.NET Framework 4.5 con objeto de incluir:These classes and activities were updated for the .NET Framework 4.5.NET Framework 4.5 to include:

    • Capacidad de establecer puntos de interrupción en estadosThe ability to set breakpoints on states.

    • Capacidad de copiar y pegar transiciones en el Diseñador de flujo de trabajoThe ability to copy and paste transitions in the workflow designer.

    • Compatibilidad del diseñador para la creación de transiciones de desencadenador compartidasDesigner support for shared trigger transition creation.

    • Actividades para crear flujos de trabajo de máquina de estados, incluidas: StateMachine, State y TransitionActivities for creating state machine workflows, including: StateMachine, State, and Transition.

  • Características mejoradas del Diseñador de flujo de trabajo, como las siguientes:Enhanced Workflow Designer features such as the following:

    • Funcionalidades de búsqueda de flujo de trabajo mejoradas en Visual Studio, incluidas Búsqueda rápida y Buscar en archivos.Enhanced workflow search capabilities in Visual Studio, including Quick Find and Find in Files.

    • Capacidad de crear automáticamente una actividad Secuencia cuando una segunda actividad secundaria se agrega a una actividad del contenedor y para incluir ambas actividades en la actividad Secuencia.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.

    • Compatibilidad con el movimiento panorámico, que permite cambiar la parte visible de un flujo de trabajo sin usar las barras de desplazamiento.Panning support, which enables the visible portion of a workflow to be changed without using the scroll bars.

    • Una nueva vista Esquema del documento, en la que se muestran los componentes de un flujo de trabajo en una vista de esquema con forma de árbol y que le permite seleccionar un componente en la vista Esquema del documento.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.

    • Capacidad de agregar anotaciones a las actividades.Ability to add annotations to activities.

    • Capacidad de definir y consumir delegados de actividad mediante el Diseñador de flujo de trabajo.Ability to define and consume activity delegates by using the workflow designer.

    • Conexión e inserción automáticas para actividades y transiciones en los flujos de trabajo de máquina de estados y diagrama de flujo.Auto-connect and auto-insert for activities and transitions in state machine and flowchart workflows.

  • Almacenamiento de la información de estado de vista de un flujo de trabajo en un único elemento del archivo XAML, para poder encontrar y editar fácilmente la información de estado de vista.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.

  • Una actividad de contenedor NoPersistScope para evitar que se conserven las actividades secundarias.A NoPersistScope container activity to prevent child activities from persisting.

  • Compatibilidad con expresiones de C#:Support for C# expressions:

    • Los proyectos de flujo de trabajo que usan Visual Basic utilizarán las expresiones de Visual Basic, y los proyectos de flujo de trabajo de C# utilizarán las expresiones de C#.Workflow projects that use Visual Basic will use Visual Basic expressions, and C# workflow projects will use C# expressions.

    • Los proyectos de flujo de trabajo de C# creados en Visual Studio 2010 y que tengan expresiones de Visual Basic son compatibles con los proyectos de flujo de trabajo de C# que usan expresiones de 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.

  • Mejoras del control de versiones:Versioning enhancements:

    • La nueva clase WorkflowIdentity, que proporciona una asignación entre una instancia de flujo de trabajo guardada y su definición de flujo de trabajo.The new WorkflowIdentity class, which provides a mapping between a persisted workflow instance and its workflow definition.

    • Ejecución en paralelo de varias versiones de flujo de trabajo en el mismo host, incluido WorkflowServiceHost.Side-by-side execution of multiple workflow versions in the same host, including WorkflowServiceHost.

    • En la actualización dinámica, la capacidad de modificar la definición de una instancia de flujo de trabajo guardada.In Dynamic Update, the ability to modify the definition of a persisted workflow instance.

  • Desarrollo de servicios de flujo de trabajo de contrato en primer lugar, que proporciona compatibilidad para generar automáticamente actividades que busquen coincidencias en un contrato de servicio existente.Contract-first workflow service development, which provides support for automatically generating activities to match an existing service contract.

Para obtener más información, vea Novedades de Windows Workflow Foundation.For more information, see What's New in Windows Workflow Foundation.

.NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps

Las aplicaciones de la Tienda Windows 8.xWindows 8.x Store están diseñadas para factores de forma específicos y aprovechan la eficacia del sistema operativo Windows.Tienda Windows 8.xWindows 8.x Store apps are designed for specific form factors and leverage the power of the Windows operating system. Un subconjunto de .NET Framework 4.5.NET Framework 4.5 o 4.5.1 está disponible para compilar aplicaciones de la Tienda Windows 8.xWindows 8.x Store para Windows mediante C# o Visual Basic.A subset of the .NET Framework 4.5.NET Framework 4.5 or 4.5.1 is available for building Tienda Windows 8.xWindows 8.x Store apps for Windows by using C# or Visual Basic. Este subconjunto se denomina .NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps y se explica en una introducción del Centro de desarrollo de Windows.This subset is called .NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps and is discussed in an overview in the Windows Dev Center.

Bibliotecas de clases portables Portable Class Libraries

El proyecto de Biblioteca de clases portable de Visual Studio 2012 (y versiones posteriores) permite escribir y compilar ensamblados administrados capaces de funcionar en múltiples plataformas de .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 proyecto de Biblioteca de clases portable le permite elegir las plataformas de destino (como Windows Phone y .NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps).Using a Portable Class Library project, you choose the platforms (such as Windows Phone and .NET para aplicaciones de la Tienda Windows 8.x.NET for Windows 8.x Store apps) to target. Los tipos y miembros disponibles en el proyecto se restringen automáticamente a los tipos y miembros comunes de estas plataformas.The available types and members in your project are automatically restricted to the common types and members across these platforms. Para obtener más información, consulte Biblioteca de clases portable.For more information, see Portable Class Library.

Vea tambiénSee also