Novidades no .NET FrameworkWhat's new in the .NET Framework

Este artigo resume os novos recursos-chave e melhorias nas seguintes versões do .NET Framework:This article summarizes key new features and improvements in the following versions of the .NET Framework:

Este artigo não fornece informações abrangentes sobre cada recurso novo e está sujeito a alterações.This article does not provide comprehensive information about each new feature and is subject to change. Para obter informações gerais sobre o .NET Framework, confira Introdução.For general information about the .NET Framework, see Getting Started. Para conhecer as plataformas compatíveis, confira Requisitos do sistema.For supported platforms, see System Requirements. Para obter links de download e instruções de instalação, confira Guia de instalação.For download links and installation instructions, see Installation Guide.

Observação

A equipe do .NET Framework também libera recursos fora de banda com o NuGet para expandir o suporte à plataforma e introduzir novas funcionalidades, como coleções imutáveis e tipos de vetor 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 saber mais, confira Bibliotecas de classes e APIs adicionais e O .NET Framework e lançamentos fora da banda.For more information, see Additional Class Libraries and APIs and The .NET Framework and Out-of-Band Releases. Veja uma lista completa de pacotes do NuGet para o .NET Framework.See a complete list of NuGet packages for the .NET Framework.

Introdução ao .NET Framework 4.8Introducing .NET Framework 4.8

O .NET Framework 4.8 baseia-se nas versões anteriores do .NET Framework 4.x, adicionando muitas correções e vários recursos novos, mas permanecendo um produto muito estável..NET Framework 4.8 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.

Baixar e instalar o .NET Framework 4.8Downloading and installing .NET Framework 4.8

Você pode baixar o .NET Framework 4.8 nos seguintes locais:You can download .NET Framework 4.8 from the following locations:

O .NET Framework 4.8 pode ser instalado nos sistemas operacionais Windows 10, Windows 8.1, Windows 7 SP1 e nas plataformas de servidor correspondentes, a partir do Windows Server 2008 R2 SP1..NET Framework 4.8 can be installed on Windows 10, Windows 8.1, Windows 7 SP1, and the corresponding server platforms starting with Windows Server 2008 R2 SP1. É possível instalar o .NET Framework 4.8 usando o instalador Web ou o instalador offline.You can install .NET Framework 4.8 by using either the web installer or the offline installer. A maneira recomendada para a maioria dos usuários é usar o instalador da Web.The recommended way for most users is to use the web installer.

Para direcionar para o .NET Framework 4.8 no Visual Studio 2012 ou posterior, instale o Pacote do Desenvolvedor do .NET Framework 4.8.You can target .NET Framework 4.8 in Visual Studio 2012 or later by installing the .NET Framework 4.8 Developer Pack.

Novidades no .NET Framework 4.8What's new in .NET Framework 4.8

O .NET Framework 4.8 apresenta novos recursos nas seguintes áreas:.NET Framework 4.8 introduces new features in the following areas:

A melhoria na acessibilidade, que permite a um aplicativo proporcionar uma experiência adequada para os usuários da Tecnologia Assistencial, continua sendo um ponto importante do .NET Framework 4.8.Improved accessibility, which allows an application to provide an appropriate experience for users of Assistive Technology, continues to be a major focus of .NET Framework 4.8. Para saber mais sobre melhorias de acessibilidade no .NET Framework 4.8, consulte Novidades de acessibilidade no .NET Framework.For information on accessibility improvements in .NET Framework 4.8, see What's new in accessibility in the .NET Framework.

Classes baseBase classes

Redução do impacto do FIPS na criptografia.Reduced FIPS impact on Cryptography. Em versões anteriores do .NET Framework, as classes do provedor criptográfico gerenciadas, como SHA256Managed, geram uma CryptographicException quando as bibliotecas criptográficas do sistema estão configuradas no "modo FIPS".In previous versions of the .NET Framework, managed cryptographic provider classes such as SHA256Managed throw a CryptographicException when the system cryptographic libraries are configured in “FIPS mode”. Essas exceções ocorrem porque as versões gerenciadas das classes do provedor criptográfico, ao contrário das bibliotecas criptográficas do sistema, não receberam a certificação 140-2 do padrão FIPS (Federal Information Processing Standards).These exceptions are thrown because the managed versions of the cryptographic provider classes, unlike the system cryptographic libraries, have not undergone FIPS (Federal Information Processing Standards) 140-2 certification. Como os computadores de desenvolvimento de alguns desenvolvedores estão no modo FIPS, as exceções geralmente ocorrem em sistemas de produção.Because few developers have their development machines in FIPS mode, the exceptions are commonly thrown in production systems.

Por padrão, em aplicativos destinados ao .NET Framework 4.8, as seguintes classes de criptografia gerenciadas não geram mais uma CryptographicException:By default in applications that target .NET Framework 4.8, the following managed cryptography classes no longer throw a CryptographicException in this case:

Em vez disso, essas classes redirecionam as operações criptográficas para uma biblioteca de criptografia do sistema.Instead, these classes redirect cryptographic operations to a system cryptography library. Essa alteração elimina efetivamente uma diferença potencialmente confusa entre os ambientes do desenvolvedor e os ambientes de produção, fazendo com que componentes nativos e componentes gerenciados operem sob a mesma política criptográfica.This change effectively removes a potentially confusing difference between developer environments and production environments and makes native components and managed components operate under the same cryptographic policy. Os aplicativos que dependem dessas exceções podem restaurar o comportamento anterior configurando o comutador Switch.System.Security.Cryptography.UseLegacyFipsThrow para true.Applications that depend on these exceptions can restore the previous behavior by setting the AppContext switch Switch.System.Security.Cryptography.UseLegacyFipsThrow to true. Para saber mais, consulte Classes de criptografia gerenciadas não geram uma CryptographyException no modo FIPS.For more information, see Managed cryptography classes do not throw a CryptographyException in FIPS mode.

Uso da versão atualizada do ZLibUse of updated version of ZLib

Começando no .NET Framework 4.5, o assembly clrcompression.dll usa ZLib, uma biblioteca externa nativa para a compactação de dados, a fim de fornecer uma implementação para o algoritmo deflate.Starting with .NET Framework 4.5, the clrcompression.dll assembly uses ZLib, a native external library for data compression, in order to provide an implementation for the deflate algorithm. No .NET Framework 4.8, o clrcompression.dll foi atualizado para usar a versão 1.2.11 do ZLib, que inclui várias melhorias e correções importantes.The .NET Framework 4.8, clrcompression.dll is updated to use ZLib Version 1.2.11, which includes several key improvements and fixes.

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

Introdução do ServiceHealthBehaviorIntroduction of ServiceHealthBehavior

Os pontos de extremidade de integridade são amplamente usados pelas ferramentas de orquestração para gerenciar os serviços com base em seu status de integridade.Health endpoints are widely used by orchestration tools to manage services based on their health status. As verificações de integridade também podem ser usadas pelas ferramentas de monitoramento para rastrear e fornecer notificações sobre a disponibilidade e o desempenho de um serviço.Health checks can also be used by monitoring tools to track and provide notifications about the availability and performance of a service.

O ServiceHealthBehavior é um comportamento de serviço de aplicativo do Windows Communication Foundation que estende o IServiceBehavior.ServiceHealthBehavior is a WCF service behavior that extends IServiceBehavior. Quando adicionado à coleção ServiceDescription.Behaviors, um comportamento de serviço executa estas tarefas:When added to the ServiceDescription.Behaviors collection, a service behavior does the following:

  • Retorna um status de integridade do serviço com códigos de resposta HTTP.Returns service health status with HTTP response codes. Em uma cadeia de consulta, você pode especificar o código de status HTTP para uma solicitação de investigação de integridade HTTP/GET.You can specify in a query string the HTTP status code for a HTTP/GET health probe request.

  • Publica informações sobre a integridade do serviço.Publishes information about service health. Os detalhes específicos do serviço, incluindo o estado do serviço, contagens de aceleração e capacidade, podem ser exibidos usando uma solicitação HTTP/GET com a cadeia de consulta ?health.Service-specific details, including service state, throttle counts, and capacity can be displayed by using an HTTP/GET request with the ?health query string. A facilidade de acesso a essas informações é importante ao solucionar problemas de um serviço WCF com comportamento inadequado.Ease of access to such information is important when troubleshooting a misbehaving WCF service.

Há duas maneiras de expor o ponto de extremidade da integridade e publicar informações de integridade do serviço WCF:There are two ways to expose the health endpoint and publish WCF service health information:

  • Percorrer o código.Through code. Por exemplo:For example:

    ServiceHost host = new ServiceHost(typeof(Service1),
                       new Uri("http://contoso:81/Service1"));
    ServiceHealthBehavior healthBehavior =
        host.Description.Behaviors.Find<ServiceHealthBehavior>();
    healthBehavior ??= new ServiceHealthBehavior();
    host.Description.Behaviors.Add(healthBehavior);
    
    Dim host As New ServiceHost(GetType(Service1),
                New Uri("http://contoso:81/Service1"))
    Dim healthBehavior As ServiceHealthBehavior =
       host.Description.Behaviors.Find(Of ServiceHealthBehavior)()
    If healthBehavior Is Nothing Then
       healthBehavior = New ServiceHealthBehavior()
    End If
    host.Description.Behaviors.Add(healthBehavior)
    
  • Usando um arquivo de configuração.By using a configuration file. Por exemplo:For example:

    <behaviors>
      <serviceBehaviors>
        <behavior name="DefaultBehavior">
          <serviceHealth httpsGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    

O status de integridade de um serviço pode ser consultado usando parâmetros de consulta como OnServiceFailure, OnDispatcherFailure, OnListenerFailure, OnThrottlePercentExceeded, e um código de resposta HTTP pode ser especificado para cada parâmetro de consulta.A service's health status can be queried by using query parameters such as OnServiceFailure, OnDispatcherFailure, OnListenerFailure, OnThrottlePercentExceeded), and an HTTP response code can be specified for each query parameter. Se o código de resposta HTTP for omitido para um parâmetro de consulta, será usado um código de resposta HTTP 503 por padrão.If the HTTP response code is omitted for a query parameter, a 503 HTTP response code is used by default. Por exemplo:For example:

  • OnServiceFailure: https://contoso:81/Service1?health&OnServiceFailure=450OnServiceFailure: https://contoso:81/Service1?health&OnServiceFailure=450

    Retorna um código de status de resposta HTTP 450 quando ServiceHost.State é maior que CommunicationState.Opened.A 450 HTTP response status code is returned when ServiceHost.State is greater than CommunicationState.Opened. Parâmetros de consulta e exemplos:Query parameters and examples:

  • OnDispatcherFailure: https://contoso:81/Service1?health&OnDispatcherFailure=455OnDispatcherFailure: https://contoso:81/Service1?health&OnDispatcherFailure=455

    Retorna um código de status de resposta HTTP 455 quando o estado de qualquer um dos dispatchers de canal é maior que CommunicationState.Opened.A 455 HTTP response status code is returned when the state of any of the channel dispatchers is greater than CommunicationState.Opened.

  • OnListenerFailure: https://contoso:81/Service1?health&OnListenerFailure=465OnListenerFailure: https://contoso:81/Service1?health&OnListenerFailure=465

    Retorna um código de status de resposta HTTP 465 quando o estado de qualquer um dos ouvintes de canais é maior que CommunicationState.Opened.A 465 HTTP response status code is returned when the state of any of the channel listeners is greater than CommunicationState.Opened.

  • OnThrottlePercentExceeded: https://contoso:81/Service1?health&OnThrottlePercentExceeded= 70:350,95:500OnThrottlePercentExceeded: https://contoso:81/Service1?health&OnThrottlePercentExceeded= 70:350,95:500

    Especifica a porcentagem {1 a 100} que dispara a resposta e seu código de resposta HTTP {200 a 599}.Specifies the percentage {1 – 100} that triggers the response and its HTTP response code {200 – 599}. Neste exemplo:In this example:

    • Se a porcentagem é maior que 95, retorna um código de resposta HTTP 500.If the percentage is greater than 95, a 500 HTTP response code is returned.

    • Se a porcentagem está entre 70 e 95, retorna 350.If the percentage or between 70 and 95, 350 is returned.

    • Caso contrário, retorna 200.Otherwise, 200 is returned.

O status da integridade do serviço pode ser exibido em HTML com a especificação de uma cadeia de consulta como https://contoso:81/Service1?health ou em XML com a especificação de uma cadeia de consulta como https://contoso:81/Service1?health&Xml.The service health status can be displayed either in HTML by specifying a query string like https://contoso:81/Service1?health or in XML by specifying a query string like https://contoso:81/Service1?health&Xml. Uma cadeia de consulta como https://contoso:81/Service1?health&NoContent retorna uma página HTML vazia.A query string like https://contoso:81/Service1?health&NoContent returns an empty HTML page.

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

Aprimoramentos de alto DPIHigh DPI enhancements

No .NET Framework 4.8, o WPF adiciona suporte para Reconhecimento de DPI V2 por Monitor e ajuste de DPI no Modo Misto.In .NET Framework 4.8, WPF adds support for Per-Monitor V2 DPI Awareness and Mixed-Mode DPI scaling. Consulte Desenvolvimento de aplicativo de área de trabalho com alto DPI no Windows para saber mais sobre o desenvolvimento com alto DPI.See High DPI Desktop Application Development on Windows for additional information about high DPI development.

O .NET Framework 4.8 melhora o suporte para interoperação hospedada de HWNDs e do Windows Forms em aplicativos WPF com alto DPI em plataformas compatíveis com o ajuste do DPI no Modo Misto (começando com a Atualização de abril de 2018 do Windows 10)..NET Framework 4.8 improves support for hosted HWNDs and Windows Forms interoperation in High-DPI WPF applications on platforms that support Mixed-Mode DPI scaling (starting with Windows 10 April 2018 Update). Quando os controles hospedados de HWNDs ou do Windows Forms são criados como janelas em escala de DPI no Modo Misto chamando SetThreadDpiHostingBehavior e SetThreadDpiAwarenessContext, eles podem ser hospedados em um aplicativo WPF V2 por Monitor e são dimensionados adequadamente.When hosted HWNDs or Windows Forms controls are created as Mixed-Mode DPI-scaled windows by calling SetThreadDpiHostingBehavior and SetThreadDpiAwarenessContext, they can be hosted in a Per-Monitor V2 WPF application and are sized and scaled appropriately. Tal conteúdo hospedado não é processado no DPI nativo; em vez disso, o sistema operacional ajusta o conteúdo hospedado para o tamanho apropriado.Such hosted content is not rendered at the native DPI; instead, the operating system scales the hosted content to the appropriate size. O suporte para o modo de reconhecimento de DPI V2 por Monitor também permite que os controles WPF sejam hospedados (isto é, tenham pai) em uma janela nativa em um aplicativo com alto DPI.The support for Per-Monitor v2 DPI awareness mode also allows WPF controls to be hosted (i.e., parented) in a native window in a high-DPI application.

Para habilitar o suporte para ajuste de Alto DPI no Modo Misto, você pode definir os seguintes parâmetros AppContext no arquivo de configuração de aplicativo:To enable support for Mixed-Mode High DPI scaling, you can set the following AppContext switches the application configuration file:

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

Common Language RuntimeCommon language runtime

O tempo de execução no .NET Framework 4.8 inclui as seguintes mudanças e melhorias:The runtime in .NET Framework 4.8 includes the following changes and improvements:

Melhorias no compilador JIT.Improvements to the JIT compiler. O compilador JIT (Just-in-time) no .NET Framework 4.8 baseia-se no compilador JIT do .NET Core 2.1.The Just-in-time (JIT) compiler in .NET Framework 4.8 is based on the JIT compiler in .NET Core 2.1. Muitas das otimizações e todas as correções de bugs feitas no compilador JIT do .NET Core 2.1 estão inclusas no compilador JIT do .NET Framework 4.8.Many of the optimizations and all of the bug fixes made to the .NET Core 2.1 JIT compiler are included in the .NET Framework 4.8 JIT compiler.

Aprimoramentos do NGEN.NGEN improvements. O tempo de execução melhorou o gerenciamento de memória para imagens NGEN (Gerador de Imagem Nativa) para que os dados mapeados das imagens NGEN não residam na memória.The runtime has improved its memory management for Native Image Generator (NGEN) images so that data mapped from NGEN images are not memory-resident. Isso reduz a área de superfície disponível para ataques que tentam executar código arbitrário modificando a memória a ser executada.This reduces the surface area available to attacks that attempt to execute arbitrary code by modifying memory that will be executed.

Verificação antimalware em todos os assemblies.Antimalware scanning for all assemblies. Em versões anteriores do .NET Framework, o tempo de execução examina todos os assemblies carregados do disco usando o Windows Defender ou software antimalware de terceiros.In previous versions of the .NET Framework, the runtime scans all assemblies loaded from disk using either Windows Defender or third-party antimalware software. No entanto, os assemblies carregados de outras fontes, como pelo método Assembly.Load(Byte[]), não são examinados e podem conter malware não detectado.However, assemblies loaded from other sources, such as by the Assembly.Load(Byte[]) method, are not scanned and can potentially contain undetected malware. A partir do .NET Framework 4.8 em execução no Windows 10, o tempo de execução dispara uma verificação por soluções antimalware que implementam a AMSI (Interface de Verificação Antimalware).Starting with .NET Framework 4.8 running on Windows 10, the runtime triggers a scan by antimalware solutions that implement the Antimalware Scan Interface (AMSI).

Novidades no .NET Framework 4.7.2What's new in .NET Framework 4.7.2

O .NET Framework 4.7.2 inclui novos recursos nas seguintes áreas:.NET Framework 4.7.2 includes new features in the following areas:

Um dos principais objetivos do .NET Framework 4.7.2 é a melhoria de acessibilidade, que permite a um aplicativo fornecer uma experiência apropriada para os usuários da Tecnologia Assistencial.A continuing focus in .NET Framework 4.7.2 is improved accessibility, which allows an application to provide an appropriate experience for users of Assistive Technology. Para saber mais sobre melhorias de acessibilidade no .NET Framework 4.7.2,consulte Novidades de acessibilidade no .NET Framework.For information on accessibility improvements in .NET Framework 4.7.2, see What's new in accessibility in the .NET Framework.

Classes baseBase classes

O .NET Framework 4.7.2 apresenta um grande número de aperfeiçoamentos de criptografia, melhor suporte à descompactação de arquivos ZIP e APIs de coleção adicionais..NET Framework 4.7.2 features a large number of cryptographic enhancements, better decompression support for ZIP archives, and additional collection APIs.

Novas sobrecargas de RSA.Create e DSA.CreateNew overloads of RSA.Create and DSA.Create

Os métodos DSA.Create(DSAParameters) e RSA.Create(RSAParameters) permitem fornecer parâmetros de chave ao instanciar uma nova chave DSA ou RSA.The DSA.Create(DSAParameters) and RSA.Create(RSAParameters) methods let you supply key parameters when instantiating a new DSA or RSA key. Elas permitem substituir o código desta forma: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

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

Os métodos DSA.Create(Int32) e RSA.Create(Int32) permitem gerar chaves DSA ou RSA novas, com um tamanho 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 exemplo: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

Construtores Rfc2898DeriveBytes aceitam um nome de algoritmo de hashRfc2898DeriveBytes constructors accept a hash algorithm name

A classe Rfc2898DeriveBytes tem três novos construtores com um parâmetro HashAlgorithmName que identifica o algoritmo HMAC a ser usado na derivação de chaves.The Rfc2898DeriveBytes class has three new constructors with a HashAlgorithmName parameter that identifies the HMAC algorithm to use when deriving keys. Em vez de usar o SHA-1, os desenvolvedores devem usar um HMAC baseado em SHA-2, como o SHA-256, conforme mostrado no exemplo a seguir: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

Compatibilidade com chaves efêmerasSupport for ephemeral keys

Opcionalmente, a importação PFX pode carregar chave privada direto da memória, ignorando o disco rígido.PFX import can optionally load private keys directly from memory, bypassing the hard drive. Quando o novo sinalizador X509KeyStorageFlags.EphemeralKeySet for especificado em um Construtor X509Certificate2 ou em uma das sobrecargas do método X509Certificate2.Import, as chaves privadas serão carregadas como chaves 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. Isso impede as chaves de ficarem visíveis no disco.This prevents the keys from being visible on the disk. No entanto:However:

  • Como as chaves não são persistidas no disco, os certificados carregados com esse sinalizador não são bons candidatos para serem adicionados a um X509Store.Since the keys are not persisted to disk, certificates loaded with this flag are not good candidates to add to an X509Store.

  • As chaves carregadas dessa maneira são quase sempre carregadas pelo CNG do Windows.Keys loaded in this manner are almost always loaded via Windows CNG. Portanto, os chamadores precisam acessar a chave privada chamando métodos de extensão, como cert.GetRSAPrivateKey().Therefore, callers must access the private key by calling extension methods, such as cert.GetRSAPrivateKey(). A propriedade X509Certificate2.PrivateKey não funciona.The X509Certificate2.PrivateKey property does not function.

  • Como a propriedade herdada X509Certificate2.PrivateKey não funciona com certificados, os desenvolvedores precisam executar testes rigorosos antes de alternar para chaves efêmeras.Since the legacy X509Certificate2.PrivateKey property does not work with certificates, developers should perform rigorous testing before switching to ephemeral keys.

Criação programática de solicitações de assinatura de certificado PKCS#10 e certificados de chave pública X.509Programmatic creation of PKCS#10 certification signing requests and X.509 public key certificates

A partir do .NET Framework 4.7.2, as cargas de trabalho podem gerar CSRs (solicitações de assinatura de certificado), o que permite que a geração de solicitação de certificados seja realizada nas ferramentas existentes.Starting with .NET Framework 4.7.2, workloads can generate certificate signing requests (CSRs), which allows certificate request generation to be staged into existing tooling. Frequentemente, isso é útil em cenários de teste.This is frequently useful in test scenarios.

Para saber mais e obter exemplos de código, veja "Criação programática de solicitações de assinatura de certificado PKCS#10 e certificados de chave pública X.509" no Blog do .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.

Novos membros do SignerInfoNew SignerInfo members

A partir do .NET Framework 4.7.2, a classe SignerInfo expõe mais informações sobre a assinatura.Starting with .NET Framework 4.7.2, the SignerInfo class exposes more information about the signature. É possível recuperar o valor da propriedade System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm para determinar o algoritmo de assinatura usado pelo signatário.You can retrieve the value of the System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm property to determine the signature algorithm used by the signer. SignerInfo.GetSignature pode ser chamado para obter uma cópia da assinatura de criptografia desse signatário.SignerInfo.GetSignature can be called to get a copy of the cryptographic signature for this signer.

Deixar um fluxo encapsulado aberto depois de descartar CryptoStreamLeaving a wrapped stream open after CryptoStream is disposed

A partir do .NET Framework 4.7.2, a classe CryptoStream tem um construtor adicional que permite que Dispose não feche o fluxo encapsulado.Starting with .NET Framework 4.7.2, the CryptoStream class has an additional constructor that allows Dispose to not close the wrapped stream. Para deixar o fluxo encapsulado aberto depois que a instância CryptoStream for descartada, chame o novo Construtor CryptoStream da seguinte maneira: 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)

Alterações de descompactação em DeflateStreamDecompression changes in DeflateStream

A partir do .NET Framework 4.7.2, a implementação de operações de descompactação na classe DeflateStream foi alterada para usar APIs nativas do Windows por padrão.Starting with .NET Framework 4.7.2, the implementation of decompression operations in the DeflateStream class has changed to use native Windows APIs by default. Normalmente, isso resulta em uma melhoria significativa de desempenho.Typically, this results in a substantial performance improvement.

A compatibilidade para descompactação por meio das APIs do Windows está habilitada por padrão em aplicativos direcionados ao .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. Os aplicativos direcionados a versões anteriores do .NET Framework, mas que são executados no .NET Framework 4.7.2 podem aceitar esse comportamento adicionando a opção AppContext ao arquivo de configuração de aplicativo: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" />

APIs de coleção adicionaisAdditional collection APIs

O .NET Framework 4.7.2 adiciona uma série de novas APIs aos tipos SortedSet<T> e HashSet<T>..NET Framework 4.7.2 adds a number of new APIs to the SortedSet<T> and HashSet<T> types. Elas incluem:These include:

A classe ConcurrentDictionary<TKey,TValue> inclui novas sobrecargas dos métodos AddOrUpdate e GetOrAdd para recuperar um valor do dicionário ou adicioná-lo caso ele não seja encontrado e para adicionar um valor ao dicionário ou atualizá-lo caso ele já exista.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

Compatibilidade com injeção de dependência no Web FormsSupport for dependency injection in Web Forms

A DI (injeção de dependência) separa os objetos de suas dependências para que o código do objeto não precise mais ser alterado somente porque uma dependência foi modificada.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. Ao desenvolver aplicativos ASP.NET direcionados para o .NET Framework 4.7.2, é possível:When developing ASP.NET applications that target .NET Framework 4.7.2, you can:

Compatibilidade com cookies do mesmo siteSupport for same-site cookies

O SameSite impede que o navegador envie um cookie junto com a solicitação entre sites.SameSite prevents a browser from sending a cookie along with a cross-site request. O .NET Framework 4.7.2 adiciona uma propriedade HttpCookie.SameSite cujo valor é um membro da enumeração System.Web.SameSiteMode..NET Framework 4.7.2 adds a HttpCookie.SameSite property whose value is a System.Web.SameSiteMode enumeration member. Se o valor for SameSiteMode.Strict ou SameSiteMode.Lax, o ASP.NET adicionará o atributo SameSite ao cabeçalho set-cookie.If its value is SameSiteMode.Strict or SameSiteMode.Lax, ASP.NET adds the SameSite attribute to the set-cookie header. A compatibilidade com o SameSite se aplica aos objetos HttpCookie, bem como aos cookies FormsAuthentication e System.Web.SessionState.SameSite support applies to HttpCookie objects, as well as to FormsAuthentication and System.Web.SessionState cookies.

É possível definir o SameSite para um objeto HttpCookie da seguinte maneira: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

Também é possível configurar cookies SameSite no nível do aplicativo modificando o arquivo 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>

É possível adicionar SameSite a cookies FormsAuthentication e System.Web.SessionState modificando o arquivo de configuração 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>

RedeNetworking

Implementação de propriedades HttpClientHandlerImplementation of HttpClientHandler properties

O .NET Framework 4.7.1 adicionou oito propriedades à classe System.Net.Http.HttpClientHandler..NET Framework 4.7.1 added eight properties to the System.Net.Http.HttpClientHandler class. No entanto, duas geraram um PlatformNotSupportedException.However, two threw a PlatformNotSupportedException. Agora, o .NET Framework 4.7.2 fornece uma implementação dessas propriedades..NET Framework 4.7.2 now provides an implementation for these properties. As propriedades são:The properties are:

SQLClientSQLClient

Compatibilidade com a Autenticação Universal e Autenticação Multifator do Azure Active DirectorySupport for Azure Active Directory Universal Authentication and Multi-Factor authentication

Demandas crescente de conformidade e segurança exigem que muitos clientes usem a MFA (autenticação multifator).Growing compliance and security demands require that many customers use multi-factor authentication (MFA). Além disso, as melhores práticas atuais não incentivam a inclusão de senhas do usuário diretamente em cadeias de conexão.In addition, current best practices discourage including user passwords directly in connection strings. Para dar suporte a essas alterações, o .NET Framework 4.7.2 estende as cadeias de conexão SQLClient adicionando um novo valor, "Active Directory Interactive", à palavra-chave "Authentication" existente, para ser compatível com a MFA e a Autenticação do Azure Active Directory.To support these changes, .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. O novo método interativo é compatível com usuários nativos e federados do Azure AD, bem como os usuários convidados do Azure AD.The new interactive method supports native and federated Azure AD users as well as Azure AD guest users. Quando esse método é usado, a MFA imposta pelo Azure AD é compatível com bancos de dados SQL.When this method is used, the MFA authentication imposed by Azure AD is supported for SQL databases. Além disso, o processo de autenticação solicita uma senha de usuário para aderir às melhores práticas de segurança.In addition, the authentication process requests a user password to adhere to security best practices.

Em versões anteriores do .NET Framework, conectividade SQL é compatível apenas com as opções SqlAuthenticationMethod.ActiveDirectoryPassword e SqlAuthenticationMethod.ActiveDirectoryIntegrated.In previous versions of the .NET Framework, SQL connectivity supported only the SqlAuthenticationMethod.ActiveDirectoryPassword and SqlAuthenticationMethod.ActiveDirectoryIntegrated options. Ambos são parte do protocolo ADAL não interativo, que não é compatível com o MFA.Both of these are part of the non-interactive ADAL protocol, which does not support MFA. Com a nova opção SqlAuthenticationMethod.ActiveDirectoryInteractive, a conectividade SQL é compatível com a MFA, bem como com métodos de autenticação existentes (senha e autenticação integrada), o que permite que os usuários insiram senhas de forma interativa, sem persistir senhas na cadeia de conexão.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 obter mais informações e um exemplo, veja "Suporte Universal e de Autenticação Multifator para SQL – Azure AD", no Blog do .NET.For more information and an example, see "SQL -- Azure AD Universal and Multi-factor Authentication Support" in the .NET Blog.

Compatibilidade com a versão 2 do Always EncryptedSupport for Always Encrypted version 2

O NET Framework 4.7.2 acrescenta suporte para o Always Encrypted com base em enclave.NET Framework 4.7.2 adds supports for enclave-based Always Encrypted. A versão original do Always Encrypted é uma tecnologia de criptografia do lado do cliente em que as chaves de criptografia nunca deixam o cliente.The original version of Always Encrypted is a client-side encryption technology in which encryption keys never leave the client. No Always Encrypted com base em enclave, o cliente tem a opção de enviar as chaves de criptografia para um enclave seguro, que é uma entidade computacional segura que pode ser considerada parte do SQL Server, mas que o código do SQL Server não pode modificar.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 ser compatível com o Always Encrypted com base em enclave, o .NET Framework 4.7.2 acrescenta os seguintes tipos e membros ao namespace System.Data.SqlClient:To support enclave-based Always Encrypted, .NET Framework 4.7.2 adds the following types and members to the System.Data.SqlClient namespace:

O arquivo de configuração de aplicativo, em seguida, especifica uma implementação concreta da classe abstrata System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider que fornece a funcionalidade para o provedor de enclave.The application configuration file then specifies a concrete implementation of the abstract System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider class that provides the functionality for the enclave provider. Por exemplo: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>

O fluxo básico do Always Encrypted com base em enclave é:The basic flow of enclave-based Always Encrypted is:

  1. O usuário cria uma conexão do AlwaysEncrypted com o SQL Server compatível com o Always Encrypted com base em enclave.The user creates an AlwaysEncrypted connection to SQL Server that supported enclave-based Always Encrypted. O driver entra em contato com o serviço de atestado para garantir que ele está se conectando ao enclave correto.The driver contacts the attestation service to ensure that it is connecting to right enclave.

  2. Depois da confirmação do enclave, o driver estabelece um canal seguro com o enclave seguro hospedado no SQL Server.Once the enclave has been attested, the driver establishes a secure channel with the secure enclave hosted on SQL Server.

  3. O driver compartilha as chaves de criptografia autorizadas pelo cliente com o enclave seguro durante a conexão do 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

Localizar ResourceDictionaries por origemFinding ResourceDictionaries by Source

A partir do .NET Framework 4.7.2, um assistente de diagnóstico pode localizar o  ResourceDictionaries criado de um determinado URI de origem.Starting with .NET Framework 4.7.2, a diagnostic assistant can locate the ResourceDictionaries that have been created from a given source Uri. (Esse recurso é para uso pelos assistentes de diagnóstico, não por aplicativos de produção.) Um assistente de diagnóstico como o recurso "Editar e continuar" do Visual Studio permite que seu usuário edite um ResourceDictionary com a intenção de que as alterações sejam aplicadas ao aplicativo em execução. (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. Uma etapa para conseguir isso é localizar todos os ResourceDictionaries que o aplicativo em execução criou com base no dicionário que está sendo editado.One step in achieving this is finding all the ResourceDictionaries that the running application has created from the dictionary that’s being edited. Por exemplo, um aplicativo pode declarar um ResourceDictionary cujo conteúdo é copiado de um determinado URI de origem:For example, an application can declare a ResourceDictionary whose content is copied from a given source URI:

<ResourceDictionary Source="MyRD.xaml">

Um assistente de diagnóstico que edita a marcação original em MyRD.xaml  pode usar o novo recurso para localizar o dicionário.A diagnostic assistant that edits the original markup in MyRD.xaml can use the new feature to locate the dictionary. O recurso é implementado por um novo método estático, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. The feature is implemented by a new static method, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. O assistente de diagnóstico chama o novo método usando um URI absoluto que identifica a marcação original, conforme ilustrado pelo código a seguir: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"))

O método retornará um enumerável vazio, a menos que  VisualDiagnostics esteja habilitado e a variável de ambiente ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO  esteja definida.The method returns an empty enumerable unless VisualDiagnostics is enabled and the ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO environment variable is set.

Localizar os proprietários de ResourceDictionaryFinding ResourceDictionary owners

A partir do .NET Framework 4.7.2, um assistente de diagnóstico pode localizar os proprietários de um determinado ResourceDictionary.Starting with .NET Framework 4.7.2, a diagnostic assistant can locate the owners of a given ResourceDictionary. (O recurso é para uso por assistentes de diagnóstico e não por aplicativos de produção.) Sempre que uma alteração é feita em um ResourceDictionary, o WPF localiza automaticamente todas as referências DynamicResource que podem ser afetadas pela alteração. (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.

Um assistente de diagnóstico, como o recurso de "Editar e continuar" do Visual Studio pode desejar estendê-lo para tratar as referências StaticResource.A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility may want extend this to handle StaticResource references. A primeira etapa nesse processo é localizar os proprietários do dicionário; ou seja, para localizar todos os objetos cuja propriedade Resources se refere ao dicionário (direta ou indiretamente por meio da propriedade 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). Três novos métodos estáticos implementados na classe System.Windows.Diagnostics.ResourceDictionaryDiagnostics, um para cada um dos tipos base que tem uma propriedade Resources, compatível com esta etapa: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:

Esses métodos retornarão um enumerável vazio, a menos que  VisualDiagnostics esteja habilitado e a variável de ambiente ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO  esteja definida.These methods return an empty enumerable unless VisualDiagnostics is enabled and the ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO environment variable is set.

Localizar referências StaticResourceFinding StaticResource references

Agora, um assistente de diagnóstico pode receber uma notificação sempre que uma referência StaticResource for resolvida.A diagnostic assistant can now receive a notification whenever a StaticResource reference is resolved. (O recurso é para uso pelos assistentes de diagnóstico, não por aplicativos de produção.) Um assistente de diagnóstico como o recurso "Editar e continuar" do Visual Studio pode querer atualizar todos os usos de um recurso quando seu valor em um ResourceDictionary for alterado. (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. O WPF faz isso automaticamente para referências DynamicResource, mas ele intencionalmente não o faz para referências StaticResource.WPF does this automatically for DynamicResource references, but it intentionally does not do so for StaticResource references. A partir do .NET Framework 4.7.2, o assistente de diagnóstico pode usar essas notificações para localizar os usos do recurso estático.Starting with .NET Framework 4.7.2, the diagnostic assistant can use these notifications to locate those uses of the static resource.

A notificação é implementada pelo novo 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)

Esse evento é gerado sempre que o tempo de execução resolve uma referência StaticResource.This event is raised whenever the runtime resolves a StaticResource reference. Os argumentos StaticResourceResolvedEventArgs descrevem a resolução e indicam o objeto e a propriedade que hospedam a referência StaticResource e a @ no__t-2 e a chave usada para a resolução: 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; }
}
Public Class StaticResourceResolvedEventArgs : Inherits EventArgs
   Public ReadOnly Property TargetObject As Object
   Public ReadOnly Property TargetProperty As Object
   Public ReadOnly Property ResourceDictionary As ResourceDictionary
   Public ReadOnly Property ResourceKey As Object
End Class

O evento não é gerado (e seu acessador add é ignorado), a menos que  VisualDiagnostics esteja habilitado e a variável de ambiente ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO esteja definida.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

Todos os aplicativos com reconhecimento de HDPI para Windows Forms, WPF (Windows Presentation Foundation) e VSTO (Visual Studio Tools para Office) podem ser implantados usando o 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. Se a entrada a seguir for encontrada no manifesto do aplicativo, a implantação será bem-sucedida no .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 o aplicativo do Windows Forms, a solução anterior de definir o reconhecimento de DPI no arquivo de configuração de aplicativo em vez de no manifesto do aplicativo não é mais necessária para a implantação pelo ClickOnce ser bem-sucedida.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.

Novidades no .NET Framework 4.7.1What's new in .NET Framework 4.7.1

O .NET Framework 4.7.1 inclui novos recursos nas seguintes áreas:.NET Framework 4.7.1 includes new features in the following areas:

Além disso, um dos objetivos principais do .NET Framework 4.7.1 é a melhoria de acessibilidade, que permite a um aplicativo fornecer uma experiência apropriada para os usuários da Tecnologia Assistencial.In addition, a major focus in .NET Framework 4.7.1 is improved accessibility, which allows an application to provide an appropriate experience for users of Assistive Technology. Para saber mais sobre melhorias de acessibilidade no .NET Framework 4.7.1,consulte Novidades de acessibilidade no .NET Framework.For information on accessibility improvements in .NET Framework 4.7.1, see What's new in accessibility in the .NET Framework.

Classes baseBase classes

Suporte para .NET Standard 2.0Support for .NET Standard 2.0

O .NET Standard define um conjunto das APIs que precisam estar disponíveis em todas as implementações do .NET compatíveis com a versão do standard..NET Standard defines a set of APIs that must be available on each .NET implementation that supports that version of the standard. O .NET Framework 4.7.1 dá suporte total ao .NET Standard 2.0 e adiciona cerca de 200 APIs que são definidas no .NET Standard 2.0 e não estão presentes nas versões 4.6.1, 4.6.2 e 4.7 do .NET Framework..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 .NET Framework 4.6.1, 4.6.2, and 4.7. (Observe que essas versões do .NET Framework oferecem suporte a .NET Standard 2,0 somente se os arquivos de suporte .NET Standard adicionais também forem implantados no sistema de destino.) Para obter mais informações, consulte "suporte a BCL-.NET Standard 2,0" na postagem do blog .NET Framework 4.7.1 tempo de execução e recursos do compilador .(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.

Suporte para construtores de configuraçãoSupport for configuration builders

Construtores de configuração permitem aos desenvolvedores injetar e compilar definições de configuração para aplicativos dinamicamente no tempo de execução.Configuration builders allow developers to inject and build configuration settings for applications dynamically at run time. Construtores de configuração personalizada podem ser usados para modificar os dados existentes em uma seção de configuração ou criar uma seção de configuração do zero.Custom configuration builders can be used to modify existing data in a configuration section or to build a configuration section entirely from scratch. Sem construtores de configuração, arquivos .config são estáticos e suas configurações são definidas algum tempo antes de um aplicativo ser lançado.Without configuration builders, .config files are static, and their settings are defined some time before an application is launched.

Para criar um construtor de configuração personalizado, derive seu construtor da classe abstrata ConfigurationBuilder e substitua os ConfigurationBuilder.ProcessConfigurationSection e 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. Você também pode definir seus construtores no arquivo .config.You also define your builders in your .config file. Para obter mais informações, consulte a seção “Construtores de configuração” na postagem de blog ASP.NET e recursos de configuração do .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.

Detecção de recurso de tempo de execuçãoRun-time feature detection

A classe System.Runtime.CompilerServices.RuntimeFeature fornece um mecanismo para determinar se há suporte para um recurso predefinido em determinada implementação .NET no tempo de compilação ou no tempo de execução.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. No tempo de compilação, um compilador pode verificar se um campo especificado existe para determinar se há suporte para o recurso; se houver, ele pode emitir um código que aproveita tal recurso.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. No tempo de execução, um aplicativo pode chamar o método RuntimeFeature.IsSupported antes de emitir o código no tempo de execução.At run time, an application can call the RuntimeFeature.IsSupported method before emitting code at runtime. Para obter mais informações, consulte Adicionar método auxiliar para descrever os recursos com suporte no tempo de execução.For more information, see Add helper method to describe features supported by the runtime.

Tipos de tupla de valor são serializáveisValue tuple types are serializable

A partir do .NET Framework 4.7.1, System.ValueTuple e seus tipos genéricos associados são marcados como Serializable, o que permite a serialização binária.Starting with .NET Framework 4.7.1, System.ValueTuple and its associated generic types are marked as Serializable, which allows binary serialization. Isso deve facilitar bastante a migração de tipos de Tupla, como Tuple<T1,T2,T3> e Tuple<T1,T2,T3,T4>, em tipos de tupla de valor.This should make migrating Tuple types, such as Tuple<T1,T2,T3> and Tuple<T1,T2,T3,T4>, to value tuple types easier. Para obter mais informações, consulte “Compilador -- ValueTuple é serializável” na postagem de blog Tempo de execução e recursos do compilador do .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.

Suporte para referências somente leituraSupport for read-only references

O .NET Framework 4.7.1 adiciona o System.Runtime.CompilerServices.IsReadOnlyAttribute..NET Framework 4.7.1 adds the System.Runtime.CompilerServices.IsReadOnlyAttribute. Este atributo é usado por compiladores de linguagem para marcar membros que têm parâmetros ou tipos de retorno somente leitura de referência.This attribute is used by language compilers to mark members that have read-only ref return types or parameters. Para obter mais informações, consulte “Compilador -- Suporte a ReadOnlyReferences” na postagem de blog Tempo de execução e recursos do compilador do .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 saber mais sobre valores retornados de referência, consulte Valores retornados de referência e locais de referência (Guia de C#) e Valores retornados de referência (Visual Basic).For information on ref return values, see Ref return values and ref locals (C# Guide) and Ref return values (Visual Basic).

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

Melhorias de desempenho de coleta de lixoGarbage collection performance improvements

As alterações na GC (coleta de lixo) no .NET Framework 4.7.1 melhoram o desempenho geral, especialmente para alocações de LOH (Heap de Objeto Grande).Changes to garbage collection (GC) in .NET Framework 4.7.1 improve overall performance, especially for Large Object Heap (LOH) allocations. No .NET Framework 4.7.1, bloqueios separados são usados para alocações de SOH (Heap de Objeto Pequeno) e LOH, permitindo que alocações de LOH ocorram quando a BGC (coleta de lixo em segundo plano) está limpando o SOH.In .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, os aplicativos que compõem um grande número de alocações de LOH devem observar uma redução na contenção de bloqueio de alocação e melhoria no desempenho.As a result, applications that make a large number of LOH allocations should see a reduction in allocation lock contention and improved performance. Para obter mais informações, consulte a seção “Tempo de execução -- Melhorias de desempenho do GC” na postagem de blog Tempo de execução e recursos do compilador do .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.

RedeNetworking

Suporte a SHA-2 Message.HashAlgorithmSHA-2 support for Message.HashAlgorithm

No .NET Framework 4.7 e versões anteriores, a propriedade Message.HashAlgorithm era compatível somente com os valores HashAlgorithm.Md5 e HashAlgorithm.Sha.In .NET Framework 4.7 and earlier versions, the Message.HashAlgorithm property supported values of HashAlgorithm.Md5 and HashAlgorithm.Sha only. A partir do .NET Framework 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384 e HashAlgorithm.Sha512 também são compatíveis.Starting with .NET Framework 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384, and HashAlgorithm.Sha512 are also supported. Se esse valor será realmente usado depende de MSMQ, visto que a própria instância Message não faz nenhum hash, passando simplesmente os valores para o 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 obter mais informações, consulte a seção “Suporte de SHA-2 para Message.HashAlgorithm” na postagem de blog ASP.NET e recursos de configuração do .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

Etapas de execução em aplicativos ASP.NETExecution steps in ASP.NET applications

O ASP.NET processa as solicitações em um pipeline predefinido que inclui 23 eventos.ASP.NET processes requests in a predefined pipeline that includes 23 events. O ASP.NET executa cada manipulador de eventos como uma etapa de execução.ASP.NET executes each event handler as an execution step. Em versões do ASP.NET até o .NET Framework 4.7, o ASP.NET não podia dar vazão ao fluxo do contexto de execução devido à alternância entre os threads nativos e gerenciados.In versions of ASP.NET up to .NET Framework 4.7, ASP.NET can't flow the execution context due to switching between native and managed threads. Em vez disso, o ASP.NET dá vazão seletivamente somente ao fluxo do HttpContext.Instead, ASP.NET selectively flows only the HttpContext. A partir do .NET Framework 4.7.1, o método HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) também permite que os módulos restaurem dados do ambiente.Starting with .NET Framework 4.7.1, the HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) method also allows modules to restore ambient data. Esse recurso é destinado a bibliotecas preocupadas com o rastreamento, criação de perfil, diagnóstico ou transações, como por exemplo, aquelas que se preocupam com o fluxo de execução do aplicativo.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 obter mais informações, consulte “Recurso de etapa de execução do ASP.NET” na postagem de blog ASP.NET e recursos de configuração do .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álise de HttpCookie do ASP.NETASP.NET HttpCookie parsing

O .NET Framework 4.7.1 inclui um novo método, HttpCookie.TryParse, que fornece uma maneira padronizada para criar um objeto HttpCookie com base em uma cadeia de caracteres e atribuir com precisão valores de cookie como data de validade e caminho..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 obter mais informações, consulte “Análise do ASP.NET HttpCookie” na postagem de blog ASP.NET e recursos de configuração do .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.

Opções de hash SHA-2 para credenciais de autenticação de formulários do ASP.NETSHA-2 hash options for ASP.NET forms authentication credentials

No .NET Framework 4.7 e versões anteriores, o ASP.NET permitia aos desenvolvedores armazenar credenciais de usuário com as senhas com hash nos arquivos de configuração usando MD5 ou SHA1.In .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 do .NET Framework 4.7.1, o ASP.NET também dá suporte a novas opções de hash SHA-2 seguras como SHA256, SHA384 e SHA512.Starting with .NET Framework 4.7.1, ASP.NET also supports new secure SHA-2 hash options such as SHA256, SHA384, and SHA512. O SHA1 continua sendo o padrão e um algoritmo de hash não padrão pode ser definido no arquivo de configuração da Web.SHA1 remains the default, and a non-default hash algorithm can be defined in the web configuration file. Por exemplo:For example:

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

Novidades no .NET Framework 4.7What's new in .NET Framework 4.7

O .NET Framework 4.7 inclui novos recursos nas seguintes áreas:.NET Framework 4.7 includes new features in the following areas:

Para obter uma lista das novas APIs adicionadas ao .NET Framework 4.7, consulte Alterações na API do .NET Framework 4.7 no GitHub.For a list of new APIs added to .NET Framework 4.7, see .NET Framework 4.7 API Changes on GitHub. Para obter uma lista de aprimoramentos de recursos e correções de bugs no .NET Framework 4.7, consulte Lista de alterações do .NET Framework 4.7 no GitHub.For a list of feature improvements and bug fixes in .NET Framework 4.7, see .NET Framework 4.7 List of Changes on GitHub. Para saber mais, confira o artigo Anunciando o .NET Framework 4.7 no blog do .NET.For additional information, see Announcing the .NET Framework 4.7 in the .NET blog.

Classes baseBase classes

O .NET Framework 4.7 melhora a serialização pelo DataContractJsonSerializer:.NET Framework 4.7 improves serialization by the DataContractJsonSerializer:

Funcionalidade aprimorada com ECC (Criptografia de curva elíptica) *Enhanced functionality with Elliptic Curve Cryptography (ECC)*

No .NET Framework 4.7, os métodos ImportParameters(ECParameters) foram adicionados às classes ECDsa e ECDiffieHellman para permitir que um objeto representasse uma chave já estabelecida.In .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. Também foi adicionado um método ExportParameters(Boolean) à exportação da chave usando parâmetros de curva explícita.An ExportParameters(Boolean) method was also added for exporting the key using explicit curve parameters.

O .NET Framework 4.7 também adiciona suporte para curvas adicionais (incluindo o conjunto de curvas Brainpool) e adicionou definições predefinidas para facilitar a criação por meio dos novos métodos de fábrica Create e Create..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.

Veja um exemplo dos aprimoramentos de criptografia do .NET Framework 4.7 no GitHub.You can see an example of .NET Framework 4.7 cryptography improvements on GitHub.

Suporte aprimorado para caracteres de controle do DataContractJsonSerializerBetter support for control characters by the DataContractJsonSerializer

No Framework .NET 4.7, o DataContractJsonSerializer serializa os caracteres de controle de acordo com o padrão ECMAScript 6.In .NET Framework 4.7, the DataContractJsonSerializer serializes control characters in conformity with the ECMAScript 6 standard. Esse comportamento está habilitado por padrão para aplicativos direcionados ao .NET Framework 4.7 e é uma escolha de recurso para aplicativos que são executados no .NET Framework 4.7, mas que são direcionados a uma versão anterior do .NET Framework.This behavior is enabled by default for applications that target .NET Framework 4.7, and is an opt-in feature for applications that are running under .NET Framework 4.7 but target a previous version of the .NET Framework. Para saber mais, confira Alterações de redirecionamento no .NET Framework 4.7.For more information, see Retargeting Changes in the .NET Framework 4.7.

RedeNetworking

O .NET Framework 4.7 adiciona os seguintes recursos de rede:.NET Framework 4.7 adds the following network-related feature:

Suporte do sistema operacional padrão para protocolos TLS*Default operating system support for TLS protocols*

A pilha de TLS, que é usada por System.Net.Security.SslStream e por componentes de início de pilha, como HTTP, FTP e SMTP, permite que os desenvolvedores usem protocolos TLS padrão com suporte do sistema operacional.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. Os desenvolvedores não precisam mais codificar uma versão de TLS.Developers need no longer hard-code a TLS version.

ASP.NETASP.NET

No .NET Framework 4.7, o ASP.NET inclui os seguintes recursos novos:In .NET Framework 4.7, ASP.NET includes the following new features:

Extensibilidade de cache do objetoObject Cache Extensibility

A partir do .NET Framework 4.7, o ASP.NET adiciona um novo conjunto de APIs que permitem aos desenvolvedores substituir as implementações padrão de ASP.NET para o armazenamento em cache de objeto na memória e o monitoramento da memória.Starting with .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. Agora, os desenvolvedores podem substituir qualquer um dos três componentes a seguir se a implementação do ASP.NET não for adequada:Developers can now replace any of the following three components if the ASP.NET implementation is not adequate:

  • Armazenamento de cache de objeto.Object Cache Store. Na nova seção de configuração de provedores de cache, os desenvolvedores podem conectar novas implementações de um cache de objeto para um aplicativo ASP.NET usando a nova interface ICacheStoreProvider.By using the new cache providers configuration section, developers can plug in new implementations of an object cache for an ASP.NET application by using the new ICacheStoreProvider interface.

  • Monitoramento da memória.Memory monitoring. O monitor de memória padrão no ASP.NET notifica os aplicativos quando eles estiverem se aproximando do limite configurado de bytes particulares para o processo, ou quando o computador estiver com pouca RAM física total disponível.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. Quando esses limites estiverem próximos, as notificações serão disparadas.When these limits are near, notifications are fired. Para alguns aplicativos, as notificações são disparadas muito próximas aos limites configurados a fim de permitir reações úteis.For some applications, notifications are fired too close to the configured limits to allow for useful reactions. Agora, os desenvolvedores podem criar seus próprios monitores de memória para substituir o padrão usando a propriedade ApplicationMonitors.MemoryMonitor.Developers can now write their own memory monitors to replace the default by using the ApplicationMonitors.MemoryMonitor property.

  • Reações de limite de memória.Memory Limit Reactions. Por padrão, o ASP.NET tenta aparar o cache de objetos e chamar periodicamente GC.Collect quando o limite do processo de bytes particulares está próximo.By default, ASP.NET attempts to trim the object cache and periodically call GC.Collect when the private byte process limit is near. Para alguns aplicativos, a frequência de chamadas para GC.Collect ou a quantidade aparada do cache é ineficaz.For some applications, the frequency of calls to GC.Collect or the amount of cache that is trimmed are inefficient. Agora, os desenvolvedores podem substituir ou complementar o comportamento padrão incluindo implementações do IObserver no monitor de memória do aplicativo.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)

O Windows Communication Foundation (WCF) adiciona os seguintes recursos e alterações:Windows Communication Foundation (WCF) adds the following features and changes:

Capacidade de definir configurações de segurança de mensagem padrão para TLS 1.1 ou TLS 1.2Ability to configure the default message security settings to TLS 1.1 or TLS 1.2

A partir do .NET Framework 4.7, o WCF permite que você configure o TSL 1.1 ou o TLS 1.2, além do SSL 3.0 e TSL 1.0, como o protocolo de segurança de mensagem padrão.Starting with .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 é uma configuração baseada no consentimento; para habilitá-la, você deve adicionar a seguinte entrada ao arquivo de configuração do aplicativo: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>

Confiabilidade aprimorada de aplicativos WCF e serialização do WCFImproved reliability of WCF applications and WCF serialization

O WCF inclui diversas alterações de código que eliminam as condições de corrida, melhorando o desempenho e a confiabilidade das opções de serialização.WCF includes a number of code changes that eliminate race conditions, thereby improving performance and the reliability of serialization options. Elas incluem:These include:

  • Suporte aprimorado para combinação de código síncrono e assíncrono em chamadas para SocketConnection.BeginRead e SocketConnection.Read.Better support for mixing asynchronous and synchronous code in calls to SocketConnection.BeginRead and SocketConnection.Read.
  • Confiabilidade aprimorada ao anular uma conexão com SharedConnectionListener e DuplexChannelBinder.Improved reliability when aborting a connection with SharedConnectionListener and DuplexChannelBinder.
  • Aumento da confiabilidade das operações de serialização ao chamar o método FormatterServices.GetSerializableMembers(Type).Improved reliability of serialization operations when calling the FormatterServices.GetSerializableMembers(Type) method.
  • Confiabilidade aprimorada ao remover um waiter chamando o método ChannelSynchronizer.RemoveWaiter.Improved reliability when removing a waiter by calling the ChannelSynchronizer.RemoveWaiter method.

Windows FormsWindows Forms

No .NET Framework 4.7, o Windows Forms melhora o suporte para monitores com alto DPI.In .NET Framework 4.7, Windows Forms improves support for high DPI monitors.

Suporte para DPI altoHigh DPI support

A partir dos aplicativos direcionados ao .NET Framework 4.7, o .NET Framework apresenta suporte para alto DPI e DPI dinâmico em aplicativos do Windows Forms.Starting with applications that target .NET Framework 4.7, the .NET Framework features high DPI and dynamic DPI support for Windows Forms applications. O suporte para DPI alto melhora o layout e a aparência de formulários e controles em monitores com alto DPI.High DPI support improves the layout and appearance of forms and controls on high DPI monitors. O DPI dinâmico altera o layout e a aparência de formulários e controles quando o usuário altera o DPI ou o fator de escala de exibição de um aplicativo em execução.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.

O suporte ao DPI alto é um recurso baseado no consentimento que você configura definindo uma seção <System.Windows.Forms.ConfigurationSection> no arquivo de configuração do aplicativo.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 saber mais sobre como adicionar suporte ao DPI alto e suporte ao DPI dinâmico para seu aplicativo Windows Forms, confira Suporte a DPI alto no 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)

No .NET Framework 4.7, o WPF inclui os seguintes aprimoramentos:In .NET Framework 4.7, WPF includes the following enhancements:

Suporte para uma pilha de toque/caneta com base em mensagens WM_POINTER do WindowsSupport for a touch/stylus stack based on Windows WM_POINTER messages

Agora você tem a opção de usar uma pilha de toque/caneta com base em mensagens WM_POINTER em vez de WISP (Plataforma de Serviços do Windows Ink).You now have the option of using a touch/stylus stack based on WM_POINTER messages instead of the Windows Ink Services Platform (WISP). Esse é um recurso do .NET Framework baseado no consentimento.This is an opt-in feature in the .NET Framework. Para saber mais, confira Alterações de redirecionamento no .NET Framework 4.7.For more information, see Retargeting Changes in the .NET Framework 4.7.

Nova implementação para APIs de impressão do WPFNew implementation for WPF printing APIs

As APIs de impressão do WPF na classe System.Printing.PrintQueue chamam a Print Document Package API (API de Impressão pacote de documentos) do Windows em vez da XPS Print API (API de impressão XPS), que foi preterida.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 saber o impacto dessa alteração na compatibilidade do aplicativo, consulte Alterações de redirecionamento do .NET Framework 4.7.For the impact of this change on application compatibility, see Retargeting Changes in the .NET Framework 4.7.

Novidades no .NET Framework 4.6.2What's new in .NET Framework 4.6.2

O .NET Framework 4.6.2 inclui novos recursos nas seguintes áreas:The .NET Framework 4.6.2 includes new features in the following areas:

Para obter uma lista das novas APIs adicionadas ao .NET Framework 4.6.2, consulte Alterações na API do .NET Framework 4.6.2 no GitHub.For a list of new APIs added to .NET Framework 4.6.2, see .NET Framework 4.6.2 API Changes on GitHub. Para obter uma lista de aprimoramentos de recursos e correções de bugs no .NET Framework 4.6.2, consulte o artigo Lista de alterações do .NET Framework 4.6.2 no GitHub.For a list of feature improvements and bug fixes in .NET Framework 4.6.2, see .NET Framework 4.6.2 List of Changes on GitHub. Para saber mais, confira Anunciando o .NET Framework 4.6.2 no Blog do .NET.For additional information, see Announcing .NET Framework 4.6.2 in the .NET blog.

ASP.NETASP.NET

No .NET Framework 4.6.2, o ASP.NET inclui os seguintes aprimoramentos:In the .NET Framework 4.6.2, ASP.NET includes the following enhancements:

Suporte aprimorado para mensagens de erro localizadas em validadores de anotação de dadosImproved support for localized error messages in data annotation validators

Os validadores de anotação de dados permitem que você execute a validação adicionando um ou mais atributos a uma propriedade de classe.Data annotation validators enable you to perform validation by adding one or more attributes to a class property. O elemento ValidationAttribute.ErrorMessage do atributo define o texto da mensagem de erro se a validação falhar.The attribute's ValidationAttribute.ErrorMessage element defines the text of the error message if validation fails. A partir do .NET Framework 4.6.2, o ASP.NET facilita a localização de mensagens de erro.Starting with the .NET Framework 4.6.2, ASP.NET makes it easy to localize error messages. Mensagens de erro serão localizadas se:Error messages will be localized if:

  1. O ValidationAttribute.ErrorMessage é fornecido no atributo de validação.The ValidationAttribute.ErrorMessage is provided in the validation attribute.

  2. O arquivo de recurso é armazenado na pasta App_LocalResources.The resource file is stored in the App_LocalResources folder.

  3. O nome do arquivo de recursos localizado tem o formato DataAnnotation.Localization.{nome}.resx, em que nome é um nome de cultura no formato código do Idioma-Código do país/região ou código do Idioma.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. O nome da chave do recurso é a cadeia de caracteres atribuída ao atributo ValidationAttribute.ErrorMessage e seu valor é a mensagem de erro localizada.The key name of the resource is the string assigned to the ValidationAttribute.ErrorMessage attribute, and its value is the localized error message.

Por exemplo, o atributo de anotação de dados a seguir define a mensagem de erro da cultura padrão para uma classificação invá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

Você pode criar um arquivo de recurso, DataAnnotation.Localization.fr.resx, cuja chave é a cadeia de caracteres da mensagem de erro e cujo valor é a mensagem de erro localizada.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. O arquivo deve ser encontrado na pasta App.LocalResources.The file must be found in the App.LocalResources folder. Por exemplo, veja a seguir a chave e seu valor em uma mensagem de erro localizada no idioma francês (fr):For example, the following is the key and its value in a localized French (fr) language error message:

NameName ValorValue
A classificação deve estar entre 1 e 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.

Além disso, a localização de anotação de dados é extensível.In addition, data annotation localization is extensible. Os desenvolvedores podem conectar seu próprio provedor de localizador de cadeia de caracteres implementando a interface IStringLocalizerProvider para armazenar a cadeia de localização em algum lugar diferente de um arquivo de recurso.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.

Suporte assíncrono com provedores de armazenamento de estado de sessãoAsync support with session-state store providers

Agora, o ASP.NET permite o uso de métodos de retorno de tarefas com provedores de armazenamento de estado da sessão, permitindo assim que os aplicativos ASP.NET obtenham os benefícios de escalabilidade do modo assíncrono.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 dar suporte às operações assíncronas com provedores de armazenamento de estado de sessão, o ASP.NET inclui uma nova interface, System.Web.SessionState.ISessionStateModule, que herda de IHttpModule e permite aos desenvolvedores implementar seus próprios módulo de estado de sessão e provedores de estado de sessão assíncrona.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. A interface é definida assim:The interface is defined as follows:

public interface ISessionStateModule : IHttpModule {
    void ReleaseSessionState(HttpContext context);
    Task ReleaseSessionStateAsync(HttpContext context);
}
Public Interface ISessionStateModule : Inherits IHttpModule
   Sub ReleaseSessionState(context As HttpContext)
   Function ReleaseSessionStateAsync(context As HttpContext) As Task
End Interface

Além disso, a classe SessionStateUtility inclui dois métodos novos, IsSessionStateReadOnly e IsSessionStateRequired, que podem ser usados para oferecer suporte a operações assíncronas.In addition, the SessionStateUtility class includes two new methods, IsSessionStateReadOnly and IsSessionStateRequired, that can be used to support asynchronous operations.

Suporte assíncrono para provedores de cache de saídaAsync support for output-cache providers

A partir do .NET Framework 4.6.2, os métodos de retorno de tarefa podem ser usados com provedores de cache de saída a fim de oferecer os benefícios de escalabilidade do modo assíncrono.Starting with the .NET Framework 4.6.2, task-returning methods can be used with output-cache providers to provide the scalability benefits of async. Provedores que implementam esses métodos reduzem o bloqueio de thread em um servidor Web e melhoram a escalabilidade de um serviço ASP.NET.Providers that implement these methods reduce thread-blocking on a web server and improve the scalability of an ASP.NET service.

As seguintes APIs foram adicionadas para oferecer suporte a provedores de cache de saída assíncronos:The following APIs have been added to support asynchronous output-cache providers:

Categorias de caractereCharacter categories

Os caracteres no .NET Framework 4.6.2 são classificados com base no Padrão Unicode, versão 8.0.0.Characters in the .NET Framework 4.6.2 are classified based on the Unicode Standard, Version 8.0.0. No .NET Framework 4.6 e no .NET Framework 4.6.1, os caracteres foram classificados com base nas categorias de caracteres do Unicode 6.3.In .NET Framework 4.6 and .NET Framework 4.6.1, characters were classified based on Unicode 6.3 character categories.

O suporte para o Unicode 8.0 é limitado à classificação de caracteres pela classe CharUnicodeInfo e para tipos e métodos que dependem dela.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 elas está a classe StringInfo, o método Char.GetUnicodeCategory sobrecarregado e as classes de caracteres reconhecidas pelo mecanismo de expressões regulares do .NET Framework.These include the StringInfo class, the overloaded Char.GetUnicodeCategory method, and the character classes recognized by the .NET Framework regular expression engine. A comparação e a classificação de caracteres e cadeia de caracteres não são afetadas por essa alteração e continuam a depender do sistema operacional subjacente ou, em sistemas com Windows 7, em dados de caracteres fornecidos pelo .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 alterações nas categorias de caracteres do Unicode 6.0 para Unicode 7.0, confira O padrão Unicode, versão 7.0.0 no site 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 alterações do Unicode 7.0 para Unicode 8.0, confira O padrão Unicode, versão 8.0.0 no site 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.

CriptografiaCryptography

Suporte para certificados X509 contendo um DSA FIPS 186-3Support for X509 certificates containing FIPS 186-3 DSA

O .NET Framework 4.6.2 adiciona suporte a certificados DSA (Algoritmo de Assinatura Digital) X509 cujas chaves ultrapassam o limite de 1024 bits do FIPS 186-2.The .NET Framework 4.6.2 adds support for DSA (Digital Signature Algorithm) X509 certificates whose keys exceed the FIPS 186-2 1024-bit limit.

Além de oferecer suporte a chaves maiores de FIPS 186-3, o .NET Framework 4.6.2 permite assinaturas de computação com a família SHA-2 de algoritmos de hash (SHA256, SHA384 e SHA512).In addition to supporting the larger key sizes of FIPS 186-3, the .NET Framework 4.6.2 allows computing signatures with the SHA-2 family of hash algorithms (SHA256, SHA384, and SHA512). O suporte a FIPS 186-3 é fornecido pela nova classe System.Security.Cryptography.DSACng.FIPS 186-3 support is provided by the new System.Security.Cryptography.DSACng class.

Para acompanhar as alterações recentes na classe RSA do .NET Framework 4.6 e na classe ECDsa do .NET Framework 4.6.1, a classe base abstrata DSA do .NET Framework 4.6.2 tem métodos adicionais que permitem aos chamadores usar essa funcionalidade sem conversão.In keeping with recent changes to the RSA class in .NET Framework 4.6 and the ECDsa class in .NET Framework 4.6.1, the DSA abstract base class in .NET Framework 4.6.2 has additional methods to allow callers to use this functionality without casting. Você pode chamar o método de extensão DSACertificateExtensions.GetDSAPrivateKey para assinar dados, como mostra o exemplo a seguir.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

E você pode chamar o método de extensão DSACertificateExtensions.GetDSAPublicKey para verificar os dados assinados, como mostra o exemplo a seguir.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

Maior clareza para as entradas nas rotinas de derivação de chaves ECDiffieHellmanIncreased clarity for inputs to ECDiffieHellman key derivation routines

O .NET Framework 3.5 adicionou suporte para o Contrato de chave Diffie-Hellman de curva elíptica com três rotinas KDF (Função de Derivação de Chaves) diferentes..NET Framework 3.5 added support for Elliptic Curve Diffie-Hellman Key Agreement with three different Key Derivation Function (KDF) routines. As entradas para as rotinas, e as próprias rotinas, foram configuradas por meio de propriedades no objeto ECDiffieHellmanCng.The inputs to the routines, and the routines themselves, were configured via properties on the ECDiffieHellmanCng object. Mas como nem toda rotina lia cada propriedade de entrada, havia muita margem para confusão do desenvolvedor.But since not every routine read every input property, there was ample room for confusion on the past of the developer.

Para lidar com isso no .NET Framework 4.6.2, os três métodos a seguir foram adicionados à classe base ECDiffieHellman para representar mais claramente essas rotinas KDF e suas entradas:To address this in the .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 DescriçãoDescription
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]) Deriva o material da chave usando a 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)

em que x é o resultado calculado do algoritmo EC Diffie-Hellman.where x is the computed result of the EC Diffie-Hellman algorithm.
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]) Deriva o material da chave usando a 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)

em que x é o resultado calculado do algoritmo EC Diffie-Hellman.where x is the computed result of the EC Diffie-Hellman algorithm.
DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[]) Deriva o material da chave usando o algoritmo de derivação PRF (Função pseudoaleatória) TLS.Derives key material using the TLS pseudo-random function (PRF) derivation algorithm.

Suporte para criptografia simétrica de chave persistidaSupport for persisted-key symmetric encryption

A biblioteca de criptografia do Windows (CNG) adicionou suporte para o armazenamento de chaves simétricas persistidas e para o uso de chaves simétricas armazenadas em hardware, e o .NET Framework 4.6.2 possibilita aos desenvolvedores o uso desse recurso.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 made it possible for developers to make use of this feature. Como a noção de nomes e provedores de chave é específica à implementação, o uso desse recurso exige a utilização do construtor dos tipos de implementação concreta em vez da abordagem preferencial de fábrica (por exemplo, chamar 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).

O suporte à criptografia simétrica de chave persistente existe para os algoritmos AES (AesCng) e 3DES (TripleDESCng).Persisted-key symmetric encryption support exists for the AES (AesCng) and 3DES (TripleDESCng) algorithms. Por exemplo: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

Suporte a SignedXml para hash SHA-2SignedXml support for SHA-2 hashing

O .NET Framework 4.6.2 adiciona o suporte à classe SignedXml para os métodos de assinatura PKCS#1 RSA-SHA256, RSA-SHA384 e RSA-SHA512, e os algoritmos de resumo de referência SHA256, SHA384 e SHA512.The .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.

As constantes de URI são expostas em 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 os programas que registraram um manipulador SignatureDescription personalizado em CryptoConfig para adicionar suporte a esses algoritmos continuarão a funcionar como antes, mas como agora há padrões de plataforma, o registro de CryptoConfig não é mais necessário.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

O provedor de dados do .NET Framework para SQL Server (System.Data.SqlClient) inclui os seguintes recursos novos no .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:

Pooling de conexão e tempos limite com bancos de dados SQL do AzureConnection pooling and timeouts with Azure SQL databases

Quando o pooling de conexão estiver habilitado e ocorrer um tempo limite ou outro erro de logon, uma exceção será armazenada em cache, e a exceção em cache será lançada em qualquer tentativa de conexão subsequentes nos próximos cinco segundos a um 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 obter mais detalhes, confira Pooling de conexão do SQL Server (ADO.NET).For more details, see SQL Server Connection Pooling (ADO.NET).

Esse comportamento não é desejável ao se conectar a Bancos de Dados SQL do Azure, uma vez que as tentativas de conexão podem falhar com erros transitórios que normalmente são recuperados rapidamente.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 otimizar melhor a experiência de repetição de conexão, o comportamento do período de bloqueio do pool conexão é removido quando as conexões com os Bancos de Dados SQL do Azure falham.To better optimize the connection retry experience, the connection pool blocking period behavior is removed when connections to Azure SQL Databases fail.

A adição da nova palavra-chave PoolBlockingPeriod permite que você selecione o período de bloqueio mais adequado para seu aplicativo.The addition of the new PoolBlockingPeriod keyword lets you to select the blocking period best suited for your app. Os valores são:Values include:

Auto

O período de bloqueio do pool de conexão de um aplicativo que se conecta a um Banco de Dados SQL do Azure está desabilitado, e período de bloqueio do pool de conexão de um aplicativo que se conecta a qualquer outra instância do 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 é o valor padrão.This is the default value. Se o nome de ponto de extremidade do Servidor terminar com qualquer uma das seguintes opções, será considerado um Banco de Dado SQL do 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

O período de bloqueio do pool de conexão está sempre habilitado.The connection pool blocking period is always enabled.

NeverBlock

O período de bloqueio do pool de conexão está sempre desabilitado.The connection pool blocking period is always disabled.

Aprimoramentos para Always EncryptedEnhancements for Always Encrypted

O SQLClient apresenta dois aprimoramentos para Always Encrypted:SQLClient introduces two enhancements for Always Encrypted:

  • Agora, para melhorar o desempenho de consultas parametrizadas em colunas de banco de dados criptografadas, os metadados de criptografia para parâmetros de consulta são armazenado em cache.To improve performance of parameterized queries against encrypted database columns, encryption metadata for query parameters is now cached. Com a propriedade SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled definida como true (que é o valor padrão), se a mesma consulta for chamada várias vezes, o cliente recuperará metadados de parâmetro do servidor somente uma 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.

  • As entradas de chave de criptografia da coluna no cache de chave são removidas após um intervalo de tempo configurável, definido usando a propriedade 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

No .NET Framework 4.6.2, o Windows Communication Foundation foi aprimorado nas seguintes áreas:In the .NET Framework 4.6.2, Windows Communication Foundation has been enhanced in the following areas:

Suporte à segurança de transporte do WCF para certificados armazenados usando CNGWCF transport security support for certificates stored using CNG

A segurança de transporte do WCF dá suporte a certificados armazenados usando a biblioteca de criptografia do Windows (CNG).WCF transport security supports certificates stored using the Windows cryptography library (CNG). No .NET Framework 4.6.2, esse suporte é limitado ao uso de certificados com uma chave pública que tenha um expoente não superior a 32 bits de comprimento.In the .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. Quando um aplicativo é direcionado ao .NET Framework 4.6.2, esse recurso é ativado por padrão.When an application targets the .NET Framework 4.6.2, this feature is on by default.

Para aplicativos direcionados ao .NET Framework 4.6.1 e versões anteriores, mas que são executados no .NET Framework 4.6.2, esse recurso pode ser habilitado adicionando a seguinte linha à seção <runtime> do arquivo app.config ou web.config.For applications that target the .NET Framework 4.6.1 and earlier but are running on the .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"
/>

Isso também pode ser feito de modo programático com um código como o seguinte: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)

Melhor suporte para várias regras de ajuste de horário de verão pela classe DataContractJsonSerializerBetter support for multiple daylight saving time adjustment rules by the DataContractJsonSerializer class

Os clientes podem usar uma configuração de aplicativo para determinar se a classeDataContractJsonSerializer dá suporte a várias regras de ajuste para um único fuso horário.Customers can use an application configuration setting to determine whether the DataContractJsonSerializer class supports multiple adjustment rules for a single time zone. Esse é um recurso de opção de aceitação.This is an opt-in feature. Para habilitá-lo, adicione a seguinte configuração ao arquivo app.config:To enable it, add the following setting to your app.config file:

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

Quando esse recurso estiver habilitado, um objeto DataContractJsonSerializer usará o tipo TimeZoneInfo em vez do TimeZone para desserializar dados de data e hora.When this feature is enabled, a DataContractJsonSerializer object uses the TimeZoneInfo type instead of the TimeZone type to deserialize date and time data. O TimeZoneInfo oferece suporte a várias regras de ajuste, o que possibilita o trabalho com dados históricos fuso horário; o TimeZone não oferece.TimeZoneInfo supports multiple adjustment rules, which makes it possible to work with historic time zone data; TimeZone does not.

Para saber mais sobre a estrutura TimeZoneInfo e ajustes de fuso horário, confira Visão geral do fuso horário.For more information on the TimeZoneInfo structure and time zone adjustments, see Time Zone Overview.

Melhor correspondência de NetNamedPipeBindingNetNamedPipeBinding best match

O WCF possui uma nova configuração de aplicativo que pode ser definida em aplicativos cliente para garantir que eles sempre se conectem ao serviço escutando no URI mais próximo ao solicitado.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. Com essa configuração de aplicativo definida como false (padrão), os clientes podem usar NetNamedPipeBinding para tentar se conectar a um serviço escutando em um URI que é uma subcadeia de caracteres do 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 exemplo, um cliente tenta se conectar a um serviço escutando em net.pipe://localhost/Service1, mas um serviço diferente nessa máquina que está executando com privilégios de administrador está escutando em 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. Com essa configuração de aplicativo definida como false, o cliente tentaria se conectar ao serviço errado.With this app setting set to false, the client would attempt to connect to the wrong service. Depois de definir a configuração do aplicativo como true, o cliente sempre se conectará ao serviço com correspondência mais próxima.After setting the app setting to true, the client will always connect to the best matching service.

Observação

Os clientes que usam NetNamedPipeBinding localizam serviços com base no endereço base do serviço (se ele existir) em vez do endereço de ponto de extremidade completo.Clients using NetNamedPipeBinding find services based on the service's base address (if it exists) rather than the full endpoint address. Para garantir sempre o funcionamento dessa configuração o serviço deve usar um endereço base exclusivo.To ensure this setting always works the service should use a unique base address.

Para habilitar essa alteração, adicione a seguinte configuração de aplicativo ao arquivo app.config ou web.config de seu aplicativo cliente:To enable this change, add the following app setting to your client application's App.config or Web.config file:

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

SSL 3.0 não é um protocolo padrãoSSL 3.0 is not a default protocol

Ao usar NetTcp com segurança de transporte e um tipo de credencial de certificado, o SSL 3.0 não é mais um protocolo padrão usado para negociar uma conexão 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. Na maioria dos casos, não deve haver impacto nos aplicativos existentes, pois o TLS 1.0 está incluído na 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 os clientes existentes devem ser capazes de negociar uma conexão usando no mínimo o TLS 1.0.All existing clients should be able to negotiate a connection using at least TLS 1.0. Se Ssl3 for exigido, use um dos seguintes mecanismos de configuração para adicioná-lo à 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)

No .NET Framework 4.6.2, o Windows Presentation Foundation foi aprimorado nas seguintes áreas:In the .NET Framework 4.6.2, Windows Presentation Foundation has been enhanced in the following areas:

Classificação de grupoGroup sorting

Um aplicativo que usa um objeto CollectionView para agrupar dados agora pode declarar explicitamente como classificar os grupos.An application that uses a CollectionView object to group data can now explicitly declare how to sort the groups. A classificação explícita resolve o problema de ordens não intuitivas que ocorrem quando um aplicativo adiciona ou remove grupos dinamicamente, ou quando ele altera o valor das propriedades do item envolvidas no agrupamento.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. Ela também pode melhorar o desempenho do processo de criação de grupo mudando comparações das propriedades de agrupamento da classificação da coleção inteira para a classificação dos 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 oferecer suporte à classificação de grupo, as novas propriedades GroupDescription.SortDescriptions e GroupDescription.CustomSort descrevem como classificar a coleção de grupos produzida pelo 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. Isso é semelhante à forma como as propriedades ListCollectionView de nome idêntico descrevem como classificar os itens de dados.This is analogous to the way the identically named ListCollectionView properties describe how to sort the data items.

As duas novas propriedades estáticas da classe PropertyGroupDescription, CompareNameAscending e CompareNameDescending, podem ser usadas para os casos mais comuns.Two new static properties of the PropertyGroupDescription class, CompareNameAscending and CompareNameDescending, can be used for the most common cases.

Por exemplo, os seguintes dados de grupos XAML por idade, classificam as faixas etárias em ordem crescente, e agrupam os itens dentro de cada faixa etária por sobrenome.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>

Suporte ao teclado virtualSoft keyboard support

O suporte ao teclado virtual permite o acompanhamento de foco em aplicativos WPF invocando e ignorando automaticamente o novo Teclado Virtual no Windows 10 quando a entrada de toque for recebida por um controle que aceita entrada textual.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.

Nas versões anteriores do .NET Framework, os aplicativos WPF não podiam aceitar o acompanhamento de foco sem desabilitar o suporte a gestos caneta/toque do 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, os aplicativos WPF devem escolher entre o suporte total a toque do WPF ou depender da promoção de mouse do Windows.As a result, WPF applications must choose between full WPF touch support or rely on Windows mouse promotion.

DPI por monitorPer-monitor DPI

Para dar suporte à recente proliferação de ambientes com alto DPI e DPI híbrido para aplicativos WPF, o WPF no .NET Framework 4.6.2 permite o reconhecimento por monitor.To support the recent proliferation of high-DPI and hybrid-DPI environments for WPF apps, WPF in the .NET Framework 4.6.2 enables per-monitor awareness. Confira Exemplos e guia do desenvolvedor no GitHub para saber mais sobre como habilitar seu aplicativo WPF para ter o reconhecimento do DPI por monitor.See the samples and developer guide on GitHub for more information about how to enable your WPF app to become per-monitor DPI aware.

Nas versões anteriores do .NET Framework, os aplicativos WPF tinha reconhecimento de DPI do sistema.In previous versions of the .NET Framework, WPF apps are system-DPI aware. Em outras palavras, a interface do usuário do aplicativo é dimensionado adequadamente pelo sistema operacional, dependendo do DPI do monitor no qual o aplicativo é renderizado.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 aplicativos em execução no .NET Framework 4.6.2, você pode desabilitar as alterações de DPI por monitor em aplicativos WPF adicionando uma instrução de configuração à seção <runtime> do arquivo de configuração do aplicativo, da seguinte maneira:For apps running under the .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)

No .NET Framework 4.6.2, o Windows Workflow Foundation foi aprimorado na seguinte área:In the .NET Framework 4.6.2, Windows Workflow Foundation has been enhanced in the following area:

Suporte para expressões em C# e IntelliSense no Designer do WF hospedado novamenteSupport for C# expressions and IntelliSense in the Re-hosted WF Designer

A partir do .NET Framework 4.5, o WF oferece suporte a expressões em C# no Designer do Visual Studio e em fluxos de trabalho de código.Starting with the .NET Framework 4.5, WF supports C# expressions in both the Visual Studio Designer and in code workflows. O Designer de Fluxo de Trabalho hospedado novamente é um recurso fundamental do WF que permite ao Designer de Fluxo de Trabalho estar em um aplicativo fora do Visual Studio (por exemplo, no 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). O Windows Workflow Foundation permite o suporte às expressões em C# e ao IntelliSense no Designer de Fluxo de Trabalho hospedado novamente.Windows Workflow Foundation provides the ability to support C# expressions and IntelliSense in the Re-hosted Workflow Designer. Para saber mais, confira o blog do 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 Nas versões do .NET Framework anteriores ao .NET Framework 4.6.2, o IntelliSense de Designer do WF é interrompido quando um cliente recompila um projeto de fluxo de trabalho no 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, WF Designer IntelliSense is broken when a customer rebuilds a workflow project from Visual Studio. Embora a compilação do projeto seja bem-sucedida, os tipos de fluxo de trabalho não são encontrados no designer, e surgem avisos do IntelliSense para os tipos de fluxo de trabalho ausentes na janela Lista de Erros.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. O .NET Framework 4.6.2 resolve esse problema e disponibiliza o IntelliSense.The .NET Framework 4.6.2 addresses this issue and makes IntelliSense available.

Agora, os aplicativos do Fluxo de Trabalho V1 com Acompanhamento de Fluxo de Trabalho ativado são executados no modo FIPSWorkflow V1 applications with Workflow Tracking on now run under FIPS-mode

Máquinas com o Modo de Conformidade FIPS habilitado podem executar um aplicativo no estilo Fluxo de trabalho versão 1 com o acompanhamento de Fluxo de trabalho ativado.Machines with FIPS Compliance Mode enabled can now successfully run a workflow Version 1-style application with Workflow tracking on. Para habilitar esse cenário, faça a seguinte alteração em seu arquivo app.config:To enable this scenario, you must make the following change to your app.config file:

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

Se esse cenário não estiver habilitado, a execução do aplicativo continuará a gerar uma exceção com a mensagem "Esta implementação não faz parte dos algoritmos criptográficos validados por FIPS da Plataforma Windows".If this scenario is not enabled, running the application continues to generate an exception with the message, "This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms."

Aprimoramentos de fluxo de trabalho ao usar a Atualização Dinâmica com o Designer de Fluxo de Trabalho do Visual StudioWorkflow Improvements when using Dynamic Update with Visual Studio Workflow Designer

Agora, o Designer de Fluxo de Trabalho, o Designer de Atividade do Fluxograma e outros Designers de Atividade de Fluxo de Trabalho carregam e exibem com êxito os fluxos de trabalho que foram salvos depois de chamar o 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. Nas versões do .NET Framework anteriores ao .NET Framework 4.6.2, carregar um arquivo XAML no Visual Studio para um fluxo de trabalho que foi salvo após chamar DynamicUpdateServices.PrepareForUpdate poderá resultar nos seguintes problemas:In versions of the .NET Framework before .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:

  • O Designer de Fluxo de Trabalho não consegue carregar o arquivo XAML corretamente (quando ViewStateData.Id está no final da linha).The Workflow Designer can't load the XAML file correctly (when the ViewStateData.Id is at the end of the line).

  • O Designer de Atividades do Fluxograma ou outros Designers de Atividade de Fluxo de Trabalho podem exibir todos os objetos em seus locais padrão em vez de valores de propriedade anexados.Flowchart Activity Designer or other Workflow Activity Designers may display all objects in their default locations as opposed to attached property values.

ClickOnceClickOnce

O ClickOnce foi atualizado para oferecer suporte a TLS 1.1 e o TLS 1.2, além do protocolo 1.0, para o qual ele já oferece suporte.ClickOnce has been updated to support TLS 1.1 and TLS 1.2 in addition to the 1.0 protocol, which it already supports. O ClickOnce detecta automaticamente qual protocolo é necessário; não é necessário executar nenhuma etapa adicional dentro do aplicativo ClickOnce para habilitar o suporte ao TLS 1.1 e 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.

Converter aplicativos do Windows Forms e do WPF em aplicativos UWPConverting Windows Forms and WPF apps to UWP apps

Agora, o Windows oferece recursos para levar aplicativos existentes da área de trabalho do Windows, incluindo aplicativos do Windows Forms e WPF, para a plataforma Universal do Windows (UWP).Windows now offers capabilities to bring existing Windows desktop apps, including WPF and Windows Forms apps, to the Universal Windows Platform (UWP). Essa tecnologia age como uma ponte, permitindo que você migre gradualmente sua base de código existente para a UWP, levando seu aplicativo para todos os dispositivos com 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.

Os aplicativos da área de trabalho convertidos ganham uma identidade de aplicativo semelhante à identidade de aplicativo de aplicativos da UWP, o que torna as APIs da UWP acessíveis para habilitar recursos como Blocos Dinâmicos e notificações.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. O aplicativo continua a se comportar como antes e é executado como um aplicativo de confiança total.The app continues to behave as before and runs as a full trust app. Após a conversão do aplicativo, um processo de contêiner do aplicativo pode ser adicionado ao processo de confiança total existente a fim de adicionar uma interface do usuário adaptável.Once the app is converted, an app container process can be added to the existing full trust process to add an adaptive user interface. Quando toda a funcionalidade for movida para o processo de contêiner do aplicativo, o processo de confiança total poderá ser removido, e o novo aplicativo UWP poderá ser disponibilizado para todos os dispositivos com 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.

Melhorias na depuraçãoDebugging improvements

A API de depuração não gerenciada foi aprimorada no .NET Framework 4.6.2 para executar análises adicionais quando um NullReferenceException for gerado, para que seja possível determinar qual variável em uma única linha do código-fonte é null.The unmanaged debugging API has been enhanced in the .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 oferecer suporte a esse cenário, as seguintes APIs foram adicionadas à API de depuração não gerenciada.To support this scenario, the following APIs have been added to the unmanaged debugging API.

Novidades no .NET Framework 4.6.1What's new in .NET Framework 4.6.1

O .NET Framework 4.6.1 inclui novos recursos nas seguintes áreas:The .NET Framework 4.6.1 includes new features in the following areas:

Para saber mais sobre o .NET Framework 4.6.1, consulte os seguintes tópicos:For more information on the .NET Framework 4.6.1, see the following topics:

Criptografia: suporte para certificados X509 contendo ECDSACryptography: Support for X509 certificates containing ECDSA

O .NET Framework 4.6 adicionou suporte a RSACng para certificados X509..NET Framework 4.6 added RSACng support for X509 certificates. O .NET Framework 4.6.1 adiciona suporte para certificados X509 ECDSA (Algoritmo de Assinatura Digital de Curva Elíptica).The .NET Framework 4.6.1 adds support for ECDSA (Elliptic Curve Digital Signature Algorithm) X509 certificates.

O ECDSA oferece melhor desempenho e é um algoritmo de criptografia mais seguro do que o RSA, fornecendo uma excelente opção quando o desempenho e a escalabilidade de TLS (Transport Layer Security) forem uma preocupação.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. A implementação do .NET Framework envolve chamadas para funcionalidades existentes do Windows.The .NET Framework implementation wraps calls into existing Windows functionality.

O exemplo de código a seguir mostra como é fácil gerar uma assinatura para um fluxo de bytes usando o novo suporte para certificados X509 ECDSA incluídos no .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.

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.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

Isso oferece um contraste evidente ao código necessário para gerar uma assinatura no .NET Framework 4.6.This offers a marked contrast to the code needed to generate a signature in .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.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

Os itens a seguir foram adicionados ao ADO.NET:The following have been added to ADO.NET:

Suporte a Always Encrypted para chaves protegidas por hardwareAlways Encrypted support for hardware protected keys

Agora, o ADO.NET oferece suporte ao armazenamento nativo de chaves mestras de coluna do Always Encrypted em HSMs (Módulos de segurança de Hardware).ADO.NET now supports storing Always Encrypted column master keys natively in Hardware Security Modules (HSMs). Com esse suporte, os clientes podem aproveitar as chaves assimétricas armazenadas em HSMs sem ter que escrever provedores de armazenamento de chave mestra de coluna personalizados e registrá-los nos aplicativos.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.

Os clientes precisam instalar o provedor de CSP fornecido pelo fornecedor de HSM ou provedores de armazenamento de chaves CNG em servidores de aplicativos ou computadores cliente para acessar dados do Always Encrypted protegidos com chaves mestras de coluna armazenadas em um 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.

Comportamento de conexão MultiSubnetFailover aprimorado para AlwaysOnImproved MultiSubnetFailover connection behavior for AlwaysOn

Agora, o SqlClient fornece automaticamente uma conexão mais rápida para um AG (Grupo de Disponibilidade) do AlwaysOn.SqlClient now automatically provides faster connections to an AlwaysOn Availability Group (AG). Ele detecta de forma transparente se o seu aplicativo está se conectando a um grupo de disponibilidade (AG) do AlwaysOn em uma sub-rede diferente e descobre rapidamente o servidor ativo atual e fornece uma conexão ao 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 dessa versão, um aplicativo tinha que definir a cadeia de conexão para incluir "MultisubnetFailover=true" a fim de indicar que ele estava se conectando a um Grupo de disponibilidade do 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. Sem definir a palavra-chave de conexão como true, um aplicativo pode enfrentar um tempo limite ao se conectar a um Grupo de disponibilidade AlwaysOn.Without setting the connection keyword to true, an application might experience a timeout while connecting to an AlwaysOn Availability Group. Com esta versão, um aplicativo não precisa mais definir MultiSubnetFailover como true.With this release, an application does not need to set MultiSubnetFailover to true anymore. Para saber mais sobre o suporte ao SqlClient para Grupos de Disponibilidade AlwaysOn, confira Suporte do SqlClient para alta disponibilidade e recuperação de 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 inclui diversos aprimoramentos e alterações.Windows Presentation Foundation includes a number of improvements and changes.

Desempenho de aprimoradoImproved performance

O atraso em disparar eventos de toque foi corrigido no .NET Framework 4.6.1.The delay in firing touch events has been fixed in the .NET Framework 4.6.1. Além disso, a digitação de controle RichTextBox não ocupa mais o thread de renderização durante a entrada rápida.In addition, typing in a RichTextBox control no longer ties up the render thread during fast input.

Aprimoramentos na verificação ortográficaSpell checking improvements

O verificador ortográfico do WPF foi atualizado no Windows 8.1 e em versões posteriores para aproveitar o suporte ao sistema operacional para verificação ortográfica de outros idiomas.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. Não há nenhuma alteração na funcionalidade em versões do Windows anteriores ao Windows 8.1.There is no change in functionality on Windows versions prior to Windows 8.1.

Como nas versões anteriores do .NET Framework, o idioma para um controle TextBox ou um bloco RichTextBox é detectado procurando por informações na seguinte ordem: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, se estiver presente.xml:lang, if it is present.

  • Idioma de entrada atual.Current input language.

  • Cultura do thread atual.Current thread culture.

Para saber mais sobre o suporte de idiomas no WPF, confira a postagem de blog do WPF sobre recursos do .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.

Suporte adicional para dicionários personalizados por usuárioAdditional support for per-user custom dictionaries

No .NET Framework 4.6.1, o WPF reconhece os dicionários personalizados registrados globalmente.In .NET Framework 4.6.1, WPF recognizes custom dictionaries that are registered globally. Esse recurso está disponível além da capacidade de registrá-los por controle.This capability is available in addition to the ability to register them per-control.

Nas versões anteriores do WPF, os dicionários personalizados não reconheciam as listas de Palavras Excluídas e de Autocorreção.In previous versions of WPF, custom dictionaries did not recognize Excluded Words and AutoCorrect lists. Elas têm suporte no Windows 8.1 e no Windows 10 com o uso de arquivos que podem ser colocados no diretório %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. As regras a seguir se aplicam a estes arquivos:The following rules apply to these files:

  • Os arquivos devem ter extensões .dic (para palavras adicionadas), .exc (para palavras excluídas) ou .acl (para Autocorreção).The files should have extensions of .dic (for added words), .exc (for excluded words), or .acl (for AutoCorrect).

  • Os arquivos devem ser em texto sem formatação UTF-16 LE que começa com a marca de ordem de Byte (BOM).The files should be UTF-16 LE plaintext that starts with the Byte Order Mark (BOM).

  • Cada linha deve conter uma palavra (nas listas de palavras adicionadas e excluídas) ou um par de autocorreção com as palavras separadas por uma barra vertical ("|") (na lista de palavras de Autocorreção).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).

  • Esses arquivos são considerados somente leitura e não são modificados pelo sistema.These files are considered read-only and are not modified by the system.

Observação

Esses novos formatos de arquivo não recebem suporte diretamente das APIs de verificação ortográfica do WPF, e os dicionários personalizados fornecidos ao WPF nos aplicativos devem continuar usando arquivos .lex.These new file-formats are not directly supported by the WPF spell checking APIs, and the custom dictionaries supplied to WPF in applications should continue to use .lex files.

AmostrasSamples

Há um número de amostras WPF no repositório do GitHub de amostras Microsoft/WPF.There are a number of WPF samples on the Microsoft/WPF-Samples GitHub repository. Ajude-nos a melhorar nossos exemplos enviando-nos uma solicitação pull ou abrindo um problema no GitHub.Help us improve our samples by sending us a pull-request or opening a GitHub issue.

Extensões do DirectXDirectX extensions

O WPF inclui um pacote do NuGet que fornece novas implementações de D3DImage que facilitam a interoperação com o conteúdo do DX10 e 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. O código para esse pacote foi aberto e está disponível no GitHub.The code for this package has been open sourced and is available on GitHub.

Windows Workflow Foundation: TransaçõesWindows Workflow Foundation: Transactions

Agora, o método Transaction.EnlistPromotableSinglePhase pode usar um gerenciador de transação distribuída diferente do MSDTC para promover a transação.The Transaction.EnlistPromotableSinglePhase method can now use a distributed transaction manager other than MSDTC to promote the transaction. Você pode fazer isso especificando um identificador de promotor de transação de GUID para a nova sobrecarga Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid).You do this by specifying a GUID transaction promoter identifier to the new Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overload . Se essa operação for bem-sucedida, haverá limitações nos recursos da transação.If this operation is successful, there are limitations placed on the capabilities of the transaction. Após a inscrição do um promotor de transação não MSDTC, os métodos a seguir geram uma TransactionPromotionException, pois esses métodos exigem promoção para MSDTC:Once a non-MSDTC transaction promoter is enlisted, the following methods throw a TransactionPromotionException because these methods require promotion to MSDTC:

Após a inscrição do um promotor de transação não MSDTC, ele deverá ser usado para futuras inscrições duráveis usando os protocolos que definidos por ele.Once a non-MSDTC transaction promoter is enlisted, it must be used for future durable enlistments by using protocols that it defines. O Guid do promotor de transação pode ser obtido usando a propriedade PromoterType.The Guid of the transaction promoter can be obtained by using the PromoterType property. Quando transação promove, o promotor da transação fornece uma matriz Byte que representa o token promovido.When the transaction promotes, the transaction promoter provides a Byte array that represents the promoted token. Um aplicativo pode obter o token promovido para uma transação promovida não MSDTC com o método GetPromotedToken.An application can obtain the promoted token for a non-MSDTC promoted transaction with the GetPromotedToken method.

Os usuários da nova sobrecarga Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) devem seguir uma sequência de chamadas específica para que a operação de promoção seja concluída com êxito.Users of the new Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overload must follow a specific call sequence in order for the promotion operation to complete successfully. Essas regras estão na documentação do método.These rules are documented in the method's documentation.

Criação de perfilProfiling

A API de criação de perfil não gerenciado foi aprimorada da seguinte forma:The unmanaged profiling API has been enhanced as follows:

  • Melhor suporte para acessar PDBs na interface ICorProfilerInfo7.Better support for accessing PDBs in the ICorProfilerInfo7 interface.

    No ASP.NET Core, está se tornando cada vez mais comum a compilação de assemblies na memória pelo Roslyn.In ASP.NET Core, it is becoming much more common for assemblies to be compiled in-memory by Roslyn. Para os desenvolvedores que estão criando ferramentas de criação de perfil, isso significa que os PDBs que eram serializados historicamente no disco talvez não estejam mais presentes.For developers making profiling tools, this means that PDBs that historically were serialized on disk may no longer be present. Normalmente, as ferramentas de criação de perfil usam PDBs para mapear o código de volta para as linhas de origem para tarefas como cobertura de código ou análise de desempenho de linha por linha.Profiler tools often use PDBs to map code back to source lines for tasks such as code coverage or line-by-line performance analysis. A interface ICorProfilerInfo7 agora inclui dois métodos novos, ICorProfilerInfo7::GetInMemorySymbolsLength e ICorProfilerInfo7::ReadInMemorySymbols, a fim de fornecer essas ferramentas de criação de perfil com acesso aos dados de PDB na memória. Com as novas APIs, um criador de perfil pode obter o conteúdo de um PDB na memória como uma matriz de bytes e, em seguida, processá-lo ou serializá-lo no 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.

  • Instrumentação com mais qualidade com a interface ICorProfiler.Better instrumentation with the ICorProfiler interface.

    Agora, os criadores de perfil que usam a funcionalidade ReJit da API ICorProfiler para instrumentação dinâmica podem modificar alguns metadados.Profilers that are using the ICorProfiler APIs ReJit functionality for dynamic instrumentation can now modify some metadata. Anteriormente, essas ferramentas podiam instrumentar IL a qualquer momento, mas os metadados só podiam ser modificados no tempo de carregamento do módulo.Previously such tools could instrument IL at any time, but metadata could only be modified at module load time. Como IL faz referência aos metadados, isso limitou os tipos de instrumentação possíveis.Because IL refers to metadata, this limited the kinds of instrumentation that could be done. Retirados alguns desses limites adicionando o método ICorProfilerInfo7::ApplyMetaData a fim de oferecer suporte a um subconjunto de edições de metadados após o carregamento do módulo, em particular, adicionando novos registros AssemblyRef, TypeRef, TypeSpec, MemberRef, MemberSpec e 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. Essa alteração possibilita um intervalo mais amplo de instrumentação dinâmica possível.This change makes a much broader range of on-the-fly instrumentation possible.

PDBs do NGEN (Gerador de Imagens Nativas)Native Image Generator (NGEN) PDBs

O rastreamento de eventos entre máquinas permite aos clientes criar o perfil de um programa na Máquina A e examinar os dados de criação de perfil com mapeamento de linha de origem na Máquina B. Com as versões anteriores do .NET Framework, o usuário copiaria todos os módulos e imagens nativas da máquina com perfil para a máquina de análise que contém o PDB IL para criar o mapeamento da fonte para a nativa.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. Embora esse processo funcione bem quando os arquivos são relativamente pequenos, por exemplo, para aplicativos de telefone, os arquivos podem ser muito grandes em sistemas do desktop e a cópia exige um tempo considerável.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.

Com PDBs do Ngen, o NGen pode criar um PDB que contém o mapeamento do IL para a nativa sem uma dependência do PDB do IL.With Ngen PDBs, NGen can create a PDB that contains the IL-to-native mapping without a dependency on the IL PDB. Em nosso cenário de rastreamento de eventos entre máquinas, basta copiar o PDB da imagem nativa gerado pela Máquina A para a Máquina B e usar as APIs de acesso à interface de depuração para ler o mapeamento da fonte ao IL do PDB de IL e o mapeamento de IL para nativa do PDB da imagem nativa.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. A combinação dos dois mapeamentos fornece um mapeamento da fonte para nativa.Combining both mappings provides a source-to-native mapping. Como o PDB da imagem nativa é muito menor do que todos os módulos e imagens nativas, o processo de cópia da Máquina A para a Máquina B é muito mais 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.

Novidades do .NET 2015What's new in .NET 2015

O .NET 2015 apresenta o .NET Framework 4.6 e o .NET Core..NET 2015 introduces the .NET Framework 4.6 and .NET Core. Alguns recursos novos se aplicam aos dois, enquanto outros recursos são específicos ao .NET Framework 4.6 ou .NET Core.Some new features apply to both, and other features are specific to .NET Framework 4.6 or .NET Core.

  • ASP.NET CoreASP.NET Core

    O .NET 2015 inclui o ASP.NET Core, que é uma implementação enxuta do .NET para a compilação de modernos aplicativos baseados em nuvem..NET 2015 includes ASP.NET Core, which is a lean .NET implementation for building modern cloud-based apps. O ASP.NET Core é modular para que você possa incluir somente os recursos necessários em seu aplicativo.ASP.NET Core is modular so you can include only those features that are needed in your application. Pode ser hospedada no IIS ou auto-hospedada em um processo personalizado, e você pode executar aplicativos com diferentes versões do .NET Framework no mesmo 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. Ela inclui um novo sistema de configuração do ambiente projetado para implantação na nuvem.It includes a new environment configuration system that is designed for cloud deployment.

    MVC, API da Web e Páginas da Web são unificados em uma única estrutura chamada MVC 6.MVC, Web API, and Web Pages are unified into a single framework called MVC 6. Você cria aplicativos ASP.NET Core por meio de ferramentas no Visual Studio 2015 ou posterior.You build ASP.NET Core apps through tools in Visual Studio 2015 or later. Os aplicativos existentes funcionarão no novo .NET Framework; no entanto, para compilar um aplicativo que usa o MVC 6 ou SignalR 3, use o sistema de projetos no Visual Studio 2015 ou posterior.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 obter informações, veja ASP.NET Core.For information, see ASP.NET Core.

  • Atualizações do ASP.NETASP.NET Updates

    • API baseada em tarefas para a liberação de resposta assíncronaTask-based API for Asynchronous Response Flushing

      Agora, o ASP.NET fornece uma API simples baseada em tarefas para liberação de resposta assíncrona, HttpResponse.FlushAsync, que permite a liberação das respostas de modo assíncrono usando o suporte a async/await de sua linguagem.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.

    • O model binding dá suporte a métodos de retorno de tarefaModel binding supports task-returning methods

      No .NET Framework 4.5, o ASP.NET adicionou o recurso de Model Binding, que permitiu uma abordagem extensível e focada no código para operações de dados com base em CRUD em páginas de Web Forms e controles de usuário.In the .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. Agora, o sistema de Model Binding oferece suporte a métodos de model binding que retornam Task.The Model Binding system now supports Task-returning model binding methods. Esse recurso permite aos desenvolvedores de Web Forms obter os benefícios de escalabilidade do modo assíncrono com a facilidade do sistema de associação de dados ao usar versões mais recentes dos ORMs, incluindo o 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.

      O model binding assíncrono é controlado pela configuração aspnet:EnableAsyncModelBinding.Async model binding is controlled by the aspnet:EnableAsyncModelBinding configuration setting.

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

      Em aplicativos direcionados ao .NET Framework 4.6, o padrão é true.On apps the target the .NET Framework 4.6, it defaults to true. Em aplicativos em execução no .NET Framework 4.6 direcionados a uma versão anterior do .NET Framework, o padrão é false.On apps running on the .NET Framework 4.6 that target an earlier version of the .NET Framework, it is false by default. Isso pode ser habilitado ao definir a configuração como true.It can be enabled by setting the configuration setting to true.

    • Suporte a HTTP/2 (Windows 10)HTTP/2 Support (Windows 10)

      HTTP/2 é uma nova versão do protocolo HTTP que fornece uma utilização de conexão muito melhor (menos viagens entre cliente e servidor), resultando em um carregamento de página da Web com menor latência para os usuários.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. As páginas da Web (em vez de serviços) são as mais beneficiados com o HTTP/2, pois o protocolo otimiza para solicitação de vários artefatos como parte de uma experiência única.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. O suporte a HTTP/2 foi adicionado ao ASP.NET no .NET Framework 4.6.HTTP/2 support has been added to ASP.NET in .NET Framework 4.6. Como a funcionalidade de rede existe em várias camadas, havia a necessidade de novos recursos no Windows, no IIS e no ASP.NET para habilitar o 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. Você deve estar executando o Windows 10 para usar o HTTP/2 com o ASP.NET.You must be running on Windows 10 to use HTTP/2 with ASP.NET.

      O HTTP/2 também é compatível e ativado por padrão em aplicativos UWP (Plataforma Universal do Windows) do Windows 10 que usam a 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 fornecer uma maneira de usar o recurso PUSH_PROMISE em aplicativos ASP.NET, um novo método com duas sobrecargas, PushPromise(String) e PushPromise(String, String, NameValueCollection), foi adicionado à classe HttpResponse.In order to provide a way to use the PUSH_PROMISE feature in ASP.NET applications, a new method with two overloads, PushPromise(String) and PushPromise(String, String, NameValueCollection), has been added to the HttpResponse class.

      Observação

      Embora o ASP.NET Core dê suporte ao HTTP/2, o suporte para o recurso PUSH PROMISE ainda não foi adicionado.While ASP.NET Core supports HTTP/2, support for the PUSH PROMISE feature has not yet been added.

      O navegador e o servidor Web (IIS no Windows) fazem todo o trabalho.The browser and the web server (IIS on Windows) do all the work. Você não precisa fazer qualquer trabalho pesado para seus usuários.You don't have to do any heavy-lifting for your users.

      A maioria dos principais navegadores oferece suporte a HTTP/2, portanto, é provável que seus usuários se beneficiem do suporte a HTTP/2 se o servidor oferecer suporte a ele.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.

    • Suporte para o protocolo de associação de tokenSupport for the Token Binding Protocol

      A Microsoft e o Google colaboraram em uma nova abordagem para autenticação chamada de Protocolo de associação de token.Microsoft and Google have been collaborating on a new approach to authentication, called the Token Binding Protocol. A premissa é que tokens de autenticação (no cache do navegador) podem ser roubados e usados por criminosos para acessar recursos seguros (por exemplo, sua conta bancária) sem a necessidade de sua senha ou de qualquer outro conhecimento privilegiado.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. O novo protocolo tem como objetivo atenuar esse problema.The new protocol aims to mitigate this problem.

      O Protocolo de associação de token será implementado no Windows 10 como um recurso do navegador.The Token Binding Protocol will be implemented in Windows 10 as a browser feature. Aplicativos ASP.NET participarão do protocolo, para que os tokens de autenticação sejam validados como legítimos.ASP.NET apps will participate in the protocol, so that authentication tokens are validated to be legitimate. As implementações do cliente e do servidor estabelecem a proteção de ponta a ponta especificada pelo protocolo.The client and the server implementations establish the end-to-end protection specified by the protocol.

    • Algoritmos de hash da cadeia de caracteres aleatóriaRandomized string hash algorithms

      O .NET Framework 4.5 introduziu um algoritmo de hash de cadeia de caracteres aleatória..NET Framework 4.5 introduced a randomized string hash algorithm. No entanto, ele não tinha suporte do ASP.NET porque alguns recursos do ASP.NET dependem de um código hash estável.However, it was not supported by ASP.NET because of some ASP.NET features depended on a stable hash code. No .NET Framework 4.6, já há suporte para os algoritmos de hash da cadeia de caracteres aleatória.In .NET Framework 4.6, randomized string hash algorithms are now supported. Para habilitar esse recurso, use a configuração aspnet:UseRandomizedStringHashAlgorithm.To enable this feature, use the aspnet:UseRandomizedStringHashAlgorithm config setting.

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

    O ADO.NET agora oferece suporte ao recurso Always Encrypted disponível no 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). Com o Always Encrypted, o SQL Server pode executar operações em dados criptografados e, acima de tudo, a chave de criptografia reside com o aplicativo no ambiente de confiança do cliente, e não no 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. O Always Encrypted protege os dados do cliente para que DBAs não tenham acesso aos dados de texto sem formatação.Always Encrypted secures customer data so DBAs do not have access to plain text data. A criptografia e a descriptografia de dados ocorre de forma transparente no nível do driver, minimizando as alterações que precisam ser feitas nos aplicativos atuais.Encryption and decryption of data happens transparently at the driver level, minimizing changes that have to be made to existing applications. Para obter detalhes, confira Always Encrypted (Mecanismo de banco de dados) e Always Encrypted (desenvolvimento do cliente).For details, see Always Encrypted (Database Engine) and Always Encrypted (client development).

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

    O .NET Framework 4.6 apresenta uma nova versão do compilador JIT de 64 bits (cujo codinome original é RyuJIT)..NET Framework 4.6 features a new version of the 64-bit JIT compiler (originally code-named RyuJIT). O novo compilador de 64 bits fornece melhorias consideráveis de desempenho em relação ao compilador JIT de 64 bits mais antigo.The new 64-bit compiler provides significant performance improvements over the older 64-bit JIT compiler. O novo compilador de 64 bits está habilitado para processos de 64 bits em execução sobre o .NET Framework 4.6.The new 64-bit compiler is enabled for 64-bit processes running on top of .NET Framework 4.6. Seu aplicativo será executado em um processo de 64 bits se for compilado como 64 bits ou AnyCPU e será executado em um sistema operacional 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. Apesar de nossos esforços para fazer a transição para o novo compilador a mais transparente possível, ainda é possível perceber mudanças no comportamento.While care has been taken to make the transition to the new compiler as transparent as possible, changes in behavior are possible. Gostaríamos de saber sobre quaisquer problemas encontrados ao usar o novo compilador JIT.We would like to hear directly about any issues encountered when using the new JIT compiler. Entre em contato conosco por meio do Microsoft Connect se você encontrar um problema que possa estar relacionado ao novo 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.

    O novo compilador JIT de 64 bits também inclui recursos de aceleração de hardware SIMD quando combinado com tipos habilitados para SIMD no namespace System.Numerics, o que pode suspender aprimoramentos no desempenho.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.

  • Aperfeiçoamentos no carregador de assemblyAssembly loader improvements

    Agora, o carregador de assembly usa a memória de forma mais eficiente ao descarregar assemblies de nível de integridade após uma imagem NGEN correspondente ser carregada.The assembly loader now uses memory more efficiently by unloading IL assemblies after a corresponding NGEN image is loaded. Essa mudança reduz a memória virtual, o que é particularmente benéfico para aplicativos de 32 bits grandes (como o Visual Studio) e também poupa memória 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.

  • Mudanças na biblioteca de classes baseBase class library changes

    Várias APIs novas foram adicionadas ao .NET Framework 4.6 para habilitar cenários-chave.Many new APIs have been added around to .NET Framework 4.6 to enable key scenarios. As seguintes alterações e adições foram incluídas:These include the following changes and additions:

    • Implementações IReadOnlyCollection<T>IReadOnlyCollection<T> implementations

      As coleções adicionais implementam IReadOnlyCollection<T> como Queue<T> e Stack<T>.Additional collections implement IReadOnlyCollection<T> such as Queue<T> and Stack<T>.

    • CultureInfo.CurrentCulture e CultureInfo.CurrentUICultureCultureInfo.CurrentCulture and CultureInfo.CurrentUICulture

      Agora, as propriedades CultureInfo.CurrentCulture e CultureInfo.CurrentUICulture são leitura / gravação em vez de somente leitura.The CultureInfo.CurrentCulture and CultureInfo.CurrentUICulture properties are now read-write rather than read-only. Se você atribuir um novo objeto CultureInfo a essas propriedades, a cultura do thread atual definida pela propriedade Thread.CurrentThread.CurrentCulture, e a cultura do thread de interface do usuário atual definida pela propriedade Thread.CurrentThread.CurrentUICulture também mudarão.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.

    • Aprimoramentos na coleta de lixo (GC)Enhancements to garbage collection (GC)

      Agora, a classe GC inclui os métodos TryStartNoGCRegion e EndNoGCRegion que permitem o cancelamento da permissão da coleta de lixo durante a execução de um caminho crítico.The GC class now includes TryStartNoGCRegion and EndNoGCRegion methods that allow you to disallow garbage collection during the execution of a critical path.

      Uma nova sobrecarga do método GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) lhe permite controlar se o heap de objetos pequeno e o heap de objetos grande são limpos e compactadas ou somente limpos.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

      O namespace System.Numerics agora inclui uma série de tipos habilitados para SIMD, como Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3 e Vector4.The System.Numerics namespace now includes a number of SIMD-enabled types, such as Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3, and Vector4.

      Como o novo compilador JIT de 64 bits também inclui recursos de aceleração de hardware SIMD, há melhorias de desempenho consideráveis, especialmente ao usar os tipos habilitados para SIMD com o novo 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.

    • Atualizações de criptografiaCryptography updates

      A API System.Security.Cryptography está sendo atualizada para oferecer suporte às APIs de criptografia CNG do Windows.The System.Security.Cryptography API is being updated to support the Windows CNG cryptography APIs. As versões anteriores do .NET Framework dependiam inteiramente de uma versão anterior das APIs de criptografia do Windows como a base para a implementação 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. Recebemos solicitações para o suporte a API de CNG, uma vez que ela dá suporte a algoritmos de criptografia modernos, que são importantes para determinadas categorias de aplicativos.We have had requests to support the CNG API, since it supports modern cryptography algorithms, which are important for certain categories of apps.

      O .NET Framework 4.6 inclui os seguintes aprimoramentos novos para compatibilidade com as APIs de criptografia CNG do Windows:.NET Framework 4.6 includes the following new enhancements to support the Windows CNG cryptography APIs:

      • Um conjunto de métodos de extensão para Certificados X509, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2) e System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2), que retornam uma implementação baseada em CNG, em vez de uma implementação baseada em CAPI, quando for possível.A set of extension methods for X509 Certificates, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2) and System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2), that return a CNG-based implementation rather than a CAPI-based implementation when possible. (Alguns cartões inteligentes etc., ainda exigirão CAPI, e as APIs tratam do fallback).(Some smartcards, etc., still require CAPI, and the APIs handle the fallback).

      • A classe System.Security.Cryptography.RSACng, que fornece uma implementação CNG do algoritmo RSA.The System.Security.Cryptography.RSACng class, which provides a CNG implementation of the RSA algorithm.

      • Aprimoramentos à API do RSA para que as ações comuns não exijam mais a conversão.Enhancements to the RSA API so that common actions no longer require casting. Por exemplo, a criptografia de dados usando um objeto X509Certificate2 exige um código semelhante ao seguinte em versões anteriores do .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)
        

        O código que usa as novas APIs de criptografia no .NET Framework 4.6 pode ser reescrito como se segue para evitar a conversão.Code that uses the new cryptography APIs in .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)
        
    • Suporte para conversão de datas e horas para ou do horário UnixSupport for converting dates and times to or from Unix time

      Os novos métodos a seguir foram adicionados à estrutura DateTimeOffset para oferecer suporte à conversão de valores de data e hora para ou de horário Unix:The following new methods have been added to the DateTimeOffset structure to support converting date and time values to or from Unix time:

    • Opções de compatibilidadeCompatibility switches

      A nova classe AppContext adiciona um novo recurso de compatibilidade que permite aos escritores de biblioteca fornecer aos seus usuários um mecanismo de recusa uniforme para a nova funcionalidade.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. Ela estabelece um contrato flexível entre componentes a fim de comunicar uma solicitação de recusa.It establishes a loosely-coupled contract between components in order to communicate an opt-out request. Normalmente, essa funcionalidade é importante quando uma alteração é feita na funcionalidade existente.This capability is typically important when a change is made to existing functionality. Por outro lado, já existe uma aceitação implícita da nova funcionalidade.Conversely, there is already an implicit opt-in for new functionality.

      Com o AppContext, as bibliotecas definem e expõem as opções de compatibilidade, enquanto o código que depende delas podem definir essas opções a fim de afetar o comportamento da biblioteca.With AppContext, libraries define and expose compatibility switches, while code that depends on them can set those switches to affect the library behavior. Por padrão, as bibliotecas fornecem a nova funcionalidade, e apenas a alteram (ou seja, eles fornecem a funcionalidade anterior) se a opção for definida.By default, libraries provide the new functionality, and they only alter it (that is, they provide the previous functionality) if the switch is set.

      Um aplicativo (ou uma biblioteca) pode declarar o valor de uma opção (que é sempre um valor Boolean) definida pela biblioteca dependente.An application (or a library) can declare the value of a switch (which is always a Boolean value) that a dependent library defines. A opção é sempre implicitamente false.The switch is always implicitly false. A definição da opção como true a habilita.Setting the switch to true enables it. A definição explícita da opção false fornece o novo comportamento.Explicitly setting the switch to false provides the new behavior.

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

      A biblioteca deve verificar se um consumidor declarou o valor da opção e, em seguida, agir adequadamente.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
      }
      
      If Not AppContext.TryGetSwitch("Switch.AmazingLib.ThrowOnException", shouldThrow) Then
          ' 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.
      End If
      
      ' The library can use the value of shouldThrow to throw exceptions or not.
      If shouldThrow Then
          ' old code
      Else
          ' new code
      End If
      

      É útil usar um formato consistente para opções, já que elas são um contrato formal exposto por uma biblioteca.It's beneficial to use a consistent format for switches, since they are a formal contract exposed by a library. Veja a seguir dois formatos óbvios.The following are two obvious formats.

      • Opção.namespace.nomedaopçãoSwitch.namespace.switchname

      • Opção.biblioteca.nomedaopçãoSwitch.library.switchname

    • Mudanças no TAP (padrão assíncrono baseado em tarefas)Changes to the task-based asynchronous pattern (TAP)

      Para aplicativos direcionados aos objetos Task e Task<TResult> do NET Framework 4.6 herdam a cultura e a cultura da interface do usuário do thread de chamada.For apps that target the .NET Framework 4.6, Task and Task<TResult> objects inherit the culture and UI culture of the calling thread. O comportamento de aplicativos direcionados a versões anteriores do .NET Framework, ou que não são direcionados a uma versão específica do .NET Framework, não é afetado.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 saber mais, confira a seção "Cultura e operações assíncronas baseadas em tarefas" do tópico da classe CultureInfo.For more information, see the "Culture and task-based asynchronous operations" section of the CultureInfo class topic.

      A classe System.Threading.AsyncLocal<T> permite a representação dos dados do ambiente que sejam locais a um fluxo determinado de controle assíncrono, como um 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. Ele pode ser usado para persistir dados entre threads.It can be used to persist data across threads. Você também pode definir um método de retorno de chamada que será notificado sempre que os dados do ambiente mudarem, pois a propriedade AsyncLocal<T>.Value foi alterada explicitamente, ou porque o thread encontrou uma transição 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.

      Os três métodos de conveniência, Task.CompletedTask, Task.FromCanceled e Task.FromException, foram adicionados ao TAP (padrão assíncrono baseado em tarefa) para retornar as tarefas concluídas em um estado específico.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.

      Agora, a classe NamedPipeClientStream dá suporte à comunicação assíncrona com seu novo ConnectAsync.The NamedPipeClientStream class now supports asynchronous communication with its new ConnectAsync. método.method.

    • O EventSource agora oferece suporte à gravação no Log de eventosEventSource now supports writing to the Event log

      Agora, você pode usar a classe EventSource para registrar mensagens administrativas ou operacionais no log de eventos, além de quaisquer sessões ETW existentes criadas na máquina.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. No passado, era necessário usar o pacote Microsoft.Diagnostics.Tracing.EventSource NuGet para essa funcionalidade.In the past, you had to use the Microsoft.Diagnostics.Tracing.EventSource NuGet package for this functionality. Agora, essa funcionalidade está integrada ao .NET Framework 4.6.This functionality is now built-into .NET Framework 4.6.

      O pacote do NuGet e o .NET Framework 4.6 foram atualizados com os seguintes recursos:Both the NuGet package and .NET Framework 4.6 have been updated with the following features:

      • Eventos dinâmicosDynamic events

        Permite eventos definidos como "dinâmicos" sem a criação de métodos de evento.Allows events defined "on the fly" without creating event methods.

      • Cargas avançadasRich payloads

        Permite que classes atribuídas especialmente e matrizes, bem como tipos primitivos, sejam passados como uma cargaAllows specially attributed classes and arrays as well as primitive types to be passed as a payload

      • Acompanhamento de atividadeActivity tracking

        Faz com que os eventos Iniciar e Parar marquem eventos entre eles com uma ID que representa todas as atividades ativas no momento.Causes Start and Stop events to tag events between them with an ID that represents all currently active activities.

      Para oferecer suporte a esses recursos, o método sobrecarregado Write foi adicionado à classe EventSource.To support these features, the overloaded Write method has been added to the EventSource class.

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

    • Aprimoramentos de HDPIHDPI improvements

      Agora, o suporte ao HDPI no WPF é melhor no .NET Framework 4.6.HDPI support in WPF is now better in the .NET Framework 4.6. Foram feitas alterações no layout para reduzir as ocorrências de distorção em controles com bordas.Changes have been made to layout rounding to reduce instances of clipping in controls with borders. Por padrão, esse recurso será habilitado somente se TargetFrameworkAttribute estiver definido para o .NET 4.6.By default, this feature is enabled only if your TargetFrameworkAttribute is set to .NET 4.6. Os aplicativos direcionados a versões anteriores do Framework, mas que são executados no .NET Framework 4.6 podem aceitar o novo comportamento adicionando o seguinte à seção <runtime> do arquivo app.config:Applications that target earlier versions of the framework but are running on the .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"
      />
      

      Janelas do WPF invadindo vários monitores com configurações de DPI diferentes (configuração de DPI múltiplo) agora são renderizadas completamente sem regiões escurecidas.WPF windows straddling multiple monitors with different DPI settings (Multi-DPI setup) are now completely rendered without blacked-out regions. Você pode desativar esse comportamento adicionando a seguinte linha à seção <appSettings> do arquivo 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"/>
      

      O suporte ao carregamento automático do cursor à direita com base na configuração de DPI foi adicionado a System.Windows.Input.Cursor.Support for automatically loading the right cursor based on DPI setting has been added to System.Windows.Input.Cursor.

    • O toque está melhorTouch is better

      Os comentários de clientes no Connect informando que o toque produz um comportamento imprevisível foram resolvidos no .NET Framework 4.6.Customer reports on Connect that touch produces unpredictable behavior have been addressed in the .NET Framework 4.6. O limite de toque duplo para aplicativos da Windows Store e aplicativos do WPF agora é o mesmo no Windows 8.1 e em versões posteriores.The double tap threshold for Windows Store applications and WPF applications is now the same in Windows 8.1 and above.

    • Suporte para janela filho transparenteTransparent child window support

      O WPF no .NET Framework 4.6 oferece suporte a janelas filho transparente no Windows 8.1 e versões posteriores.WPF in the .NET Framework 4.6 supports transparent child windows in Windows 8.1 and above. Isso permite a criação de janelas filho não retangulares e janelas filho transparente em suas janelas de nível superior.This allows you to create non-rectangular and transparent child windows in your top-level windows. Você pode habilitar esse recurso configurando a propriedade HwndSourceParameters.UsesPerPixelTransparency como true.You can enable this feature by setting the HwndSourceParameters.UsesPerPixelTransparency property to true.

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

    • Suporte a SSLSSL support

      Agora, o WCF oferece suporte ao TLS 1.1 e TLS 1.2 versão SSL, além do SSL 3.0 e TLS 1.0, ao usar o NetTcp com autenticação de cliente e segurança 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. Agora é possível selecionar qual protocolo usar, ou desabilitar protocolos antigos e menos seguros.It is now possible to select which protocol to use, or to disable old lesser secure protocols. Isso pode ser feito definindo a propriedade SslProtocols ou adicionando o seguinte ao arquivo de configuração.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 mensagens usando conexões HTTP diferentesSending messages using different HTTP connections

      Agora, o WCF permite que os usuários garantam o envio de determinadas mensagens usando conexões HTTP subjacentes diferentes.WCF now allows users to ensure certain messages are sent using different underlying HTTP connections. Há duas formas de fazer isso:There are two ways to do this:

      • Usar um prefixo de nome de grupo de conexãoUsing a connection group name prefix

        Os usuários podem especificar uma cadeia de caracteres que o WCF usará como obtenção de prefixo para o nome do grupo de conexão.Users can specify a string that WCF will use as a prefix for the connection group name. Duas mensagens com prefixos diferentes são enviadas usando conexões HTTP subjacentes diferentes.Two messages with different prefixes are sent using different underlying HTTP connections. Defina o prefixo adicionando um par de chave/valor à propriedade Message.Properties da mensagem.You set the prefix by adding a key/value pair to the message's Message.Properties property. A chave é "HttpTransportConnectionGroupNamePrefix"; o valor é o prefixo desejado.The key is "HttpTransportConnectionGroupNamePrefix"; the value is the desired prefix.

      • Usar fábricas de canal diferenteUsing different channel factories

        Os usuários também podem habilitar um recurso que garante que as mensagens enviadas usando canais criados por fábricas de canal diferentes usarão conexões HTTP subjacentes diferentes.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 esse recurso, os usuários devem definir o seguinte appSetting como 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)

    Agora você pode especificar o número de segundos que um serviço de fluxo de trabalho manterá uma solicitação de operação fora de ordem quando houver um indicador de "não protocolo" pendentes antes do tempo limite da solicitação.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. Um indicador de "não protocolo" é um indicador que não está relacionado a atividades de Recebimento pendentes.A "non-protocol" bookmark is a bookmark that is not related to outstanding Receive activities. Algumas atividades criam indicadores de não protocolo dentro de sua implementação, portanto, talvez a existência de um indicador não protocolo não seja óbvia.Some activities create non-protocol bookmarks within their implementation, so it may not be obvious that a non-protocol bookmark exists. Entre elas estão Estado e Seleção.These include State and Pick. Então, se você tiver um serviço de fluxo de trabalho implementado com uma máquina de estado, ou que contenha uma atividade de Seleção, provavelmente você terá indicadores de não 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 o intervalo adicionando uma linha semelhante à seguinte à seção appSettings do arquivo 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"/>
    

    O valor padrão é 60 segundos.The default value is 60 seconds. Se value estiver definido como 0, as solicitações de fora de ordem serão imediatamente rejeitadas com uma falha e o seguinte texto: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.
    

    Essa é a mesma mensagem recebida se uma mensagem de operação fora de ordem for recebida e não houver nenhum indicador de não 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.

    Se o valor do elemento FilterResumeTimeoutInSeconds for diferente de zero, houver indicadores de não protocolo e o intervalo de tempo limite expirar, a operação falhará com uma mensagem de tempo limite.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.

  • TransaçõesTransactions

    Agora você pode incluir o identificador de transação distribuída para a transação que causou uma exceção 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. Faça isso adicionando a seguinte chave à seção appSettings do arquivo 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"/>
    

    O valor padrão é false.The default value is false.

  • RedeNetworking

    • Reutilização de soqueteSocket reuse

      O Windows 10 inclui um novo algoritmo de rede de alta escalabilidade que utiliza melhor os recursos da máquina reutilizando portas locais para conexões TCP de saída.Windows 10 includes a new high-scalability networking algorithm that makes better use of machine resources by reusing local ports for outbound TCP connections. O .NET Framework 4.6 oferece suporte ao novo algoritmo, permitindo que aplicativos .NET aproveitem o novo comportamento..NET Framework 4.6 supports the new algorithm, enabling .NET apps to take advantage of the new behavior. Em versões anteriores do Windows, havia um limite de conexão simultânea artificial (normalmente 16.384, o tamanho padrão do intervalo de porta dinâmica), que pode limitar a escalabilidade de um serviço causando o esgotamento de porta sob 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.

      No .NET Framework 4.6, duas novas APIs foram adicionadas para permitir a reutilização de porta, o que remove efetivamente o limite de 64 mil conexões simultâneas:In the .NET Framework 4.6, two new APIs have been added to enable port reuse, which effectively removes the 64K limit on concurrent connections:

      Por padrão, a propriedade ServicePointManager.ReusePort é false, a menos que o valor HWRPortReuseOnSocketBind da chave do Registro HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 seja definido como 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 a reutilização de porta local em conexões HTTP, defina a propriedade ServicePointManager.ReusePort como true.To enable local port reuse on HTTP connections, set the ServicePointManager.ReusePort property to true. Isso faz com que todas as conexões de soquete TCP externa do HttpClient e HttpWebRequest usem uma nova opção de soquete do Windows 10 SO_REUSE_UNICASTPORT, que permite a reutilização de porta 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.

      Os desenvolvedores que criam um aplicativo somente para soquetes podem especificar a opção System.Net.Sockets.SocketOptionName ao chamar um método, como Socket.SetSocketOption, para que os soquetes de saídas reutilizem portas locais durante a associação.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.

    • Suporte para nomes de domínio internacionais e PunyCodeSupport for international domain names and PunyCode

      Uma nova propriedade, IdnHost, foi adicionada à classe Uri para oferecer melhor suporte a nomes de domínio internacionais e PunyCode.A new property, IdnHost, has been added to the Uri class to better support international domain names and PunyCode.

  • Redimensionamento em controles do Windows Forms.Resizing in Windows Forms controls.

    Esse recurso foi expandido no NET Framework 4.6 para incluir os tipos DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn e ToolStripSplitButton, e o retângulo especificado pela propriedade Bounds usada ao desenhar um UITypeEditor.This feature has been expanded in .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.

    Esse é um recurso de opção de aceitação.This is an opt-in feature. Para habilitá-lo, defina o elemento EnableWindowsFormsHighDpiAutoResizing como true no arquivo de configuração do aplicativo (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>
    
  • Suporte para codificações de página de códigoSupport for code page encodings

    O .NET Core oferece suporte principalmente a codificações Unicode, e por padrão fornece suporte limitado a codificações de página de código..NET Core primarily supports the Unicode encodings and by default provides limited support for code page encodings. É possível adicionar suporte a codificações de página de código disponíveis no .NET Framework, mas que não sejam compatíveis ao .NET Core ao registrar codificações de página de código com o método Encoding.RegisterProvider.You can add support for code page encodings available in .NET Framework but unsupported in .NET Core by registering code page encodings with the Encoding.RegisterProvider method. Para obter mais informações, consulte System.Text.CodePagesEncodingProvider.For more information, see System.Text.CodePagesEncodingProvider.

  • .NET Nativo.NET Native

    Aplicativos do Windows para Windows 10 direcionados ao .NET Core e escritos em C# ou Visual Basic podem tirar proveito de uma nova tecnologia que compila aplicativos para código nativo em vez de IL.Windows apps for Windows 10 that target .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. Ela produz aplicativos caracterizados por inicialização e tempos de execução mais rápidos.They produce apps characterized by faster startup and execution times. Para saber mais, confira Compilação de aplicativos com .NET Nativo.For more information, see Compiling Apps with .NET Native. Para obter uma visão geral do .NET Nativo, examinando qual é a diferente dele para a compilação JIT e o NGEN e o que isso significa para seu código, confira .NET Nativo e compilação.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.

    Seus aplicativos são compilados por padrão para código nativo quando você os compila com o Visual Studio 2015 ou posterior.Your apps are compiled to native code by default when you compile them with Visual Studio 2015 or later. Para saber mais, confira Introdução ao .NET Nativo.For more information, see Getting Started with .NET Native.

    Para oferecer suporte à depuração de aplicativos do .NET Nativo, foram adicionadas diversas interfaces e enumerações novas à API de depuração não gerenciada.To support debugging .NET Native apps, a number of new interfaces and enumerations have been added to the unmanaged debugging API. Para saber mais, confira o tópico Depuração (Referência de API não gerenciada).For more information, see the Debugging (Unmanaged API Reference) topic.

  • Pacotes do código-fonte aberto do .NET FrameworkOpen-source .NET Framework packages

    Os pacotes do .NET Core, como as coleções imutáveis, as APIs SIMD e as APIs de rede, como as encontradas no namespace System.Net.Http, agora estão disponíveis como pacotes de software livre no 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 acessar o código, confira CoreFx no GitHub.To access the code, see CoreFx on GitHub. Para saber mais e saber como contribuir com esses pacotes, confira .NET Core e código-fonte aberto, Home Page do .NET no GitHub.For more information and how to contribute to these packages, see .NET Core and Open-Source, .NET Home Page on GitHub.

Novidades no .NET Framework 4.5.2What's new in .NET Framework 4.5.2

  • Novas APIs para aplicativos do ASP.NET.New APIs for ASP.NET apps. Os novos métodos HttpResponse.AddOnSendingHeaders e HttpResponseBase.AddOnSendingHeaders permitem inspecionar e modificar os cabeçalhos de resposta e o código de status à medida que a resposta é liberada para o aplicativo do cliente.The new HttpResponse.AddOnSendingHeaders and HttpResponseBase.AddOnSendingHeaders methods let you inspect and modify response headers and status code as the response is being flushed to the client app. Sugerimos usar esses métodos ao invés dos eventos PreSendRequestHeaders e PreSendRequestContent; eles são mais eficientes e confiáveis.Consider using these methods instead of the PreSendRequestHeaders and PreSendRequestContent events; they are more efficient and reliable.

    O método HostingEnvironment.QueueBackgroundWorkItem permite agendar pequenos itens de trabalho em segundo plano.The HostingEnvironment.QueueBackgroundWorkItem method lets you schedule small background work items. ASP.NET rastreia esses itens e evita que IIS termine abruptamente o processo de trabalho até que todos os itens de trabalho em segundo plano tenham sido concluídos.ASP.NET tracks these items and prevents IIS from abruptly terminating the worker process until all background work items have completed. Esse método não pode ser chamado fora de um domínio de aplicativo gerenciado pelo ASP.NET.This method can't be called outside an ASP.NET managed app domain.

    As novas propriedades HttpResponse.HeadersWritten e HttpResponseBase.HeadersWritten retornam valores boolianos que indicam se os cabeçalhos de resposta foram gravados.The new HttpResponse.HeadersWritten and HttpResponseBase.HeadersWritten properties return Boolean values that indicate whether the response headers have been written. É possível usar essas propriedades para certificar-se de que as chamadas para APIs como HttpResponse.StatusCode (que geram exceções se os cabeçalhos foram gravados) tiveram êxito.You can use these properties to make sure that calls to APIs such as HttpResponse.StatusCode (which throw exceptions if the headers have been written) will succeed.

  • Redimensionamento em controles do Windows Forms.Resizing in Windows Forms controls. Esse recurso foi expandido.This feature has been expanded. É possível usar a configuração do sistema DPI para redimensionar os componentes dos seguintes controles adicionais (por exemplo, a seta suspensa nas caixas de combinação):You can now use the system DPI setting to resize components of the following additional controls (for example, the drop-down arrow in combo boxes):

    Esse é um recurso de opção de aceitação.This is an opt-in feature. Para habilitá-lo, defina o elemento EnableWindowsFormsHighDpiAutoResizing como true no arquivo de configuração do aplicativo (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>
    
  • Novo recurso de fluxo de trabalho.New workflow feature. Um gerenciador de recursos que usa o método EnlistPromotableSinglePhase (e, portanto, implementa a interface IPromotableSinglePhaseNotification) pode usar o novo método Transaction.PromoteAndEnlistDurable para requisitar o seguinte:A resource manager that's using the EnlistPromotableSinglePhase method (and therefore implementing the IPromotableSinglePhaseNotification interface) can use the new Transaction.PromoteAndEnlistDurable method to request the following:

    Isso pode ser feito dentro do mesmo domínio do aplicativo e não requer nenhum código extra não gerado para interagir com o MSDTC para executar a promoção.This can be done within the same app domain, and doesn't require any extra unmanaged code to interact with MSDTC to perform the promotion. O novo método pode ser chamado apenas quando há uma chamada pendente do método System.Transactions para o IPromotableSinglePhaseNotificationPromote implementado por uma inscrição que pode ser promovida.The new method can be called only when there's an outstanding call from System.Transactions to the IPromotableSinglePhaseNotificationPromote method that's implemented by the promotable enlistment.

  • Melhorias na criação de perfisProfiling improvements. As seguintes novas APIs não gerenciadas de criação de perfis fornecem uma criação de perfil mais robusta:The following new unmanaged profiling APIs provide more robust profiling:

    Implementações anteriores de ICorProfiler compatíveis com carregamento lento de montagens pendentes.Previous ICorProfiler implementations supported lazy loading of dependent assemblies. As novas APIs de criação de perfis requerem montagens dependentes que são injetadas pelo criador de perfil a ser carregado imediatamente, em vez de ser carregado depois que o aplicativo for totalmente inicializado.The new profiling APIs require dependent assemblies that are injected by the profiler to be loadable immediately, instead of being loaded after the app is fully initialized. Essa mudança não afeta os usuários das APIs ICorProfiler existentes.This change doesn't affect users of the existing ICorProfiler APIs.

  • Melhorias na depuração.Debugging improvements. As seguintes APIs de depuração novas não gerenciadas fornecem uma melhor integração com um criador de perfil.The following new unmanaged debugging APIs provide better integration with a profiler. Agora é possível acessar metadados inseridos por um criador de perfil bem como variáveis locais e código produzido por pedidos do ReJIT compilador quando despejo do depurador.You can now access metadata inserted by the profiler as well as local variables and code produced by compiler ReJIT requests when dump debugging.

  • Mudanças no rastreamento de eventos.Event tracing changes. O .NET Framework 4.5.2 permite o rastreamento fora do processo para atividades baseadas no ETW (Rastreamento de Eventos para Windows) em uma área de superfície maior..NET Framework 4.5.2 enables out-of-process, Event Tracing for Windows (ETW)-based activity tracing for a larger surface area. Isso permite que fornecedores de Gerenciamento Avançado de Energia (APM) forneçam ferramentas que rastreiam com precisão os custos de pedidos individuais e atividades entre threads.This enables Advanced Power Management (APM) vendors to provide lightweight tools that accurately track the costs of individual requests and activities that cross threads. Esses eventos são gerados apenas quando os controladores ETW permitem e, portanto, as mudanças não afetam o código ETW gravado anteriormente ou o código executado com o ETW desabilitado.These events are raised only when ETW controllers enable them; therefore, the changes don't affect previously written ETW code or code that runs with ETW disabled.

  • Promover uma transação e convertê-la em uma inscrição durávelPromoting a transaction and converting it to a durable enlistment

    Transaction.PromoteAndEnlistDurable é uma nova API adicionada ao .NET Framework 4.5.2 e 4.6:Transaction.PromoteAndEnlistDurable is a new API added to .NET Framework 4.5.2 and 4.6:

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

    O método pode ser usado por uma inscrição criada anteriormente por Transaction.EnlistPromotableSinglePhase em resposta ao método ITransactionPromoter.Promote.The method may be used by an enlistment that was previously created by Transaction.EnlistPromotableSinglePhase in response to the ITransactionPromoter.Promote method. Ele pede que System.Transactions promova a transação a uma transação MSDTC e "converta" a inscrição passível de promoção em uma inscrição durável.It asks System.Transactions to promote the transaction to an MSDTC transaction and to "convert" the promotable enlistment to a durable enlistment. Após a conclusão desse método, a interface IPromotableSinglePhaseNotification não será mais referenciada por System.Transactions, e quaisquer notificações futuras chegarão na interface ISinglePhaseNotification fornecida.After this method completes successfully, the IPromotableSinglePhaseNotification interface will no longer be referenced by System.Transactions, and any future notifications will arrive on the provided ISinglePhaseNotification interface. A inscrição em questão deve agir como uma inscrição durável, oferecendo suporte à ao registro em log e recuperação da transação.The enlistment in question must act as a durable enlistment, supporting transaction logging and recovery. Veja Transaction.EnlistDurable para obter detalhes.Refer to Transaction.EnlistDurable for details. Além disso, a inscrição deve oferecer suporte a ISinglePhaseNotification.In addition, the enlistment must support ISinglePhaseNotification. Esse método pode ser chamado durante o processamento de uma chamada ITransactionPromoter.Promote.This method can only be called while processing an ITransactionPromoter.Promote call. Se esse não for o caso, uma exceção TransactionException será gerada.If that is not the case, a TransactionException exception is thrown.

Novidades no .NET Framework 4.5.1What's new in .NET Framework 4.5.1

Atualizações de abril de 2014:April 2014 updates:

  • Atualização 2 do Visual Studio 2013 inclui atualizações para modelos de Biblioteca de Classes Portátil para suporte destes cenários:Visual Studio 2013 Update 2 includes updates to the Portable Class Library templates to support these scenarios:

    • É possível usar as APIs do Tempo de Execução do Windows em bibliotecas portáteis que tenham como destino Windows 8.1, Windows Phone 8.1 e 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.

    • Você pode incluir XAML (Windows.UI.XAML types) em bibliotecas portáteis quando o destino for Windows 8.1 ou Windows Phone 8.1.You can include XAML (Windows.UI.XAML types) in portable libraries when you target Windows 8.1 or Windows Phone 8.1. Os seguintes modelos XAML são compatíveis: Blank Page, Resource Dictionary, Templated Control e User Control.The following XAML templates are supported: Blank Page, Resource Dictionary, Templated Control, and User Control.

    • Você pode criar um componente de Tempo de Execução do Windows portátil (.winmd file) para uso em Store apps cujo destino seja Windows 8.1 e 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.

    • É possível redirecionar uma biblioteca de classes Windows Store ou Windows Phone Store novamente como uma Biblioteca de Classes Portátil.You can retarget a Windows Store or Windows Phone Store class library like a Portable Class Library.

    Para saber mais sobre essas mudanças, confira Biblioteca de classes portátil.For more information about these changes, see Portable Class Library.

  • O conjunto de conteúdo do .NET Framework agora inclui documentação para .NET Native, que é uma tecnologia de pré-compilação para construção e implantação dos aplicativos do Windows.The .NET Framework content set now includes documentation for .NET Native, which is a precompilation technology for building and deploying Windows apps. Para melhorar o desempenho, o .NET Native compila seus aplicativos diretamente para o código nativo, ao invés de usar uma linguagem intermediária (IL)..NET Native compiles your apps directly to native code, rather than to intermediate language (IL), for better performance. Para obter detalhes, confira Compilação de aplicativos com o .NET Nativo.For details, see Compiling Apps with .NET Native.

  • O .NET Framework Reference Source fornece experiências de navegação e de funcionalidade, novas e aprimoradas.The .NET Framework Reference Source provides a new browsing experience and enhanced functionality. É possível navegar através do código-fonte online do .NET Framework, baixar a referência para visualização offline e percorrer as fontes (incluindo correções e atualizações) durante a depuração.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 saber mais, confira a postagem no blog A new look for .NET Reference Source (Um novo olhar sobre a fonte de referência do .NET).For more information, see the blog entry A new look for .NET Reference Source.

Os novos recursos e aprimoramentos nas classes base do .NET Framework 4.5.1 incluem:New features and enhancements in the base classes in .NET Framework 4.5.1 include:

  • Redirecionamento de associação automático de assemblies.Automatic binding redirection for assemblies. Desde o Visual Studio 2013, quando você compilar um aplicativo destinado ao .NET Framework 4.5.1, os redirecionamentos de associação poderão ser adicionados ao arquivo de configuração do aplicativo se o aplicativo ou seus componentes referenciarem várias versões do mesmo assembly.Starting with Visual Studio 2013, when you compile an app that targets the .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. Você também pode habilitar esse recurso para projetos que se destinam a versões anteriores do .NET Framework.You can also enable this feature for projects that target older versions of the .NET Framework. Para saber mais, confira Como habilitar e desabilitar o redirecionamento automático de associações.For more information, see How to: Enable and Disable Automatic Binding Redirection.

  • Capacidade de coletar informações de diagnóstico para ajudar desenvolvedores na melhoria do desempenho dos aplicativos de servidor e de nuvem.Ability to collect diagnostics information to help developers improve the performance of server and cloud applications. Para obter mais informações, consulte os métodos WriteEventWithRelatedActivityId e WriteEventWithRelatedActivityIdCore na classe EventSource.For more information, see the WriteEventWithRelatedActivityId and WriteEventWithRelatedActivityIdCore methods in the EventSource class.

  • Capacidade de compactar explicitamente a LOH (pilha de objetos grandes) durante a coleta de lixo.Ability to explicitly compact the large object heap (LOH) during garbage collection. Para obter mais informações, consulte a propriedade GCSettings.LargeObjectHeapCompactionMode.For more information, see the GCSettings.LargeObjectHeapCompactionMode property.

  • Aperfeiçoamentos de desempenho adicionais como a suspensão do aplicativo ASP.NET, aperfeiçoamentos JIT multicore e inicialização mais rápida do aplicativo após uma atualização do .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 obter detalhes, confira o Comunicado do .NET Framework 4.5.1 e a postagem de blog Suspensão de aplicativos ASP.NET.For details, see the .NET Framework 4.5.1 announcement and the ASP.NET app suspend blog post.

Os aprimoramentos para Windows Forms incluem:Improvements to Windows Forms include:

  • Redimensionamento em controles do Windows Forms.Resizing in Windows Forms controls. É possível usar a configuração do sistema DPI para redimensionar os componentes de controle (por exemplo, os ícones que aparecem na grade de propriedade) optando por uma entrada no arquivo de configuração de aplicativo (app.config) do seu aplicativo.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. Atualmente, esse recurso é compatível com os seguintes controles do Windows Forms:This feature is currently supported in the following Windows Forms controls:

    Para habilitar esse recurso, adicione um novo elemento <appSettings> ao arquivo de configuração (app.config) e defina o elemento EnableWindowsFormsHighDpiAutoResizing como 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>
    

Entre os aperfeiçoamentos durante a depuração de seus aplicativos do .NET Framework no Visual Studio 2013 estão:Improvements when debugging your .NET Framework apps in Visual Studio 2013 include:

  • Valores de retorno no depurador do Visual Studio.Return values in the Visual Studio debugger. Quando você depura um aplicativo gerenciado no Visual Studio 2013, a janela Autos exibe valores e tipos de retorno para os métodos.When you debug a managed app in Visual Studio 2013, the Autos window displays return types and values for methods. Essas informações estão disponíveis para aplicativos de área de trabalho, Windows Store e Windows Phone.This information is available for desktop, Windows Store, and Windows Phone apps. Confira mais informações em Examinar valores de retorno de chamadas de método.For more information, see Examine return values of method calls.

  • Editar e continuar para aplicativos 64 bits.Edit and Continue for 64-bit apps. O Visual Studio 2013 dá suporte ao recurso Editar e continuar para aplicativos gerenciados de 64 bits para área de trabalho, Windows Store e Windows Phone.Visual Studio 2013 supports the Edit and Continue feature for 64-bit managed apps for desktop, Windows Store, and Windows Phone. As limitações existentes permanecem em vigor para aplicativos 32 e 64 bits (confira a última seção do artigo Alterações de código compatíveis (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).

  • Depuração async-aware.Async-aware debugging. Para facilitar a depuração de aplicativos assíncronos no Visual Studio 2013, a pilha de chamadas oculta o código de infraestrutura fornecido por compiladores para dar suporte à programação assíncrona e também as cadeias em quadros pai lógicos para que você possa acompanhar a execução lógica do programa com mais clareza.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. Uma janela Tarefas substitui a janela Tarefas Paralelas e exibe tarefas relacionadas a um ponto de interrupção específico e também exibe outras tarefas que estão ativas ou agendadas no aplicativo.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. Leia sobre esse recurso na seção "Depuração async-aware" do Comunicado do .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.

  • Melhor suporte à exceção para componentes do Tempo de Execução do Windows.Better exception support for Windows Runtime components. No Windows 8.1Windows 8.1, as exceções surgidas de aplicativos da Windows Store preservam as informações sobre o erro que causou a exceção, mesmo entre os limites de linguagem.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. Leia sobre esse recurso na seção "Desenvolvimento de aplicativos para a Windows Store" do Comunicado do .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 do Visual Studio 2013, você pode usar a Ferramenta de Otimização Orientada de Perfil Gerenciado (Mpgo.exe) para otimizar aplicativos da Windows Store 8.xWindows 8.x Store, bem como aplicativos da área de trabalho.Starting with Visual Studio 2013, you can use the Managed Profile Guided Optimization Tool (Mpgo.exe) to optimize Windows Store 8.xWindows 8.x Store apps as well as desktop apps.

Para novos recursos no ASP.NET 4.5.1, confira Notas sobre a versão do ASP.NET and Web Tools 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.

Novidades no .NET Framework 4.5What's new in .NET Framework 4.5

Classes baseBase classes

  • Capacidade de reduzir as reinicializações do sistema detectando e fechando-se os aplicativos do .NET Framework 4 durante a implantação.Ability to reduce system restarts by detecting and closing .NET Framework 4 applications during deployment. Confira Redução de reinicializações do sistema durante instalações do .NET Framework 4.5.See Reducing System Restarts During .NET Framework 4.5 Installations.

  • Suporte para matrizes maiores que 2 gigabytes (GB) em plataformas 64 bits.Support for arrays that are larger than 2 gigabytes (GB) on 64-bit platforms. Esse recurso pode ser habilitado no arquivo de configuração do aplicativo.This feature can be enabled in the application configuration file. Confira o elemento <gcAllowVeryLargeObjects> que também lista outras restrições ao tamanho do objeto e da matriz.See the <gcAllowVeryLargeObjects> element, which also lists other restrictions on object size and array size.

  • Melhor desempenho por meio de coleta de lixo em segundo plano para servidores.Better performance through background garbage collection for servers. Quando você usa a coleta de lixo do servidor no .NET Framework 4.5, a coleta de lixo em segundo plano é automaticamente ativada.When you use server garbage collection in the .NET Framework 4.5, background garbage collection is automatically enabled. Confira a seção Coleta de lixo de servidor em segundo plano do tópico Noções básicas da coleta de lixo.See the Background Server Garbage Collection section of the Fundamentals of Garbage Collection topic.

  • Compilação JIT (just-in-time) em segundo plano, disponível como opção em vários processadores multicore para melhorar o desempenho do aplicativo.Background just-in-time (JIT) compilation, which is optionally available on multi-core processors to improve application performance. Consulte ProfileOptimization.See ProfileOptimization.

  • Capacidade de limitar quanto tempo o mecanismo de expressão regular tentará resolver uma expressão regular antes de atingir o tempo limite. Consulte a propriedade 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.

  • Capacidade de definir a cultura padrão para um domínio de aplicativo.Ability to define the default culture for an application domain. Consulte a classe CultureInfo.See the CultureInfo class.

  • Suporte de console para a codificação Unicode (UTF-16).Console support for Unicode (UTF-16) encoding. Consulte a classe Console.See the Console class.

  • Suporte para controle de versão da ordenação de cadeia de caracteres culturais e dados de comparação.Support for versioning of cultural string ordering and comparison data. Consulte a classe SortVersion.See the SortVersion class.

  • Melhor desempenho durante a recuperação de recursos.Better performance when retrieving resources. Confira Empacotar e implantar recursos.See Packaging and Deploying Resources.

  • Aperfeiçoamentos na compactação para reduzir o tamanho de um arquivo compactado.Zip compression improvements to reduce the size of a compressed file. Consulte o namespace System.IO.Compression.See the System.IO.Compression namespace.

  • Capacidade de personalizar um contexto de reflexão para substituir o comportamento de reflexão padrão por meio da classe CustomReflectionContext.Ability to customize a reflection context to override default reflection behavior through the CustomReflectionContext class.

  • Suporte para a versão 2008 do padrão IDNA (Internationalized Domain Names in Applications) quando a classe System.Globalization.IdnMapping é usada no 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.

  • A delegação da comparação de cadeia de caracteres para o sistema operacional, que implementa o Unicode 6.0, quando o .NET Framework é usado no 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. Ao executar em outras plataformas, o .NET Framework inclui seus próprios dados de comparação da cadeia de caracteres, o que implementa o Unicode 5.x.When running on other platforms, the .NET Framework includes its own string comparison data, which implements Unicode 5.x. Consulte a classe String e a seção Comentários da classe SortVersion.See the String class and the Remarks section of the SortVersion class.

  • Capacidade de computar os códigos de hash para cadeias de caracteres com base no domínio do aplicativo.Ability to compute the hash codes for strings on a per application domain basis. Confira o elemento <UseRandomizedStringHashAlgorithm>.See <UseRandomizedStringHashAlgorithm> Element.

  • Suporte à reflexão de tipo dividido entre as classes Type e TypeInfo.Type reflection support split between Type and TypeInfo classes. Confira Reflexão no .NET Framework para aplicativos da Windows Store.See Reflection in the .NET Framework for Windows Store Apps.

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

No .NET Framework 4.5, a MEF (Managed Extensibility Framework) fornece os seguintes recursos novos:In the .NET Framework 4.5, the Managed Extensibility Framework (MEF) provides the following new features:

  • Suporte para tipos genéricos.Support for generic types.

  • O modelo de programação baseado na convenção permite criar partes com base em convenções de nomenclatura, em vez de atributos.Convention-based programming model that enables you to create parts based on naming conventions rather than attributes.

  • Vários escopos.Multiple scopes.

  • Um subconjunto da MEF que você pode usar ao criar aplicativos Windows Store 8.xWindows 8.x Store.A subset of MEF that you can use when you create Windows Store 8.xWindows 8.x Store apps. Esse subconjunto está disponível como um pacote baixável da Galeria NuGet.This subset is available as a downloadable package from the NuGet Gallery. Para instalar o pacote, abra o projeto no Visual Studio, escolha Gerenciar Pacotes NuGet no menu Projeto e procure o pacote Microsoft.Composition online.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 saber mais, confira Managed Extensibility Framework (MEF).For more information, see Managed Extensibility Framework (MEF).

Operações de arquivo assíncronasAsynchronous file operations

No .NET Framework 4.5, os novos recursos assíncronos foram adicionados às linguagens C# e Visual Basic.In the .NET Framework 4.5, new asynchronous features were added to the C# and Visual Basic languages. Esses recursos adicionam um modelo com base na tarefa para executar operações assíncronas.These features add a task-based model for performing asynchronous operations. Para usar esse novo modelo, use os métodos assíncronos nas classes de E/S.To use this new model, use the asynchronous methods in the I/O classes. Confira E/S de arquivo assíncrona.See Asynchronous File I/O.

FerramentasTools

No .NET Framework 4.5, o Gerador de Arquivos de Recurso (Resgen.exe) permite criar um arquivo .resw a ser usado em aplicativos Windows Store 8.xWindows 8.x Store com base em um arquivo .resources inserido em um assembly do .NET Framework.In the .NET Framework 4.5, Resource File Generator (Resgen.exe) enables you to create a .resw file for use in Windows Store 8.xWindows 8.x Store apps from a .resources file embedded in a .NET Framework assembly. Para saber mais, confira Resgen.exe (Gerador de arquivo de recurso).For more information, see Resgen.exe (Resource File Generator).

A Ferramenta de Otimização Orientada de Perfil Gerenciado (Mpgo.exe) permite melhorar o tempo de inicialização do aplicativo, a utilização da memória (tamanho do conjunto de trabalho) e a produtividade otimizando-se assemblies de imagem nativa.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. A ferramenta de linha de comando gera dados de perfil para assemblies de aplicativo de imagem nativa.The command-line tool generates profile data for native image application assemblies. Confira Mpgo.exe (Ferramenta de Otimização Guiada por Perfil Gerenciado).See Mpgo.exe (Managed Profile Guided Optimization Tool). A partir do Visual Studio 2013, você pode usar a Mpgo.exe para otimizar aplicativos da Windows Store 8.xWindows 8.x Store, bem como aplicativos da área de trabalho.Starting with Visual Studio 2013, you can use Mpgo.exe to optimize Windows Store 8.xWindows 8.x Store apps as well as desktop apps.

Computação paralelaParallel computing

O .NET Framework 4.5 fornece vários recursos e aperfeiçoamentos novos para computação paralela.The .NET Framework 4.5 provides several new features and improvements for parallel computing. Entre eles estão melhor desempenho, mais controle, maior suporte para programação assíncrona, uma nova biblioteca de fluxo de dados e o melhor suporte para a depuração paralela e a análise de desempenho.These include improved performance, increased control, improved support for asynchronous programming, a new dataflow library, and improved support for parallel debugging and performance analysis. Confira a entrada Novidades sobre paralelismo no .NET 4.5 no blog Parallel Programming with .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 e 4.5.1 adicionam model binding para formulários da Web, suporte WebSocket, manipuladores assíncronos, aperfeiçoamentos de desempenho e muitos outros recursos.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 obter mais informações, consulte os seguintes recursos:For more information, see the following resources:

Rede Networking

O .NET Framework 4.5 fornece uma nova interface de programação para aplicativos HTTP.The .NET Framework 4.5 provides a new programming interface for HTTP applications. Para obter mais informações, consulte os novos namespaces System.Net.Http e System.Net.Http.Headers.For more information, see the new System.Net.Http and System.Net.Http.Headers namespaces.

O suporte também está incluído para uma nova interface de programação para aceitar e interagir com uma conexão WebSocket usando-se a classe HttpListener existente e as classes 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 obter mais informações, consulte o novo namespace System.Net.WebSockets e a classe HttpListener.For more information, see the new System.Net.WebSockets namespace and the HttpListener class.

Além disso, o .NET Framework 4.5 inclui os seguintes aperfeiçoamentos de rede:In addition, the .NET Framework 4.5 includes the following networking improvements:

  • Suporte ao URI compatível com RFC.RFC-compliant URI support. Para obter mais informações, consulte Uri e as classes relacionadas.For more information, see Uri and related classes.

  • Suporte para análise IDN.Support for Internationalized Domain Name (IDN) parsing. Para obter mais informações, consulte Uri e as classes relacionadas.For more information, see Uri and related classes.

  • Suporte para EAI (Email Address Internationalization).Support for Email Address Internationalization (EAI). Para obter mais informações, consulte o namespace de System.Net.Mail.For more information, see the System.Net.Mail namespace.

  • Suporte a IPv6 melhorado.Improved IPv6 support. Para obter mais informações, consulte o namespace de System.Net.NetworkInformation.For more information, see the System.Net.NetworkInformation namespace.

  • Suporte a soquete de modo duplo.Dual-mode socket support. Para obter mais informações, consulte as classes Socket e TcpListener.For more information, see the Socket and TcpListener classes.

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

No .NET Framework 4.5, o Windows Presentation Foundation (WPF) contém modificações e aperfeiçoamentos nas seguintes áreas:In the .NET Framework 4.5, Windows Presentation Foundation (WPF) contains changes and improvements in the following areas:

  • O novo controle Ribbon, que permite que você implemente uma interface de usuário da faixa de opções que hospeda uma Barra de Ferramentas de Acesso Rápido, um menu do aplicativo e guias.The new Ribbon control, which enables you to implement a ribbon user interface that hosts a Quick Access Toolbar, Application Menu, and tabs.

  • A nova interface INotifyDataErrorInfo, que dá suporte à validação de dados síncronos e assíncronos.The new INotifyDataErrorInfo interface, which supports synchronous and asynchronous data validation.

  • Novos recursos para as classes VirtualizingPanel e Dispatcher.New features for the VirtualizingPanel and Dispatcher classes.

  • Desempenho melhorado durante a exibição de grandes conjuntos de dados agrupados e o acesso a coleções em threads que não sejam de IU.Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.

  • Associação de dados a propriedades estáticas, associação de dados a tipos personalizados que implementam a interface ICustomTypeProvider e a recuperação de informações de associação de dados de uma expressão de associação.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.

  • Reposicionamento de dados à medida que os valores mudam (shaping dinâmico).Repositioning of data as the values change (live shaping).

  • Capacidade de verificar se o contexto de dados de um contêiner de itens está desconectado.Ability to check whether the data context for an item container is disconnected.

  • Capacidade de definir o tempo que deve decorrer entre as alterações de propriedade e as atualizações da fonte de dados.Ability to set the amount of time that should elapse between property changes and data source updates.

  • Suporte melhorado para implementar padrões de evento fracos.Improved support for implementing weak event patterns. Além disso, os eventos agora podem aceitar extensões de marcação.Also, events can now accept markup extensions.

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

No .NET Framework 4.5, os seguintes recursos foram adicionados para simplificar a gravação e a manutenção de aplicativos do Windows Communication Foundation (WCF):In the .NET Framework 4.5, the following features have been added to make it simpler to write and maintain Windows Communication Foundation (WCF) applications:

  • Simplificação de arquivos de configuração gerados.Simplification of generated configuration files.

  • Suporte para desenvolvimento de primeiro contrato.Support for contract-first development.

  • Capacidade de configurar o modo de compatibilidade do ASP.NET mais facilmente.Ability to configure ASP.NET compatibility mode more easily.

  • Alterações em valores de propriedade de transporte padrão para reduzir a probabilidade de você defini-los.Changes in default transport property values to reduce the likelihood that you will have to set them.

  • Atualizações feitas na classe XmlDictionaryReaderQuotas reduzem a probabilidade de você precisar configurar manualmente as cotas para leitores de dicionário XML.Updates to the XmlDictionaryReaderQuotas class to reduce the likelihood that you will have to manually configure quotas for XML dictionary readers.

  • Validação de arquivos de configuração WCF pelo Visual Studio como parte do processo de compilação, de forma que você possa detectar erros de configuração antes de executar o aplicativo.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.

  • Novo suporte de streaming assíncrono.New asynchronous streaming support.

  • Novo mapeamento de protocolo HTTPS para facilitar a exposição de um ponto de extremidade em HTTPS com o IIS (Serviços de Informações da Internet).New HTTPS protocol mapping to make it easier to expose an endpoint over HTTPS with Internet Information Services (IIS).

  • Capacidade de gerar metadados em um único documento WSDL acrescentando ?singleWSDL à URL de serviço.Ability to generate metadata in a single WSDL document by appending ?singleWSDL to the service URL.

  • Suporte de Websockets para habilitar comunicação bidirecional real em portas 80 e 443 com as características de desempenho semelhantes ao transporte TCP.Websockets support to enable true bidirectional communication over ports 80 and 443 with performance characteristics similar to the TCP transport.

  • Suporte para configurar serviços no código.Support for configuring services in code.

  • Dicas de ferramenta do Editor de XMLXML Editor tooltips.

  • Suporte ao armazenamento em cache ChannelFactory.ChannelFactory caching support.

  • Suporte à compactação de codificador binário.Binary encoder compression support.

  • Suporte para um transporte UDP que permite que os desenvolvedores gravem serviços que usem o sistema de mensagens "acionar e esquecer".Support for a UDP transport that enables developers to write services that use "fire and forget" messaging. Um cliente envia uma mensagem para um serviço e não espera nenhuma resposta do serviço.A client sends a message to a service and expects no response from the service.

  • Capacidade de dar suporte a vários modos de autenticação em um único ponto de extremidade WCF durante o uso do transporte HTTP e da segurança de transporte.Ability to support multiple authentication modes on a single WCF endpoint when using the HTTP transport and transport security.

  • Suporte para serviços WCF que usam IDNs (nomes de domínio internacionalizados).Support for WCF services that use internationalized domain names (IDNs).

Para saber mais, confira Novidades no Windows Communication Foundation.For more information, see What's New in Windows Communication Foundation.

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

No .NET Framework 4.5, vários recursos novos foram adicionados ao Windows Workflow Foundation (WF), incluindo:In the .NET Framework 4.5, several new features were added to Windows Workflow Foundation (WF), including:

  • Os fluxos de trabalho da máquina de estado, que foram introduzidos pela primeira vez como parte do .NET Framework 4.0.1 (Atualização 1 da Plataforma .NET Framework 4).State machine workflows, which were first introduced as part of .NET Framework 4.0.1 (.NET Framework 4 Platform Update 1). Essa atualização incluiu várias classes e atividades novas que permitiram que os desenvolvedores criassem fluxos de trabalho de computador do estado.This update included several new classes and activities that enabled developers to create state machine workflows. Essas classes e atividades foram atualizadas para que o .NET Framework 4.5 inclua:These classes and activities were updated for the .NET Framework 4.5 to include:

    • A capacidade de definir pontos de interrupção em estados.The ability to set breakpoints on states.

    • A capacidade de copiar e colar transições no designer de fluxo de trabalho.The ability to copy and paste transitions in the workflow designer.

    • Suporte de designer para criação de transição do disparador compartilhado.Designer support for shared trigger transition creation.

    • Atividades para criar fluxos de trabalho de computador de estado, incluindo: StateMachine, State e Transition.Activities for creating state machine workflows, including: StateMachine, State, and Transition.

  • Recursos do Designer de Fluxo de Trabalho aperfeiçoados, como o seguinte:Enhanced Workflow Designer features such as the following:

    • Capacidades de pesquisa do fluxo de trabalho aperfeiçoado no Visual Studio, incluindo Localização Rápida e Localizar nos Arquivos.Enhanced workflow search capabilities in Visual Studio, including Quick Find and Find in Files.

    • Capacidade de criar automaticamente uma atividade de Sequência quando uma segunda atividade filho é adicionada a uma atividade de contêiner e de incluir ambas as atividades na atividade de Sequência.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.

    • Suporte a movimento panorâmico, o que permite que a parte visível de um fluxo de trabalho seja alterada sem o uso das barras de rolagem.Panning support, which enables the visible portion of a workflow to be changed without using the scroll bars.

    • Uma nova exibição Estrutura de Tópicos de Documentos mostra os componentes de um fluxo de trabalho em uma exibição de contorno em estilo árvore e permite selecionar um componente na exibição Estrutura de Tópicos de Documentos.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.

    • Capacidade de adicionar anotações a atividades.Ability to add annotations to activities.

    • Capacidade de definir e consumir representantes de atividade usando-se o designer de fluxo de trabalho.Ability to define and consume activity delegates by using the workflow designer.

    • Conexão e inserção automática para atividades e transições na máquina de estado e fluxos de trabalho do fluxograma.Auto-connect and auto-insert for activities and transitions in state machine and flowchart workflows.

  • Armazenamento das informações do estado de exibição para um fluxo de trabalho em um único elemento no arquivo XAML, logo, você pode localizar e editar facilmente as informações de estado de exibição.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.

  • Uma atividade de contêiner NoPersistScope para impedir que as atividades filho persistam.A NoPersistScope container activity to prevent child activities from persisting.

  • Suporte para expressões do C#:Support for C# expressions:

    • Os projetos de fluxo de trabalho que usam o Visual Basic usarão expressões do Visual Basic e os projetos de fluxo de trabalho do C# usarão as expressões do C#.Workflow projects that use Visual Basic will use Visual Basic expressions, and C# workflow projects will use C# expressions.

    • Projetos de fluxo de trabalho do C# criados no Visual Studio 2010 e com expressões do Visual Basic são compatíveis com projetos do fluxo de trabalho do C# que usem expressões do 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.

  • Aperfeiçoamentos do controle de versão:Versioning enhancements:

    • A nova classe WorkflowIdentity, que fornece um mapeamento entre uma instância mantida de fluxo de trabalho e sua definição de fluxo de trabalho.The new WorkflowIdentity class, which provides a mapping between a persisted workflow instance and its workflow definition.

    • Execução lado a lado de várias versões de fluxo de trabalho no mesmo host, incluindo WorkflowServiceHost.Side-by-side execution of multiple workflow versions in the same host, including WorkflowServiceHost.

    • Na Atualização Dinâmica, a capacidade de modificar a definição de uma instância do fluxo de trabalho persistente.In Dynamic Update, the ability to modify the definition of a persisted workflow instance.

  • Implantação do serviço de fluxo de trabalho de primeiro contrato, que fornece suporte para gerar automaticamente atividades para corresponder um contrato de serviço existente.Contract-first workflow service development, which provides support for automatically generating activities to match an existing service contract.

Para saber mais, confira Novidades no Windows Workflow Foundation.For more information, see What's New in Windows Workflow Foundation.

.NET para aplicativos da Windows 8.x Store.NET for Windows 8.x Store apps

Os aplicativos Windows Store 8.xWindows 8.x Store foram projetados para fatores forma específicos e aproveitam a capacidade do sistema operacional Windows.Windows Store 8.xWindows 8.x Store apps are designed for specific form factors and leverage the power of the Windows operating system. Um subconjunto do .NET Framework 4.5 ou 4.5.1 está disponível para compilar aplicativos Windows Store 8.xWindows 8.x Store para o Windows usando o C# ou o Visual Basic.A subset of the .NET Framework 4.5 or 4.5.1 is available for building Windows Store 8.xWindows 8.x Store apps for Windows by using C# or Visual Basic. Esse subconjunto é chamado de .NET para aplicativos da Windows 8.x Store.NET for Windows 8.x Store apps e abordado em uma visão geral no Windows Dev Center.This subset is called .NET para aplicativos da Windows 8.x Store.NET for Windows 8.x Store apps and is discussed in an overview in the Windows Dev Center.

Bibliotecas de Classe Portáteis Portable Class Libraries

O projeto Biblioteca de Classes Portátil no Visual Studio 2012 (e em versões posteriores) permite gravar e compilar assemblies gerenciados que funcionem em várias plataformas do .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. Ao usar um projeto Biblioteca de Classes Portátil, você escolhe as plataformas (como o Windows Phone e o .NET para aplicativos da Windows 8.x Store.NET for Windows 8.x Store apps) para direcionar.Using a Portable Class Library project, you choose the platforms (such as Windows Phone and .NET para aplicativos da Windows 8.x Store.NET for Windows 8.x Store apps) to target. Os tipos e membros disponíveis em seu projeto são restritos automaticamente aos tipos e membros comuns através dessas plataformas.The available types and members in your project are automatically restricted to the common types and members across these platforms. Para saber mais, confira Biblioteca de Classes Portátil.For more information, see Portable Class Library.

Consulte tambémSee also