Co nowego w .NET FrameworkWhat's new in the .NET Framework

Ten artykuł podsumowuje najważniejsze nowe funkcje i ulepszenia w następujących wersjach .NET Framework:This article summarizes key new features and improvements in the following versions of the .NET Framework:

Ten artykuł nie zawiera wyczerpujących informacji o każdej nowej funkcji i może ulec zmianie.This article does not provide comprehensive information about each new feature and is subject to change. Aby uzyskać ogólne informacje na temat .NET Framework, zobacz wprowadzenie.For general information about the .NET Framework, see Getting Started. W przypadku obsługiwanych platform zobacz wymagania systemowe.For supported platforms, see System Requirements. Aby uzyskać linki do pobrania i instrukcje instalacji, zobacz Przewodnik instalacji.For download links and installation instructions, see Installation Guide.

Uwaga

Zespół .NET Framework również zwalnia funkcje poza pasmem z pakietem NuGet, aby rozwinąć obsługę platformy i wprowadzić nowe funkcje, takie jak Niezmienne kolekcje i typy wektorów z włączonym 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. Aby uzyskać więcej informacji, zobacz dodatkowe biblioteki klas i interfejsy API oraz .NET Framework i wersje poza pasmem.For more information, see Additional Class Libraries and APIs and The .NET Framework and Out-of-Band Releases. Zapoznaj się z pełną listą pakietów NuGet dla .NET Framework.See a complete list of NuGet packages for the .NET Framework.

Wprowadzenie .NET Framework 4,8Introducing .NET Framework 4.8

.NET Framework 4,8 kompiluje w poprzednich wersjach .NET Framework 4. x poprzez dodanie wielu nowych poprawek i kilku nowych funkcji, gdy jest to bardzo stabilny produkt..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.

Pobieranie i instalowanie .NET Framework 4,8Downloading and installing .NET Framework 4.8

.NET Framework 4,8 można pobrać z następujących lokalizacji:You can download .NET Framework 4.8 from the following locations:

.NET Framework 4,8 można zainstalować w systemie Windows 10, Windows 8.1, Windows 7 z dodatkiem SP1 i odpowiednich platformach serwera, począwszy od systemu Windows Server 2008 R2 z dodatkiem 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. .NET Framework 4,8 można zainstalować przy użyciu Instalatora sieci Web lub Instalatora w trybie offline.You can install .NET Framework 4.8 by using either the web installer or the offline installer. Zalecanym sposobem większości użytkowników jest użycie Instalatora sieci Web.The recommended way for most users is to use the web installer.

Aby docelowo .NET Framework 4,8 w programie Visual Studio 2012 lub nowszym, należy zainstalować pakiet deweloperski .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.

Co nowego w .NET Framework 4,8What's new in .NET Framework 4.8

.NET Framework 4,8 wprowadza nowe funkcje w następujących obszarach:.NET Framework 4.8 introduces new features in the following areas:

Ulepszony ułatwienia dostępu, dzięki czemu aplikacja zapewnia odpowiednie środowisko dla użytkowników technologii pomocniczej, w dalszym ciągu jest głównym fokusem .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. Aby uzyskać informacje na temat ulepszeń ułatwień dostępu w .NET Framework 4,8, zobacz co nowego w ułatwieniach dostępu w .NET Framework.For information on accessibility improvements in .NET Framework 4.8, see What's new in accessibility in the .NET Framework.

Klas podstawowychBase classes

Zredukowany wpływ na Szyfrowanie FIPS.Reduced FIPS impact on Cryptography. W poprzednich wersjach .NET Framework zarządzane klasy dostawcy usług kryptograficznych, takie jak SHA256Managed zgłaszają CryptographicException, gdy biblioteki kryptograficzne systemu są skonfigurowane w trybie 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”. Te wyjątki są zgłaszane, ponieważ zarządzane wersje klas dostawcy usług kryptograficznych, w przeciwieństwie do bibliotek kryptograficznych systemu, nie zostały poddane FIPS (Federal Information Processing Standards) 140-2 certyfikacji.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. Ponieważ kilku deweloperów ma swoje komputery deweloperskie w trybie FIPS, wyjątki są często zgłaszane w systemach produkcyjnych.Because few developers have their development machines in FIPS mode, the exceptions are commonly thrown in production systems.

Domyślnie w aplikacjach, które są przeznaczone .NET Framework 4,8, następujące zarządzane klasy kryptograficzne nie zgłaszają już CryptographicException w tym przypadku:By default in applications that target .NET Framework 4.8, the following managed cryptography classes no longer throw a CryptographicException in this case:

Zamiast tego te klasy przekierowują operacje kryptograficzne do biblioteki kryptografii systemu.Instead, these classes redirect cryptographic operations to a system cryptography library. Ta zmiana skutecznie usuwa potencjalne różnice między środowiskami deweloperskimi i środowiskami produkcyjnymi oraz sprawia, że składniki natywne i składniki zarządzane działają w ramach tych samych zasad kryptograficznych.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. Aplikacje, które są zależne od tych wyjątków, mogą przywrócić poprzednie zachowanie przez ustawienie przełącznika AppContext Switch.System.Security.Cryptography.UseLegacyFipsThrow na true.Applications that depend on these exceptions can restore the previous behavior by setting the AppContext switch Switch.System.Security.Cryptography.UseLegacyFipsThrow to true. Aby uzyskać więcej informacji, zobacz zarządzane klasy kryptografii nie zgłaszają wyjątku kryptografii w trybie FIPS.For more information, see Managed cryptography classes do not throw a CryptographyException in FIPS mode.

Korzystanie z zaktualizowanej wersji programu ZLibUse of updated version of ZLib

Począwszy od .NET Framework 4,5, zestaw clrcompression. dll używa zlib, natywnej biblioteki zewnętrznej do kompresji danych, aby zapewnić implementację algorytmu Wklęśnięcie.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. .NET Framework 4,8, clrcompression. dll został zaktualizowany tak, aby korzystał z wersji ZLib 1.2.11, która obejmuje kilka kluczowych ulepszeń i poprawek.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)

Wprowadzenie do ServiceHealthBehaviorIntroduction of ServiceHealthBehavior

Punkty końcowe kondycji są szeroko używane przez narzędzia aranżacji do zarządzania usługami w oparciu o ich stan kondycji.Health endpoints are widely used by orchestration tools to manage services based on their health status. Kontrola kondycji może być również używana przez narzędzia do monitorowania do śledzenia i dostarczania powiadomień dotyczących dostępności i wydajności usługi.Health checks can also be used by monitoring tools to track and provide notifications about the availability and performance of a service.

ServiceHealthBehavior to zachowanie usługi WCF, które rozszerza IServiceBehavior.ServiceHealthBehavior is a WCF service behavior that extends IServiceBehavior. Po dodaniu do kolekcji ServiceDescription.Behaviors zachowanie usługi wykonuje następujące czynności:When added to the ServiceDescription.Behaviors collection, a service behavior does the following:

  • Zwraca stan kondycji usługi z kodami odpowiedzi HTTP.Returns service health status with HTTP response codes. W ciągu zapytania można określić kod stanu HTTP dla żądania sondowania kondycji HTTP/GET.You can specify in a query string the HTTP status code for a HTTP/GET health probe request.

  • Publikuje informacje o kondycji usługi.Publishes information about service health. Szczegóły dotyczące usługi, w tym stan usługi, liczniki ograniczenia i pojemność, można wyświetlić za pomocą żądania HTTP/GET z ciągiem zapytania ?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. Łatwość dostępu do tych informacji jest ważna podczas rozwiązywania problemów z usługą błędna WCF.Ease of access to such information is important when troubleshooting a misbehaving WCF service.

Istnieją dwa sposoby uwidocznienia punktu końcowego kondycji i publikowania informacji o kondycji usługi WCF:There are two ways to expose the health endpoint and publish WCF service health information:

  • Za poorednictwem kodu.Through code. Na przykład: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)
    
  • Przy użyciu pliku konfiguracji.By using a configuration file. Na przykład:For example:

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

Można zbadać stan kondycji usługi za pomocą parametrów zapytania, takich jak OnServiceFailure, OnDispatcherFailure, OnListenerFailure, OnThrottlePercentExceeded), a dla każdego parametru zapytania można określić kod odpowiedzi HTTP.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. Jeśli kod odpowiedzi HTTP zostanie pominięty dla parametru zapytania, domyślnie używany jest kod odpowiedzi HTTP 503.If the HTTP response code is omitted for a query parameter, a 503 HTTP response code is used by default. Na przykład:For example:

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

    Kod stanu odpowiedzi HTTP 450 jest zwracany, gdy element ServiceHost. State jest większy niż CommunicationState.Opened.A 450 HTTP response status code is returned when ServiceHost.State is greater than CommunicationState.Opened. Parametry zapytania i przykłady:Query parameters and examples:

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

    Kod stanu odpowiedzi HTTP 455 jest zwracany, gdy stan dowolnego z dyspozytorów kanałów jest większy niż 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

    Kod stanu odpowiedzi HTTP 465 jest zwracany, gdy stan dowolnego odbiornika kanałów jest większy niż 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

    Określa wartość procentową {1 – 100}, która wyzwala odpowiedź i kod odpowiedzi HTTP {200 – 599}.Specifies the percentage {1 – 100} that triggers the response and its HTTP response code {200 – 599}. W tym przykładzie:In this example:

    • Jeśli wartość procentowa jest większa niż 95, zwracany jest kod odpowiedzi HTTP 500.If the percentage is greater than 95, a 500 HTTP response code is returned.

    • Jeśli zostanie zwrócona wartość procentowa lub z przedziału od 70 do 95, 350.If the percentage or between 70 and 95, 350 is returned.

    • W przeciwnym razie jest zwracana 200.Otherwise, 200 is returned.

Stan kondycji usługi może być wyświetlany w formacie HTML przez określenie ciągu zapytania, takiego jak https://contoso:81/Service1?health lub w kodzie XML przez określenie ciągu zapytania, takiego jak 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. Ciąg zapytania, taki jak https://contoso:81/Service1?health&NoContent zwraca pustą stronę HTML.A query string like https://contoso:81/Service1?health&NoContent returns an empty HTML page.

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

Ulepszenia o wysokiej rozdzielczości DPIHigh DPI enhancements

W .NET Framework 4,8, WPF dodaje obsługę skalowania DPI na poziomie v2 i trybu mieszanego.In .NET Framework 4.8, WPF adds support for Per-Monitor V2 DPI Awareness and Mixed-Mode DPI scaling. Dodatkowe informacje na temat programowania wysokiej rozdzielczości DPI można znaleźć w temacie Tworzenie aplikacji klasycznych o wysokiej rozdzielczości DPI w systemie Windows .See High DPI Desktop Application Development on Windows for additional information about high DPI development.

.NET Framework 4,8 usprawnia obsługę hostowanych funkcji HWND i Windows Forms współdziałania w aplikacjach WPF o wysokiej rozdzielczości DPI na platformach obsługujących skalowanie DPI w trybie mieszanym (począwszy od aktualizacji systemu Windows 10 kwietnia 2018)..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). W przypadku, gdy w trybie mieszanym skalowanie wartościowe lub kontrolki Windows Forms są tworzone jako okna z funkcją rozdzielczości DPI, wywoływanie funkcji SetThreadDpiHostingBehavior i SetThreadDpiAwarenessContextmoże być obsługiwane w aplikacji WPF w wersji 2 dla monitora i ma rozmiar i odpowiednio skalowane.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. Taka hostowana zawartość nie jest renderowana w natywnej rozdzielczości DPI; Zamiast tego system operacyjny skaluje hostowaną zawartość do odpowiedniego rozmiaru.Such hosted content is not rendered at the native DPI; instead, the operating system scales the hosted content to the appropriate size. Obsługa trybu sygnalizacji DPI na monitor v2 umożliwia również hostowanie formantów WPF (tj. nadrzędnych) w oknie macierzystym w aplikacji o wysokiej rozdzielczości 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.

Aby włączyć obsługę skalowania wysokiej rozdzielczości DPI w trybie mieszanym, można ustawić następujące przełączniki AppContext w pliku konfiguracyjnym aplikacji: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>

Środowisko uruchomieniowe języka wspólnegoCommon language runtime

Środowisko uruchomieniowe w .NET Framework 4,8 obejmuje następujące zmiany i usprawnienia:The runtime in .NET Framework 4.8 includes the following changes and improvements:

Ulepszenia kompilatora JIT.Improvements to the JIT compiler. Kompilator just-in-Time (JIT) w .NET Framework 4,8 jest oparty na kompilatorze JIT w programie .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. Wiele optymalizacji i wszystkie poprawki błędów kompilatora JIT programu .NET Core 2,1 są zawarte w kompilatorze JIT .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.

Ulepszenia programu Ngen.NGEN improvements. Środowisko uruchomieniowe poprawiło zarządzanie pamięcią dla obrazów natywnego generatora obrazów (Ngen), dzięki czemu dane mapowane z obrazów NGen nie są rezydentem pamięci.The runtime has improved its memory management for Native Image Generator (NGEN) images so that data mapped from NGEN images are not memory-resident. Pozwala to zmniejszyć ilość miejsca dostępnego na ataki próbujące wykonać dowolny kod, modyfikując pamięć, która zostanie wykonana.This reduces the surface area available to attacks that attempt to execute arbitrary code by modifying memory that will be executed.

Skanowanie w poszukiwaniu złośliwego oprogramowania dla wszystkich zestawów.Antimalware scanning for all assemblies. W poprzednich wersjach .NET Framework środowisko uruchomieniowe skanuje wszystkie zestawy ładowane z dysku przy użyciu programu Windows Defender lub oprogramowania chroniącego przed złośliwym kodem.In previous versions of the .NET Framework, the runtime scans all assemblies loaded from disk using either Windows Defender or third-party antimalware software. Jednak zestawy załadowane z innych źródeł, na przykład przez metodę Assembly.Load(Byte[]), nie są skanowane i mogą potencjalnie zawierać niewykryte złośliwe oprogramowanie.However, assemblies loaded from other sources, such as by the Assembly.Load(Byte[]) method, are not scanned and can potentially contain undetected malware. Począwszy od .NET Framework 4,8 uruchomionego w systemie Windows 10 środowisko uruchomieniowe wyzwala skanowanie przez rozwiązania chroniące przed złośliwym kodem (AMSI).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).

Co nowego w .NET Framework 4.7.2What's new in .NET Framework 4.7.2

.NET Framework 4.7.2 zawiera nowe funkcje w następujących obszarach:.NET Framework 4.7.2 includes new features in the following areas:

Dalszy nacisk na .NET Framework 4.7.2 jest ulepszony, co pozwala aplikacji zapewnić odpowiednie środowisko dla użytkowników technologii pomocniczej.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. Informacje o ulepszeniach ułatwień dostępu w programie .NET Framework 4.7.2 można znaleźć w temacie co nowego w ułatwieniach dostępu w .NET Framework.For information on accessibility improvements in .NET Framework 4.7.2, see What's new in accessibility in the .NET Framework.

Klas podstawowychBase classes

.NET Framework 4.7.2 oferuje dużą liczbę ulepszeń kryptograficznych, lepszą obsługę dekompresji archiwów ZIP oraz dodatkowe interfejsy API kolekcji..NET Framework 4.7.2 features a large number of cryptographic enhancements, better decompression support for ZIP archives, and additional collection APIs.

Nowe przeciążenia RSA. Tworzenie i DSA. CreateNew overloads of RSA.Create and DSA.Create

Metody DSA.Create(DSAParameters) i RSA.Create(RSAParameters) umożliwiają podawanie kluczowych parametrów podczas tworzenia wystąpienia nowego klucza DSA lub RSA.The DSA.Create(DSAParameters) and RSA.Create(RSAParameters) methods let you supply key parameters when instantiating a new DSA or RSA key. Umożliwiają one zastępowanie kodu podobne do następujących: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

z kodem podobnym do tego: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

Metody DSA.Create(Int32) i RSA.Create(Int32) pozwalają generować nowe klucze DSA lub RSA o określonym rozmiarze klucza.The DSA.Create(Int32) and RSA.Create(Int32) methods let you generate new DSA or RSA keys with a specific key size. Na przykład: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

Konstruktory Rfc2898DeriveBytes akceptują nazwę algorytmu wyznaczania wartości skrótuRfc2898DeriveBytes constructors accept a hash algorithm name

Klasa Rfc2898DeriveBytes ma trzy nowe konstruktory z parametrem HashAlgorithmName, który identyfikuje algorytm HMAC, który ma być używany podczas wyprowadzania kluczy.The Rfc2898DeriveBytes class has three new constructors with a HashAlgorithmName parameter that identifies the HMAC algorithm to use when deriving keys. Zamiast używać algorytmu SHA-1, deweloperzy powinni używać algorytmu HMAC opartego na algorytmie SHA-2, takiego jak SHA-256, jak pokazano w następującym przykładzie: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

Obsługa kluczy tymczasowychSupport for ephemeral keys

Import PFX może opcjonalnie załadować klucze prywatne bezpośrednio z pamięci, pomijając dysk twardy.PFX import can optionally load private keys directly from memory, bypassing the hard drive. Po określeniu nowej flagi X509KeyStorageFlags.EphemeralKeySet w konstruktorze X509Certificate2 lub jednym z przeciążeń metody X509Certificate2.Import klucze prywatne zostaną załadowane jako klucze tymczasowe. 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. Zapobiega to widocznym kluczom na dysku.This prevents the keys from being visible on the disk. AleHowever:

  • Ponieważ klucze nie są utrwalane na dysku, certyfikaty załadowane z tą flagą nie są dobrym kandydatami do dodania do X509Store.Since the keys are not persisted to disk, certificates loaded with this flag are not good candidates to add to an X509Store.

  • Klucze ładowane w ten sposób są prawie zawsze ładowane za pośrednictwem systemu Windows CNG.Keys loaded in this manner are almost always loaded via Windows CNG. W związku z tym obiekty wywołujące muszą uzyskać dostęp do klucza prywatnego przez wywoływanie metod rozszerzających, takich jak certyfikat. GetRSAPrivateKey ().Therefore, callers must access the private key by calling extension methods, such as cert.GetRSAPrivateKey(). Właściwość X509Certificate2.PrivateKey nie działa.The X509Certificate2.PrivateKey property does not function.

  • Ponieważ Starsza Właściwość X509Certificate2.PrivateKey nie działa z certyfikatami, deweloperzy powinni wykonać rygorystyczne testy przed przełączeniem do kluczy tymczasowych.Since the legacy X509Certificate2.PrivateKey property does not work with certificates, developers should perform rigorous testing before switching to ephemeral keys.

Programowe tworzenie certyfikatów podpisywania certyfikatów PKCS # 10 oraz certyfikaty klucza publicznego X. 509Programmatic creation of PKCS#10 certification signing requests and X.509 public key certificates

Począwszy od .NET Framework 4.7.2, obciążenia mogą generować żądania podpisania certyfikatu (przedstawiciele klienta), co umożliwia przygotowanie generacji żądań certyfikatów do istniejących narzędzi.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. Jest to często przydatne w scenariuszach testowych.This is frequently useful in test scenarios.

Aby uzyskać więcej informacji i przykładów kodu, zobacz "programowe tworzenie żądań podpisywania certyfikatów PKCS # 10 oraz certyfikaty klucza publicznego X. 509" w blogu platformy .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.

Nowi członkowie SignerInfoNew SignerInfo members

Począwszy od .NET Framework 4.7.2, Klasa SignerInfo uwidacznia więcej informacji o sygnaturze.Starting with .NET Framework 4.7.2, the SignerInfo class exposes more information about the signature. Możesz pobrać wartość właściwości System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm, aby określić algorytm podpisu używany przez program podpisujący.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 można wywołać, aby uzyskać kopię podpisu kryptograficznego dla tej osoby podpisującej.SignerInfo.GetSignature can be called to get a copy of the cryptographic signature for this signer.

Pozostawienie opakowanego strumienia otwartego po usunięciu CryptoStreamLeaving a wrapped stream open after CryptoStream is disposed

Począwszy od .NET Framework 4.7.2, Klasa CryptoStream ma dodatkowy Konstruktor, który umożliwia Dispose nie zamyka zapakowanego strumienia.Starting with .NET Framework 4.7.2, the CryptoStream class has an additional constructor that allows Dispose to not close the wrapped stream. Aby opuścić zawinięty strumień otwarty po usunięciu wystąpienia CryptoStream, wywołaj nowy Konstruktor CryptoStream w następujący sposób: 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)

Dekompresja zmian w DeflateStreamDecompression changes in DeflateStream

Począwszy od .NET Framework 4.7.2, implementacja operacji dekompresji w klasie DeflateStream zmieniła się na domyślnie używać natywnych interfejsów API systemu Windows.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. Zwykle powoduje to znaczne zwiększenie wydajności.Typically, this results in a substantial performance improvement.

Obsługa dekompresji przy użyciu interfejsów API systemu Windows jest włączona domyślnie dla aplikacji, które są przeznaczone .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. Aplikacje, które są przeznaczone dla wcześniejszych wersji .NET Framework ale działają w ramach .NET Framework 4.7.2, mogą przystąpić do tego zachowania, dodając następujący przełącznik AppContext do pliku konfiguracji aplikacji: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" />

Dodatkowe interfejsy API kolekcjiAdditional collection APIs

.NET Framework 4.7.2 dodaje wiele nowych interfejsów API do typów SortedSet<T> i HashSet<T>..NET Framework 4.7.2 adds a number of new APIs to the SortedSet<T> and HashSet<T> types. Należą do nich następujące elementy:These include:

Klasa ConcurrentDictionary<TKey,TValue> obejmuje nowe przeciążenia metod AddOrUpdate i GetOrAdd, aby pobrać wartość ze słownika lub dodać ją, jeśli nie zostanie znaleziona, i dodać wartość do słownika lub zaktualizować ją, jeśli już istnieje.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

Platforma ASP.NETASP.NET

Obsługa iniekcji zależności w formularzach sieci WebSupport for dependency injection in Web Forms

Iniekcja zależności (di) oddziela obiekty i ich zależności, tak aby kod obiektu nie był już zmieniany tylko z powodu zmiany zależności.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. Podczas tworzenia aplikacji ASP.NET, które są przeznaczone dla .NET Framework 4.7.2, można:When developing ASP.NET applications that target .NET Framework 4.7.2, you can:

Obsługa plików cookie tego samego miejscaSupport for same-site cookies

SameSite zapobiega wysyłaniu plików cookie przez przeglądarkę wraz z żądaniem między lokacjami.SameSite prevents a browser from sending a cookie along with a cross-site request. .NET Framework 4.7.2 dodaje właściwość HttpCookie.SameSite, której wartość jest elementem członkowskim wyliczenia System.Web.SameSiteMode..NET Framework 4.7.2 adds a HttpCookie.SameSite property whose value is a System.Web.SameSiteMode enumeration member. Jeśli wartość jest SameSiteMode.Strict lub SameSiteMode.Lax, ASP.NET dodaje atrybut SameSite do nagłówka Set-cookie.If its value is SameSiteMode.Strict or SameSiteMode.Lax, ASP.NET adds the SameSite attribute to the set-cookie header. Obsługa SameSite ma zastosowanie do obiektów HttpCookie, a także do FormsAuthentication i System.Web.SessionState plików cookie.SameSite support applies to HttpCookie objects, as well as to FormsAuthentication and System.Web.SessionState cookies.

Można ustawić SameSite dla obiektu HttpCookie w następujący sposób: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

Możesz również skonfigurować pliki cookie SameSite na poziomie aplikacji, modyfikując plik 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>

Można dodać SameSite dla plików cookie FormsAuthentication i System.Web.SessionState, modyfikując plik konfiguracji sieci 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 />
   <sessionState cookieSameSite="Lax"></sessionState>
</system.web>

Obsługa sieciNetworking

Implementacja właściwości HttpClientHandlerImplementation of HttpClientHandler properties

.NET Framework 4.7.1 dodać osiem właściwości do klasy System.Net.Http.HttpClientHandler..NET Framework 4.7.1 added eight properties to the System.Net.Http.HttpClientHandler class. Jednak dwie wywołały PlatformNotSupportedException.However, two threw a PlatformNotSupportedException. .NET Framework 4.7.2 teraz udostępnia implementację tych właściwości..NET Framework 4.7.2 now provides an implementation for these properties. Właściwości są następujące:The properties are:

SQLClientSQLClient

Obsługa Azure Active Directory uwierzytelniania uniwersalnego i uwierzytelniania wieloskładnikowegoSupport for Azure Active Directory Universal Authentication and Multi-Factor authentication

Rosnące wymagania dotyczące zgodności i zabezpieczeń wymagają, aby wielu klientów korzystało z uwierzytelniania wieloskładnikowego (MFA).Growing compliance and security demands require that many customers use multi-factor authentication (MFA). Ponadto obecnie najlepsze rozwiązania uniemożliwiają uwzględnienie haseł użytkowników bezpośrednio w parametrach połączenia.In addition, current best practices discourage including user passwords directly in connection strings. Aby można było obsługiwać te zmiany, .NET Framework 4.7.2 rozszerza Parametry połączenia SqlClient przez dodanie nowej wartości "Active Directory Interactive" dla istniejącego słowa kluczowego "Authentication" do obsługi uwierzytelniania MFA i usługi Azure AD.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. Nowa metoda interaktywna obsługuje natywnych i federacyjnych użytkowników usługi Azure AD, a także użytkowników-Gości usługi Azure AD.The new interactive method supports native and federated Azure AD users as well as Azure AD guest users. Gdy ta metoda jest używana, uwierzytelnianie MFA narzucone przez usługę Azure AD jest obsługiwane dla baz danych SQL.When this method is used, the MFA authentication imposed by Azure AD is supported for SQL databases. Ponadto proces uwierzytelniania żąda hasła użytkownika w celu przestrzegania najlepszych rozwiązań w zakresie zabezpieczeń.In addition, the authentication process requests a user password to adhere to security best practices.

W poprzednich wersjach .NET Framework łączność SQL obsługuje tylko opcje SqlAuthenticationMethod.ActiveDirectoryPassword i SqlAuthenticationMethod.ActiveDirectoryIntegrated.In previous versions of the .NET Framework, SQL connectivity supported only the SqlAuthenticationMethod.ActiveDirectoryPassword and SqlAuthenticationMethod.ActiveDirectoryIntegrated options. Oba te elementy są częścią nieinteraktywnego protokołu ADAL, który nie obsługuje usługi MFA.Both of these are part of the non-interactive ADAL protocol, which does not support MFA. Dzięki nowej opcji SqlAuthenticationMethod.ActiveDirectoryInteractive łączność SQL obsługuje uwierzytelnianie MFA, a także istniejące metody uwierzytelniania (hasło i uwierzytelnianie zintegrowane), dzięki czemu użytkownicy mogą interaktywnie wprowadzać hasła użytkowników bez utrwalania haseł w parametrach połączenia.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.

Aby uzyskać więcej informacji i zapoznać się z przykładem, zobacz "SQL--usługa Azure AD Universal and wieloskładnikowe Authentication Support" w blogu platformy .NET.For more information and an example, see "SQL -- Azure AD Universal and Multi-factor Authentication Support" in the .NET Blog.

Obsługa Always Encrypted wersja 2Support for Always Encrypted version 2

Program NET Framework 4.7.2 dodaje obsługę dla Always Encrypted opartych na enklawy.NET Framework 4.7.2 adds supports for enclave-based Always Encrypted. Oryginalna wersja Always Encrypted jest technologią szyfrowania po stronie klienta, w której klucze szyfrowania nigdy nie opuszczają klienta.The original version of Always Encrypted is a client-side encryption technology in which encryption keys never leave the client. W Always Encrypted opartych na enklawy klient może opcjonalnie wysłać klucze szyfrowania do bezpiecznej enklawy, która jest bezpieczną jednostką obliczeniową, która może być traktowana jako część SQL Server, ale ten kod SQL Server nie może naruszać.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. Aby można było obsługiwać Always Encrypted opartych na enklawy, .NET Framework 4.7.2 dodaje następujące typy i elementy członkowskie do przestrzeni nazw 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:

Następnie plik konfiguracji aplikacji określa konkretną implementację abstrakcyjnej klasy System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider, która udostępnia funkcje dostawcy enklawy.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. Na przykład: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>

Podstawowy przepływ Always Encrypted opartych na enklawy to:The basic flow of enclave-based Always Encrypted is:

  1. Użytkownik tworzy SQL Server połączenie AlwaysEncrypted, które obsługuje Always Encrypted oparte na enklawy.The user creates an AlwaysEncrypted connection to SQL Server that supported enclave-based Always Encrypted. Sterownik kontaktuje się z usługą zaświadczania, aby upewnić się, że nawiązuje połączenie z właściwym enklawy.The driver contacts the attestation service to ensure that it is connecting to right enclave.

  2. Po zaświadczeniu enklawy sterownik ustanawia bezpieczny kanał z bezpiecznym enklawy hostowanym na SQL Server.Once the enclave has been attested, the driver establishes a secure channel with the secure enclave hosted on SQL Server.

  3. Sterownik udostępnia klucze szyfrowania autoryzowane przez klienta z bezpiecznym enklawy na czas trwania połączenia 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

Znajdowanie ResourceDictionaries według źródłaFinding ResourceDictionaries by Source

Począwszy od .NET Framework 4.7.2, asystent diagnostyczny może zlokalizować ResourceDictionaries, które zostały utworzone na podstawie danego źródłowego identyfikatora URI.Starting with .NET Framework 4.7.2, a diagnostic assistant can locate the ResourceDictionaries that have been created from a given source Uri. (Ta funkcja jest używana przez asystentów diagnostycznych, a nie przez aplikacje produkcyjne). Asystent diagnostyczny, taki jak funkcja "Edytuj i Kontynuuj" programu Visual Studio, umożliwia użytkownikowi edytowanie ResourceDictionary z zamiarem, że zmiany zostaną zastosowane do uruchomionej aplikacji. (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. Jednym z kroków osiągnięcia tego celu jest znalezienie wszystkich ResourceDictionaries, że uruchomiona aplikacja została utworzona na podstawie edytowanego słownika.One step in achieving this is finding all the ResourceDictionaries that the running application has created from the dictionary that’s being edited. Na przykład aplikacja może zadeklarować element ResourceDictionary, którego zawartość jest kopiowana z danego źródłowego identyfikatora URI:For example, an application can declare a ResourceDictionary whose content is copied from a given source URI:

<ResourceDictionary Source="MyRD.xaml">

Asystent diagnostyczny, który edytuje oryginalny znacznik w MyRD. xaml can Użyj nowej funkcji, aby zlokalizować słownik.A diagnostic assistant that edits the original markup in MyRD.xaml can use the new feature to locate the dictionary. Funkcja jest implementowana przez nową metodę statyczną, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. The feature is implemented by a new static method, ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. Asystent diagnostyczny wywołuje nową metodę przy użyciu bezwzględnego identyfikatora URI, który identyfikuje oryginalne znaczniki, jak pokazano w poniższym kodzie: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"))

Metoda zwraca puste wartości wyliczalne, chyba że VisualDiagnostics jest włączona i jest ustawiona zmienna środowiskowa ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO .The method returns an empty enumerable unless VisualDiagnostics is enabled and the ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO environment variable is set.

Znajdowanie właścicieli ResourceDictionaryFinding ResourceDictionary owners

Począwszy od .NET Framework 4.7.2, asystent diagnostyczny może zlokalizować właścicieli danego ResourceDictionary.Starting with .NET Framework 4.7.2, a diagnostic assistant can locate the owners of a given ResourceDictionary. (Funkcja jest używana przez asystentów diagnostycznych, a nie przez aplikacje produkcyjne). Za każdym razem, gdy zostanie wprowadzona zmiana w ResourceDictionary, WPF automatycznie odnajdzie wszystkie odwołania DynamicResource — , które mogą mieć wpływ na zmianę. (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.

Asystent diagnostyczny, taki jak obiekt "Edytuj i Kontynuuj" programu Visual Studio, może chcieć przedłużyć ten sposób, aby obsługiwał odwołania StaticResource .A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility may want extend this to handle StaticResource references. Pierwszym krokiem w tym procesie jest znalezienie właścicieli słownika; oznacza to, że aby znaleźć wszystkie obiekty, których właściwość Resources odwołuje się do słownika (bezpośrednio lub pośrednio za pośrednictwem właściwości 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). Trzy nowe metody statyczne zaimplementowane dla klasy System.Windows.Diagnostics.ResourceDictionaryDiagnostics, po jednej dla każdego z typów podstawowych, które mają właściwość Resources, obsługują ten krok: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:

Te metody zwracają pustą wartość wyliczalną, chyba że VisualDiagnostics jest włączona i ustawiono zmienną środowiskową ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO .These methods return an empty enumerable unless VisualDiagnostics is enabled and the ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO environment variable is set.

Znajdowanie odwołań StaticResourceFinding StaticResource references

Asystent diagnostyczny może teraz odbierać powiadomienie za każdym razem, gdy zostanie rozpoznane odwołanie StaticResource .A diagnostic assistant can now receive a notification whenever a StaticResource reference is resolved. (Funkcja jest używana przez asystentów diagnostycznych, a nie przez aplikacje produkcyjne). Asystent diagnostyczny, taki jak funkcja "Edytuj i Kontynuuj" programu Visual Studio, może chcieć zaktualizować wszystkie zastosowania zasobu, gdy jego wartość zostanie zmieniona na ResourceDictionary. (The feature is for use by diagnostic assistants, not by production applications.) A diagnostic assistant such as Visual Studio’s “Edit-and-Continue” facility may want to update all uses of a resource when its value in a ResourceDictionary changes. WPF robi to automatycznie w odniesieniu do DynamicResource — , ale celowo nie robi to w odniesieniu do StaticResource .WPF does this automatically for DynamicResource references, but it intentionally does not do so for StaticResource references. Począwszy od .NET Framework 4.7.2, asystent diagnostyczny może użyć tych powiadomień, aby zlokalizować te zastosowania zasobu statycznego.Starting with .NET Framework 4.7.2, the diagnostic assistant can use these notifications to locate those uses of the static resource.

Powiadomienie jest implementowane przez nowe zdarzenie 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)

To zdarzenie jest wywoływane za każdym razem, gdy środowisko uruchomieniowe rozwiązuje odwołanie StaticResource .This event is raised whenever the runtime resolves a StaticResource reference. Argumenty StaticResourceResolvedEventArgs opisują rozdzielczość i wskazują obiekt i właściwość, które obsługują odwołanie StaticResourceResourceDictionary i klucz używany do rozwiązania: 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

Zdarzenie nie jest wywoływane (i jego metoda dostępu add jest ignorowana), chyba że VisualDiagnostics jest włączona i zmienna środowiskowa ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO jest ustawiona.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

Aplikacje obsługujące HDPI dla Windows Forms, Windows Presentation Foundation (WPF) i Visual Studio Tools dla pakietu Office (VSTO) można wdrożyć przy użyciu technologii 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. Jeśli w manifeście aplikacji zostanie znaleziony następujący wpis, wdrożenie zakończy się pomyślnie w .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>

W przypadku aplikacji Windows Forms poprzednie obejście ustawienia rozpoznawania DPI w pliku konfiguracyjnym aplikacji, a nie manifestu aplikacji, nie jest już konieczne do pomyślnego wdrożenia technologii ClickOnce.For Windows Forms application, the previous workaround of setting DPI awareness in the application configuration file rather than the application manifest is no longer necessary for ClickOnce deployment to succeed.

Co nowego w .NET Framework 4.7.1What's new in .NET Framework 4.7.1

.NET Framework 4.7.1 zawiera nowe funkcje w następujących obszarach:.NET Framework 4.7.1 includes new features in the following areas:

Ponadto najważniejszym fokusem w .NET Framework 4.7.1 jest ulepszony ułatwienia dostępu, dzięki czemu aplikacja może zapewnić odpowiednie środowisko dla użytkowników technologii pomocniczej.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. Informacje o ulepszeniach ułatwień dostępu w programie .NET Framework 4.7.1 można znaleźć w temacie co nowego w ułatwieniach dostępu w .NET Framework.For information on accessibility improvements in .NET Framework 4.7.1, see What's new in accessibility in the .NET Framework.

Klas podstawowychBase classes

Obsługa .NET Standard 2,0Support for .NET Standard 2.0

.NET Standard definiuje zestaw interfejsów API, które muszą być dostępne dla każdej implementacji platformy .NET, która obsługuje tę wersję Standard..NET Standard defines a set of APIs that must be available on each .NET implementation that supports that version of the standard. .NET Framework 4.7.1 w pełni obsługuje .NET Standard 2,0 i dodaje około 200 interfejsów API , które są zdefiniowane w .NET Standard 2,0 i brakuje ich w .NET Framework 4.6.1, 4.6.2 i 4,7..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. (Należy zauważyć, że te wersje .NET Framework obsługują .NET Standard 2,0 tylko wtedy, gdy w systemie docelowym wdrożono również dodatkowe pliki obsługi .NET Standard). Aby uzyskać więcej informacji, zobacz "BCL-.NET Standard 2,0 Support" w blogu .NET Framework środowiska uruchomieniowego 4.7.1 i kompilatora .(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.

Obsługa konstruktorów konfiguracjiSupport for configuration builders

Konstruktory konfiguracji pozwalają deweloperom na dynamiczne Wstawianie i kompilowanie ustawień konfiguracji aplikacji w czasie wykonywania.Configuration builders allow developers to inject and build configuration settings for applications dynamically at run time. Konstruktory konfiguracji niestandardowej mogą służyć do modyfikowania istniejących danych w sekcji konfiguracyjnej lub do tworzenia sekcji konfiguracyjnej w całości od podstaw.Custom configuration builders can be used to modify existing data in a configuration section or to build a configuration section entirely from scratch. Bez konstruktorów konfiguracji, pliki. config są statyczne, a ich ustawienia są definiowane jakiś czas przed uruchomieniem aplikacji.Without configuration builders, .config files are static, and their settings are defined some time before an application is launched.

Aby utworzyć niestandardowy Konstruktor konfiguracji, należy uzyskać swój Konstruktor z klasy abstrakcyjnej ConfigurationBuilder i zastąpić jej ConfigurationBuilder.ProcessConfigurationSection i 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. Możesz również zdefiniować kompilacje w pliku. config.You also define your builders in your .config file. Aby uzyskać więcej informacji, zobacz sekcję "konstruktorzy konfiguracji" w blogu .NET Framework 4.7.1 ASP.NET i Configuration Features post.For more information, see the "Configuration Builders" section in the .NET Framework 4.7.1 ASP.NET and Configuration Features blog post.

Wykrywanie funkcji w czasie wykonywaniaRun-time feature detection

Klasa System.Runtime.CompilerServices.RuntimeFeature udostępnia mechanizm umożliwiający określenie, czy wstępnie zdefiniowana funkcja jest obsługiwana w danej implementacji platformy .NET w czasie kompilacji czy w czasie wykonywania.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. W czasie kompilacji kompilator może sprawdzić, czy określone pole istnieje, aby określić, czy funkcja jest obsługiwana; Jeśli tak, może to emitować kod, który korzysta z tej funkcji.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. W czasie wykonywania aplikacja może wywołać metodę RuntimeFeature.IsSupported przed wyemitowaniem kodu w czasie wykonywania.At run time, an application can call the RuntimeFeature.IsSupported method before emitting code at runtime. Aby uzyskać więcej informacji, zobacz Dodawanie metody pomocnika do opisywania funkcji obsługiwanych przez środowisko uruchomieniowe.For more information, see Add helper method to describe features supported by the runtime.

Typy krotek wartości można serializowaćValue tuple types are serializable

Począwszy od .NET Framework 4.7.1, System.ValueTuple i skojarzonych z nimi typów ogólnych są oznaczone jako możliwe do serializacji, co umożliwia serializacji binarnej.Starting with .NET Framework 4.7.1, System.ValueTuple and its associated generic types are marked as Serializable, which allows binary serialization. Powinno to ułatwić Migrowanie typów krotek, takich jak Tuple<T1,T2,T3> i Tuple<T1,T2,T3,T4>, do typów krotek wartości.This should make migrating Tuple types, such as Tuple<T1,T2,T3> and Tuple<T1,T2,T3,T4>, to value tuple types easier. Aby uzyskać więcej informacji, zobacz "kompilator--ValueTuple jest możliwy do serializacji" w blogu .NET Framework środowiska uruchomieniowego 4.7.1 i funkcje kompilatora .For more information, see "Compiler -- ValueTuple is Serializable" in the .NET Framework 4.7.1 Runtime and Compiler Features blog post.

Obsługa odwołań tylko do odczytuSupport for read-only references

.NET Framework 4.7.1 dodaje System.Runtime.CompilerServices.IsReadOnlyAttribute..NET Framework 4.7.1 adds the System.Runtime.CompilerServices.IsReadOnlyAttribute. Ten atrybut jest używany przez kompilatory języka do oznaczania elementów członkowskich, które mają zwracane typy lub parametry odwołania tylko do odczytu.This attribute is used by language compilers to mark members that have read-only ref return types or parameters. Aby uzyskać więcej informacji, zobacz "kompilator--support for ReadOnlyReferences" w wpisie .NET Framework w blogu środowiska uruchomieniowego 4.7.1 i funkcji kompilatora .For more information, see "Compiler -- Support for ReadOnlyReferences" in the .NET Framework 4.7.1 Runtime and Compiler Features blog post. Aby uzyskać informacje na temat zwracanych wartości, zobacz odwołania do zwracanych wartości orazC# wartości lokalne ref (Przewodnik) i ref Return (Visual Basic).For information on ref return values, see Ref return values and ref locals (C# Guide) and Ref return values (Visual Basic).

Środowisko uruchomieniowe języka wspólnego (CLR)Common language runtime (CLR)

Udoskonalenia wydajności odzyskiwania pamięciGarbage collection performance improvements

Zmiany w wyrzucaniu elementów bezużytecznych (GC) w .NET Framework 4.7.1 poprawić ogólną wydajność, szczególnie w przypadku alokacji dużego obiektu sterty (LOH).Changes to garbage collection (GC) in .NET Framework 4.7.1 improve overall performance, especially for Large Object Heap (LOH) allocations. W .NET Framework 4.7.1, osobne blokady są używane dla sterty małego obiektu i alokacji LOH, co umożliwia przydzielanie LOH, gdy w tle GC (BGC) jest czyszczony raport o kondycji.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. W związku z tym aplikacje, które tworzą dużą liczbę alokacji LOH, powinny mieć zmniejszenie rywalizacji o blokadę alokacji i lepszą wydajność.As a result, applications that make a large number of LOH allocations should see a reduction in allocation lock contention and improved performance. Aby uzyskać więcej informacji, zobacz sekcję "ulepszenia wydajności środowiska uruchomieniowego GC" w blogu .NET Framework środowiska uruchomieniowego 4.7.1 i funkcji kompilatora .For more information, see the "Runtime -- GC Performance Improvements" section in the .NET Framework 4.7.1 Runtime and Compiler Features blog post.

Obsługa sieciNetworking

Obsługa algorytmu SHA-2 dla komunikatu. algorytmSHA-2 support for Message.HashAlgorithm

W .NET Framework 4,7 i starszych wersjach Właściwość Message.HashAlgorithm obsługuje tylko wartości HashAlgorithm.Md5 i HashAlgorithm.Sha.In .NET Framework 4.7 and earlier versions, the Message.HashAlgorithm property supported values of HashAlgorithm.Md5 and HashAlgorithm.Sha only. Począwszy od .NET Framework 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384 i HashAlgorithm.Sha512 są również obsługiwane.Starting with .NET Framework 4.7.1, HashAlgorithm.Sha256, HashAlgorithm.Sha384, and HashAlgorithm.Sha512 are also supported. Określa, czy ta wartość jest faktycznie używana, zależy od usługi MSMQ, ponieważ wystąpienie Message nie wykonuje mieszania, ale po prostu przekazuje wartości do usługi 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. Aby uzyskać więcej informacji, zobacz sekcję "Obsługa protokołu SHA-2 dla komunikatu. algorytm" w wpisie w blogu .NET Framework 4.7.1 ASP.NET i Configuration Features .For more information, see the "SHA-2 support for Message.HashAlgorithm" section in the .NET Framework 4.7.1 ASP.NET and Configuration features blog post.

Platforma ASP.NETASP.NET

Kroki wykonywania w aplikacjach ASP.NETExecution steps in ASP.NET applications

ASP.NET przetwarza żądania we wstępnie zdefiniowanym potoku zawierającym 23 zdarzenia.ASP.NET processes requests in a predefined pipeline that includes 23 events. ASP.NET wykonuje każdy program obsługi zdarzeń jako krok wykonania.ASP.NET executes each event handler as an execution step. W wersjach programu ASP.NET do .NET Framework 4,7 ASP.NET nie można przepływać kontekstu wykonywania z powodu przełączenia między wątkami macierzystymi i zarządzanymi.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. Zamiast tego ASP.NET selektywnie przepływa tylko HttpContext.Instead, ASP.NET selectively flows only the HttpContext. Począwszy od .NET Framework 4.7.1, Metoda HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) umożliwia również modułom przywracanie danych otoczenia.Starting with .NET Framework 4.7.1, the HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>) method also allows modules to restore ambient data. Ta funkcja jest przeznaczona dla bibliotek objętych śledzeniem, profilem, diagnostyką lub transakcjami, na przykład z myślą o przepływie wykonywania aplikacji.This feature is targeted at libraries concerned with tracing, profiling, diagnostics, or transactions, for example, that care about the execution flow of the application. Aby uzyskać więcej informacji, zobacz "funkcja kroku wykonywania ASP.NET" w wpisie w blogu .NET Framework 4.7.1 ASP.NET i Configuration Features .For more information, see the "ASP.NET Execution Step Feature" in the .NET Framework 4.7.1 ASP.NET and Configuration Features blog post.

Analiza ASP.NET HttpCookieASP.NET HttpCookie parsing

.NET Framework 4.7.1 obejmuje nową metodę, HttpCookie.TryParse, która zapewnia ustandaryzowany sposób tworzenia obiektu HttpCookie z ciągu i dokładnie przypisywania wartości cookie, takich jak Data i godzina wygaśnięcia..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. Aby uzyskać więcej informacji, zobacz "Analiza ASP.NET HttpCookie" w blogu .NET Framework 4.7.1 ASP.NET and Configuration Features .For more information, see "ASP.NET HttpCookie parsing" in the .NET Framework 4.7.1 ASP.NET and Configuration Features blog post.

Opcje wyznaczania wartości skrótu SHA-2 dla poświadczeń uwierzytelniania ASP.NET FormsSHA-2 hash options for ASP.NET forms authentication credentials

W .NET Framework 4,7 i wcześniejszych wersjach ASP.NET zezwolenie deweloperom na przechowywanie poświadczeń użytkownika z użyciem skrótów haseł w plikach konfiguracji przy użyciu algorytmu MD5 lub 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. Począwszy od .NET Framework 4.7.1, ASP.NET obsługuje również nowe bezpieczne opcje skrótu SHA-2, takie jak SHA256, SHA384 i SHA512.Starting with .NET Framework 4.7.1, ASP.NET also supports new secure SHA-2 hash options such as SHA256, SHA384, and SHA512. Algorytm SHA1 pozostaje domyślny, a w pliku konfiguracyjnym sieci Web można zdefiniować niedomyślnego algorytmu wyznaczania wartości skrótu.SHA1 remains the default, and a non-default hash algorithm can be defined in the web configuration file. Na przykład:For example:

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

Co nowego w .NET Framework 4,7What's new in .NET Framework 4.7

.NET Framework 4,7 zawiera nowe funkcje w następujących obszarach:.NET Framework 4.7 includes new features in the following areas:

Aby uzyskać listę nowych interfejsów API dodanych do .NET Framework 4,7, zobacz .NET Framework 4,7 zmiany interfejsu API w serwisie GitHub.For a list of new APIs added to .NET Framework 4.7, see .NET Framework 4.7 API Changes on GitHub. Aby zapoznać się z listą ulepszeń funkcji i poprawek błędów w .NET Framework 4,7, zobacz .NET Framework 4,7 Lista zmian w serwisie 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. Aby uzyskać dodatkowe informacje, zobacz temat ogłaszanie .NET Framework 4,7 w blogu platformy .NET.For additional information, see Announcing the .NET Framework 4.7 in the .NET blog.

Klas podstawowychBase classes

.NET Framework 4,7 zwiększa serializację przez DataContractJsonSerializer:.NET Framework 4.7 improves serialization by the DataContractJsonSerializer:

Rozszerzona funkcjonalność przy użyciu kryptografii eliptyczna Cryptography (ECC) *Enhanced functionality with Elliptic Curve Cryptography (ECC)*

W .NET Framework 4,7 metody ImportParameters(ECParameters) zostały dodane do klas ECDsa i ECDiffieHellman, aby umożliwić obiektowi reprezentowania już ustanowionego klucza.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. Dodano również metodę ExportParameters(Boolean) do eksportowania klucza przy użyciu jawnych parametrów krzywej.An ExportParameters(Boolean) method was also added for exporting the key using explicit curve parameters.

.NET Framework 4,7 dodaje również obsługę dodatkowych krzywych (w tym zestawu krzywej Brainpool) i dodał wstępnie zdefiniowane definicje w celu ułatwienia tworzenia przez nowe Create i Create metody fabryki..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.

Przykład ulepszeń kryptografii .NET Framework 4,7 w serwisie GitHub.You can see an example of .NET Framework 4.7 cryptography improvements on GitHub.

Lepsza obsługa znaków kontrolnych przez Klasa DataContractJsonSerializerBetter support for control characters by the DataContractJsonSerializer

W .NET Framework 4,7, DataContractJsonSerializer serializować znaki kontrolne zgodne ze standardem ECMAScript 6.In .NET Framework 4.7, the DataContractJsonSerializer serializes control characters in conformity with the ECMAScript 6 standard. To zachowanie jest domyślnie włączone dla aplikacji, które są przeznaczone dla .NET Framework 4,7 i jest funkcją wyboru dla aplikacji, które działają w ramach .NET Framework 4,7, ale celem jest poprzednia wersja .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. Aby uzyskać więcej informacji, zobacz przekierowywanie zmian w .NET Framework 4,7.For more information, see Retargeting Changes in the .NET Framework 4.7.

Obsługa sieciNetworking

.NET Framework 4,7 dodaje następującą funkcję powiązaną z siecią:.NET Framework 4.7 adds the following network-related feature:

Domyślna obsługa systemu operacyjnego dla protokołów TLS*Default operating system support for TLS protocols*

Stos protokołu TLS, który jest używany przez System.Net.Security.SslStream i stosują do góry składniki, takie jak HTTP, FTP i SMTP, umożliwiają deweloperom korzystanie z domyślnych protokołów TLS obsługiwanych przez system operacyjny.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. Deweloperzy nie muszą już wykodować wersji TLS.Developers need no longer hard-code a TLS version.

Platforma ASP.NETASP.NET

W .NET Framework 4,7 ASP.NET zawiera następujące nowe funkcje:In .NET Framework 4.7, ASP.NET includes the following new features:

Rozszerzalność pamięci podręcznej obiektówObject Cache Extensibility

Począwszy od .NET Framework 4,7, ASP.NET dodaje nowy zestaw interfejsów API, które umożliwiają deweloperom zastąpienie domyślnych implementacji ASP.NET dla pamięci podręcznej obiektów i pamięci.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. Deweloperzy mogą teraz zastąpić dowolne z następujących trzech składników, jeśli implementacja ASP.NET nie jest odpowiednia:Developers can now replace any of the following three components if the ASP.NET implementation is not adequate:

  • Magazyn pamięci podręcznej obiektów.Object Cache Store. Za pomocą nowej sekcji Konfiguracja dostawców pamięci podręcznej deweloperzy mogą podłączyć nowe implementacje pamięci podręcznej obiektów dla aplikacji ASP.NET przy użyciu nowego interfejsu 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.

  • Monitorowanie pamięci.Memory monitoring. Domyślny monitor pamięci w programie ASP.NET powiadamia aplikacje, gdy działają w pobliżu skonfigurowanego limitu bajtów prywatnych dla tego procesu lub gdy na komputerze jest mało dostępnej fizycznej pamięci RAM.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. Gdy te limity zbliżają się, powiadomienia są wywoływane.When these limits are near, notifications are fired. W przypadku niektórych aplikacji powiadomienia są wywoływane zbyt blisko skonfigurowanych limitów, aby umożliwić korzystanie z przydatnych reakcji.For some applications, notifications are fired too close to the configured limits to allow for useful reactions. Deweloperzy mogą teraz pisać własne monitory pamięci, aby zamienić wartość domyślną przy użyciu właściwości ApplicationMonitors.MemoryMonitor.Developers can now write their own memory monitors to replace the default by using the ApplicationMonitors.MemoryMonitor property.

  • Reakcje z limitem pamięci.Memory Limit Reactions. Domyślnie ASP.NET próbuje przyciąć pamięć podręczną obiektów i okresowo wywoływać GC.Collect, gdy zbliża się limit procesu bajtów prywatnych.By default, ASP.NET attempts to trim the object cache and periodically call GC.Collect when the private byte process limit is near. W przypadku niektórych aplikacji częstotliwość wywołań GC.Collect lub ilość pamięci podręcznej, która jest przycinana, jest nieefektywna.For some applications, the frequency of calls to GC.Collect or the amount of cache that is trimmed are inefficient. Deweloperzy mogą teraz zastąpić lub uzupełnić zachowanie domyślne, subskrybując implementacje IObserver do monitora pamięci aplikacji.Developers can now replace or supplement the default behavior by subscribing IObserver implementations to the application's memory monitor.

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

Windows Communication Foundation (WCF) dodaje następujące funkcje i zmiany:Windows Communication Foundation (WCF) adds the following features and changes:

Możliwość skonfigurowania domyślnych ustawień zabezpieczeń komunikatów do protokołu TLS 1,1 lub TLS 1,2Ability to configure the default message security settings to TLS 1.1 or TLS 1.2

Począwszy od .NET Framework 4,7, usługa WCF umożliwia skonfigurowanie programu TSL 1,1 lub TLS 1,2 oprócz protokołu SSL 3,0 i TSL 1,0 jako domyślnego protokołu zabezpieczeń komunikatów.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. Jest to ustawienie zgody. Aby ją włączyć, należy dodać następujący wpis do pliku konfiguracji aplikacji: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>

Zwiększona niezawodność aplikacji WCF i serializacji WCFImproved reliability of WCF applications and WCF serialization

Program WCF zawiera szereg zmian w kodzie, które eliminują sytuacje wyścigu, co poprawia wydajność i niezawodność opcji serializacji.WCF includes a number of code changes that eliminate race conditions, thereby improving performance and the reliability of serialization options. Należą do nich następujące elementy:These include:

  • Lepsza obsługa mieszania kodu asynchronicznego i synchronicznego w wywołaniach SocketConnection. BeginRead i SocketConnection. Read.Better support for mixing asynchronous and synchronous code in calls to SocketConnection.BeginRead and SocketConnection.Read.
  • Zwiększona niezawodność podczas przerywania połączenia z SharedConnectionListener i DuplexChannelBinder.Improved reliability when aborting a connection with SharedConnectionListener and DuplexChannelBinder.
  • Ulepszona niezawodność operacji serializacji podczas wywoływania metody FormatterServices.GetSerializableMembers(Type).Improved reliability of serialization operations when calling the FormatterServices.GetSerializableMembers(Type) method.
  • Zwiększona niezawodność podczas usuwania oczekiwania przez wywołanie metody ChannelSynchronizer. RemoveWaiter .Improved reliability when removing a waiter by calling the ChannelSynchronizer.RemoveWaiter method.

Windows FormsWindows Forms

W .NET Framework 4,7 Windows Forms Ulepszona obsługa monitorów o wysokiej rozdzielczości DPI.In .NET Framework 4.7, Windows Forms improves support for high DPI monitors.

Obsługa wysokiej rozdzielczości DPIHigh DPI support

Począwszy od aplikacji, które są przeznaczone dla .NET Framework 4,7, .NET Framework funkcje o wysokiej rozdzielczości DPI i dynamicznej rozdzielczości DPI dla aplikacji 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. Obsługa wysokiej rozdzielczości DPI usprawnia układ i wygląd formularzy i kontrolek na monitorach o wysokiej rozdzielczości DPI.High DPI support improves the layout and appearance of forms and controls on high DPI monitors. Dynamiczne DPI zmienia układ i wygląd formularzy i kontrolek, gdy użytkownik zmienia wartość DPI lub współczynnik skali wyświetlania uruchomionej aplikacji.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.

Obsługa wysokiej rozdzielczości DPI to funkcja, która została skonfigurowana przez zdefiniowanie <System. Windows. Forms. ConfigurationSection > sekcji w pliku konfiguracyjnym aplikacji.High DPI support is an opt-in feature that you configure by defining a <System.Windows.Forms.ConfigurationSection> section in your application configuration file. Aby uzyskać więcej informacji na temat dodawania obsługi wysokiej rozdzielczości DPI i dynamicznej rozdzielczości DPI do aplikacji Windows Forms, zobacz Obsługa wysokiej rozdzielczości DPI w 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)

W .NET Framework 4,7, WPF obejmuje następujące udoskonalenia:In .NET Framework 4.7, WPF includes the following enhancements:

Obsługa stosu dotykowego/pióra opartego na komunikatach WM_POINTER systemu WindowsSupport for a touch/stylus stack based on Windows WM_POINTER messages

Masz teraz możliwość używania stosu dotykowego/pióra na podstawie komunikatów WM_POINTER zamiast platformy Windows Ink Services (roamingu).You now have the option of using a touch/stylus stack based on WM_POINTER messages instead of the Windows Ink Services Platform (WISP). Jest to funkcja opcjonalna w .NET Framework.This is an opt-in feature in the .NET Framework. Aby uzyskać więcej informacji, zobacz przekierowywanie zmian w .NET Framework 4,7.For more information, see Retargeting Changes in the .NET Framework 4.7.

Nowa Implementacja interfejsów API drukowania WPFNew implementation for WPF printing APIs

Interfejsy API drukowania WPF w klasie System.Printing.PrintQueue wywołują interfejs API pakietu dokumentów systemu Windows zamiast PRZESTARZAŁEGO interfejsu API drukowania XPS.WPF's printing APIs in the System.Printing.PrintQueue class call the Windows Print Document Package API instead of the deprecated XPS Print API. Aby uzyskać wpływ tej zmiany na zgodność aplikacji, zobacz Przekierowanie zmian w .NET Framework 4,7.For the impact of this change on application compatibility, see Retargeting Changes in the .NET Framework 4.7.

Co nowego w .NET Framework 4.6.2What's new in .NET Framework 4.6.2

.NET Framework 4.6.2 zawiera nowe funkcje w następujących obszarach:The .NET Framework 4.6.2 includes new features in the following areas:

Aby uzyskać listę nowych interfejsów API dodanych do .NET Framework 4.6.2, zobacz .NET Framework zmiany interfejsu API 4.6.2 w serwisie GitHub.For a list of new APIs added to .NET Framework 4.6.2, see .NET Framework 4.6.2 API Changes on GitHub. Aby zapoznać się z listą ulepszeń funkcji i poprawek błędów w .NET Framework 4.6.2, zobacz .NET Framework 4.6.2 list zmian w witrynie 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. Aby uzyskać dodatkowe informacje, zobacz temat ogłaszanie .NET Framework 4.6.2 w blogu platformy .NET.For additional information, see Announcing .NET Framework 4.6.2 in the .NET blog.

Platforma ASP.NETASP.NET

W .NET Framework 4.6.2 ASP.NET obejmuje następujące udoskonalenia:In the .NET Framework 4.6.2, ASP.NET includes the following enhancements:

Ulepszona obsługa zlokalizowanych komunikatów o błędach w modułach sprawdzania poprawności adnotacji danychImproved support for localized error messages in data annotation validators

Moduły sprawdzania poprawności adnotacji danych umożliwiają wykonanie walidacji przez dodanie jednego lub większej liczby atrybutów do właściwości klasy.Data annotation validators enable you to perform validation by adding one or more attributes to a class property. Element ValidationAttribute.ErrorMessage atrybutu definiuje tekst komunikatu o błędzie, jeśli Walidacja nie powiedzie się.The attribute's ValidationAttribute.ErrorMessage element defines the text of the error message if validation fails. Począwszy od .NET Framework 4.6.2, ASP.NET ułatwia lokalizowanie komunikatów o błędach.Starting with the .NET Framework 4.6.2, ASP.NET makes it easy to localize error messages. Komunikaty o błędach będą lokalizowane, jeśli:Error messages will be localized if:

  1. ValidationAttribute.ErrorMessage podano w atrybucie walidacji.The ValidationAttribute.ErrorMessage is provided in the validation attribute.

  2. Plik zasobów jest przechowywany w folderze App_LocalResources.The resource file is stored in the App_LocalResources folder.

  3. Nazwa zlokalizowanego pliku zasobów ma postać DataAnnotation.Localization.{nazwa}.resx, gdzie name jest nazwą kultury w formacie languageCode-Country/regionCode lub languageCode.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. Nazwa klucza zasobu jest ciągiem przypisanym do atrybutu ValidationAttribute.ErrorMessage, a jego wartość jest zlokalizowanym komunikatem o błędzie.The key name of the resource is the string assigned to the ValidationAttribute.ErrorMessage attribute, and its value is the localized error message.

Na przykład następujący atrybut adnotacji danych definiuje domyślną wartość domyślnej kultury dla nieprawidłowej klasyfikacji.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

Następnie można utworzyć plik zasobów, DataAnnotation. lokalizacja. fr. resx, którego kluczem jest ciąg komunikatu o błędzie i którego wartość jest zlokalizowanym komunikatem o błędzie.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. Plik musi znajdować się w folderze App.LocalResources.The file must be found in the App.LocalResources folder. Na przykład poniżej znajduje się klucz i jego wartość w zlokalizowanym komunikacie o błędzie języka francuskiego (fr):For example, the following is the key and its value in a localized French (fr) language error message:

NazwaName WartośćValue
Klasyfikacja musi zawierać się w przedziale od 1 do 10.The rating must be between 1 and 10. La uwagi doit être obejmuje Entre 1 et 10.La note doit être comprise entre 1 et 10.

Ponadto lokalizacja adnotacji danych jest rozszerzalna.In addition, data annotation localization is extensible. Deweloperzy mogą podłączyć własnego dostawcę parametrów, implementując interfejs IStringLocalizerProvider w celu przechowywania ciągu lokalizacji w innym miejscu niż w pliku zasobów.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.

Obsługa asynchroniczna z dostawcami magazynu stanów sesjiAsync support with session-state store providers

ASP.NET teraz zezwala na używanie metod zwracających zadania z dostawcami magazynu stanów sesji, co umożliwia aplikacjom ASP.NET uzyskanie korzyści z skalowalności asynchronicznej.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. Aby obsługiwał operacje asynchroniczne z dostawcami magazynu stanów sesji, ASP.NET obejmuje nowy interfejs, System.Web.SessionState.ISessionStateModule, który dziedziczy po IHttpModule i umożliwia deweloperom implementację własnych modułów stanu sesji i dostawców magazynu sesji asynchronicznych.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. Interfejs jest zdefiniowany w następujący sposób: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

Ponadto Klasa SessionStateUtility obejmuje dwie nowe metody, IsSessionStateReadOnly i IsSessionStateRequired, które mogą być używane do obsługi operacji asynchronicznych.In addition, the SessionStateUtility class includes two new methods, IsSessionStateReadOnly and IsSessionStateRequired, that can be used to support asynchronous operations.

Obsługa asynchronicznych dostawców pamięci podręcznejAsync support for output-cache providers

Począwszy od .NET Framework 4.6.2, metody zwracające zadania mogą być używane z dostawcami pamięci podręcznej danych wyjściowych w celu zapewnienia skalowalności w systemie.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. Dostawcy implementujący te metody redukują blokowanie wątków na serwerze sieci Web i zwiększają skalowalność usługi ASP.NET.Providers that implement these methods reduce thread-blocking on a web server and improve the scalability of an ASP.NET service.

Dodano następujące interfejsy API obsługujące asynchroniczne dostawcy pamięci podręcznej danych wyjściowych:The following APIs have been added to support asynchronous output-cache providers:

Kategorie znakówCharacter categories

Znaki w .NET Framework 4.6.2 są klasyfikowane na podstawie standardu Unicode w wersji 8.0.0.Characters in the .NET Framework 4.6.2 are classified based on the Unicode Standard, Version 8.0.0. W .NET Framework 4,6 i .NET Framework 4.6.1, znaki zostały sklasyfikowane w oparciu o kategorie znaków Unicode 6,3.In .NET Framework 4.6 and .NET Framework 4.6.1, characters were classified based on Unicode 6.3 character categories.

Obsługa standardu Unicode 8,0 jest ograniczona do klasyfikacji znaków przez klasę CharUnicodeInfo i do typów i metod, które są od niego zależne.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. Obejmują one klasę StringInfo, przeciążoną metodę Char.GetUnicodeCategory i klasy znaków rozpoznawane przez aparat wyrażeń regularnych .NET Framework.These include the StringInfo class, the overloaded Char.GetUnicodeCategory method, and the character classes recognized by the .NET Framework regular expression engine. Ta zmiana nie ma wpływ na porównanie znaków i ciągów, a także w systemach Windows 7 — w przypadku danych znakowych dostarczonych przez .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.

Zmiany w kategoriach znakowych z Unicode 6,0 na Unicode 7,0 można znaleźć w standardzie Unicode w wersji 7.0.0 w witrynie internetowej konsorcjum 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. Aby uzyskać zmiany z Unicode 7,0 na Unicode 8,0, zobacz standard Unicode w wersji 8.0.0 w witrynie sieci Web programu 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.

CryptographyCryptography

Obsługa certyfikatów x509 zawierających FIPS 186-3 DSASupport for X509 certificates containing FIPS 186-3 DSA

.NET Framework 4.6.2 dodaje obsługę dla certyfikatów x509 (algorytm podpisu cyfrowego), których klucze przekraczają limit FIPS 186-2 1024-bitowy.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.

Oprócz obsługi większych rozmiarów standardu FIPS 186-3 .NET Framework 4.6.2 umożliwia obliczanie sygnatur przy użyciu rodziny SHA-2 algorytmów wyznaczania wartości skrótu (SHA256, SHA384 i 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). Obsługa standardu FIPS 186-3 jest zapewniana przez nową klasę System.Security.Cryptography.DSACng.FIPS 186-3 support is provided by the new System.Security.Cryptography.DSACng class.

W przypadku niedawnej zmiany klasy RSA w .NET Framework 4,6 i klasie ECDsa w .NET Framework 4.6.1, abstrakcyjna klasa bazowa DSA w .NET Framework 4.6.2 ma dodatkowe metody umożliwiające wywołujących używanie tej funkcji bez rzutowania.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. Można wywołać metodę rozszerzenia DSACertificateExtensions.GetDSAPrivateKey, aby podpisać dane, jak pokazano w poniższym przykładzie.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

Można też wywołać metodę rozszerzenia DSACertificateExtensions.GetDSAPublicKey, aby zweryfikować podpisane dane, jak pokazano w poniższym przykładzie.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

Zwiększono przejrzystość danych wejściowych procedur wyprowadzania klucza ECDiffieHellmanIncreased clarity for inputs to ECDiffieHellman key derivation routines

.NET Framework 3,5 dodano obsługę dla uzgadniania klucza diff-Hellmana z trzema różnymi procedurami funkcji wyprowadzania klucza (KDF)..NET Framework 3.5 added support for Elliptic Curve Diffie-Hellman Key Agreement with three different Key Derivation Function (KDF) routines. Dane wejściowe procedur i same procedury, zostały skonfigurowane za pomocą właściwości w obiekcie ECDiffieHellmanCng.The inputs to the routines, and the routines themselves, were configured via properties on the ECDiffieHellmanCng object. Jednak ponieważ nie każda procedura odczytuje każdą właściwość wejściową, istniało bardzo dużo miejsca do mylenia w przeszłości deweloperów.But since not every routine read every input property, there was ample room for confusion on the past of the developer.

Aby rozwiązać ten wpływ na .NET Framework 4.6.2, do klasy podstawowej ECDiffieHellman dodano następujące trzy metody, aby dokładniej przedstawić te procedury KDF i ich dane wejściowe: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:

ECDiffieHellman, MetodaECDiffieHellman method OpisDescription
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[]) Dziedziczy materiał klucza przy użyciu formułyDerives 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)

gdzie x jest obliczanym wynikiem algorytmu Diffie-Hellmana.where x is the computed result of the EC Diffie-Hellman algorithm.
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[]) Dziedziczy materiał klucza przy użyciu formułyDerives 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)

gdzie x jest obliczanym wynikiem algorytmu Diffie-Hellmana.where x is the computed result of the EC Diffie-Hellman algorithm.
DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[]) Jest to kluczowy materiał przy użyciu algorytmu wyznaczania wartościowo-Random protokołu TLS (PRF).Derives key material using the TLS pseudo-random function (PRF) derivation algorithm.

Obsługa szyfrowania symetrycznego kluczaSupport for persisted-key symmetric encryption

Biblioteka kryptografii systemu Windows (CNG) dodaliśmy obsługę przechowywania utrwalonych kluczy symetrycznych i używania kluczy symetrycznych przechowywanych sprzętowo, a .NET Framework 4.6.2, że deweloperzy mogą korzystać z tej funkcji.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. Ponieważ pojęcie nazw kluczy i dostawców kluczy jest specyficzne dla implementacji, korzystanie z tej funkcji wymaga użycia konstruktora konkretnych typów implementacji zamiast preferowanego podejścia do fabryki (na przykład wywołania 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).

Obsługa szyfrowania symetrycznego klucza istnieje dla algorytmów AES (AesCng) i 3DES (TripleDESCng).Persisted-key symmetric encryption support exists for the AES (AesCng) and 3DES (TripleDESCng) algorithms. Na przykład: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

SignedXml obsługa tworzenia skrótów SHA-2SignedXml support for SHA-2 hashing

.NET Framework 4.6.2 dodaje obsługę do klasy SignedXml dla RSA-SHA256, RSA-SHA384, i RSA-SHA512 PKCS # 1, a SHA256, SHA384 i SHA512 algorytmów Digest Reference.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.

Stałe dla identyfikatora URI są uwidocznione na SignedXml:The URI constants are all exposed on SignedXml:

Pole SignedXmlSignedXml field StałaConstant
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"

Wszystkie programy, w przypadku których zarejestrowano niestandardową procedurę obsługi SignatureDescription do CryptoConfig w celu dodania obsługi tych algorytmów, będą nadal działać tak jak w przeszłości, ale ponieważ teraz istnieją wartości domyślne platformy, rejestracja CryptoConfig nie jest już potrzebna.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

.NET Framework Dostawca danych dla SQL Server (System.Data.SqlClient) obejmuje następujące nowe funkcje w .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:

Buforowanie i limity czasu połączeń z bazami danych Azure SQLConnection pooling and timeouts with Azure SQL databases

Po włączeniu puli połączeń i przekroczeniu limitu czasu lub innego błędu logowania, wyjątek jest buforowany i zostanie zgłoszony wyjątek buforowany dla każdej kolejnej próby połączenia przez następne 5 sekund do 1 minuty.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. Aby uzyskać więcej informacji, zobacz SQL Servering pooling (ADO.NET).For more details, see SQL Server Connection Pooling (ADO.NET).

To zachowanie nie jest pożądane podczas łączenia się z bazami danych Azure SQL, ponieważ próby połączenia mogą zakończyć się niepowodzeniem z błędami przejściowymi, które są zwykle przywracane szybko.This behavior is not desirable when connecting to Azure SQL Databases, since connection attempts can fail with transient errors that are typically recovered quickly. Aby lepiej zoptymalizować środowisko ponownej próby połączenia, zachowanie w okresie blokowania puli połączeń zostanie usunięte w przypadku niepowodzenia połączeń z bazami danych SQL Azure.To better optimize the connection retry experience, the connection pool blocking period behavior is removed when connections to Azure SQL Databases fail.

Dodanie nowego słowa kluczowego PoolBlockingPeriod umożliwia wybranie okresu blokowania najlepiej dopasowanego do Twojej aplikacji.The addition of the new PoolBlockingPeriod keyword lets you to select the blocking period best suited for your app. Dostępne są następujące wartości:Values include:

Auto

Okres blokowania puli połączeń dla aplikacji, która łączy się z Azure SQL Database, jest wyłączony, a okres blokowania puli połączeń dla aplikacji łączącej się z jakimkolwiek innym wystąpieniem SQL Server jest włączony.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. Jest to wartość domyślna.This is the default value. Jeśli nazwa punktu końcowego serwera zostanie zakończona z dowolnego z poniższych, są one uznawane za bazy danych SQL 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

Okres blokowania puli połączeń jest zawsze włączony.The connection pool blocking period is always enabled.

NeverBlock

Okres blokowania puli połączeń jest zawsze wyłączony.The connection pool blocking period is always disabled.

Ulepszenia dla Always EncryptedEnhancements for Always Encrypted

Klient SQL wprowadza dwa ulepszenia dla Always Encrypted:SQLClient introduces two enhancements for Always Encrypted:

  • Aby poprawić wydajność zapytań parametrycznych względem kolumn zaszyfrowanych baz danych, metadane szyfrowania dla parametrów zapytania są teraz buforowane.To improve performance of parameterized queries against encrypted database columns, encryption metadata for query parameters is now cached. Właściwość SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled ustawiona na true (która jest wartością domyślną), jeśli to samo zapytanie jest wywoływane wielokrotnie, Klient pobiera metadane parametrów z serwera tylko raz.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.

  • Wpisy kluczy szyfrowania kolumn w pamięci podręcznej kluczy są teraz wykluczone po konfigurowalnym przedziale czasu, ustawiane za pomocą właściwości 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

W .NET Framework 4.6.2 Windows Communication Foundation została ulepszona w następujących obszarach:In the .NET Framework 4.6.2, Windows Communication Foundation has been enhanced in the following areas:

Obsługa zabezpieczeń transportu WCF dla certyfikatów przechowywanych przy użyciu CNGWCF transport security support for certificates stored using CNG

Zabezpieczenia transportu WCF obsługują certyfikaty przechowywane przy użyciu biblioteki kryptografii systemu Windows (CNG).WCF transport security supports certificates stored using the Windows cryptography library (CNG). W .NET Framework 4.6.2 ta obsługa jest ograniczona do używania certyfikatów z kluczem publicznym, który ma wykładnik nie więcej niż 32 bitów.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. Gdy aplikacja jest przeznaczona dla .NET Framework 4.6.2, ta funkcja jest domyślnie włączona.When an application targets the .NET Framework 4.6.2, this feature is on by default.

W przypadku aplikacji, które są przeznaczone dla .NET Framework 4.6.1 i starszych, ale są uruchomione na .NET Framework 4.6.2, tę funkcję można włączyć, dodając następujący wiersz do sekcji <runtime > pliku App. config lub 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"
/>

Można to również zrobić programowo przy użyciu kodu, takiego jak następujące: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)

Lepsza obsługa wielu reguł korekty czasu letniego przez klasę Klasa DataContractJsonSerializerBetter support for multiple daylight saving time adjustment rules by the DataContractJsonSerializer class

Klienci mogą używać ustawienia konfiguracji aplikacji, aby określić, czy Klasa DataContractJsonSerializer obsługuje wiele reguł korekty dla jednej strefy czasowej.Customers can use an application configuration setting to determine whether the DataContractJsonSerializer class supports multiple adjustment rules for a single time zone. Jest to funkcja opcjonalna.This is an opt-in feature. Aby ją włączyć, Dodaj następujące ustawienie do pliku App. config:To enable it, add the following setting to your app.config file:

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

Gdy ta funkcja jest włączona, obiekt DataContractJsonSerializer używa typu TimeZoneInfo zamiast typu TimeZone do deserializacji danych daty i godziny.When this feature is enabled, a DataContractJsonSerializer object uses the TimeZoneInfo type instead of the TimeZone type to deserialize date and time data. TimeZoneInfo obsługuje wiele reguł korygowania, co umożliwia współpracę z danymi strefy czasowej historycznej; TimeZone nie.TimeZoneInfo supports multiple adjustment rules, which makes it possible to work with historic time zone data; TimeZone does not.

Aby uzyskać więcej informacji na temat struktury TimeZoneInfo i dostosowań strefy czasowej, zobacz Omówienie strefy czasowej.For more information on the TimeZoneInfo structure and time zone adjustments, see Time Zone Overview.

NetNamedPipeBinding najlepsze dopasowanieNetNamedPipeBinding best match

Funkcja WCF ma nowe ustawienie aplikacji, które można ustawić w aplikacjach klienckich, aby upewnić się, że zawsze łączą się z usługą nasłuchiwanie na identyfikatorze URI, który najlepiej pasuje do tego, który z nich żąda.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. Gdy to ustawienie aplikacji ma wartość false (ustawienie domyślne), możliwe jest, aby klienci korzystający z NetNamedPipeBinding próbowały nawiązać połączenie z usługą nasłuchiwania na identyfikatorze URI, który jest podciągiem żądanego identyfikatora URI.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.

Na przykład klient próbuje nawiązać połączenie z usługą nasłuchiwania przy net.pipe://localhost/Service1, ale inna usługa na tym komputerze z uprawnieniami administratora nasłuchuje w 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. Gdy to ustawienie aplikacji ma wartość false, klient podejmie próbę nawiązania połączenia z niewłaściwą usługą.With this app setting set to false, the client would attempt to connect to the wrong service. Po ustawieniu ustawienia aplikacji na true klient zawsze będzie łączył się z najlepszą zgodną usługą.After setting the app setting to true, the client will always connect to the best matching service.

Uwaga

Klienci korzystający z programu NetNamedPipeBinding Znajdź usługi oparte na adresie podstawowym usługi (jeśli istnieje), a nie pełny adres punktu końcowego.Clients using NetNamedPipeBinding find services based on the service's base address (if it exists) rather than the full endpoint address. Aby zapewnić, że to ustawienie zawsze działa, usługa powinna używać unikatowego adresu podstawowego.To ensure this setting always works the service should use a unique base address.

Aby włączyć tę zmianę, Dodaj następujące ustawienie aplikacji do pliku App. config lub Web. config aplikacji klienckiej: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 nie jest protokołem domyślnymSSL 3.0 is not a default protocol

W przypadku korzystania z NetTcp z zabezpieczeniami transportu i typem poświadczeń certyfikatu protokół SSL 3,0 nie jest już domyślnym protokołem używanym do negocjowania bezpiecznego połączenia.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. W większości przypadków nie ma to wpływu na istniejące aplikacje, ponieważ protokół TLS 1,0 jest uwzględniony na liście protokołów dla NetTcp.In most cases, there should be no impact to existing apps, because TLS 1.0 is included in the protocol list for NetTcp. Wszyscy istniejący klienci powinni mieć możliwość negocjowania połączenia przy użyciu co najmniej protokołu TLS 1,0.All existing clients should be able to negotiate a connection using at least TLS 1.0. Jeśli Ssl3 jest wymagany, użyj jednego z poniższych mechanizmów konfiguracji, aby dodać go do listy protokołów negocjowanych.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)

W .NET Framework 4.6.2 Windows Presentation Foundation została ulepszona w następujących obszarach:In the .NET Framework 4.6.2, Windows Presentation Foundation has been enhanced in the following areas:

Sortowanie grupGroup sorting

Aplikacja, która używa obiektu CollectionView do grupowania danych, może teraz jawnie zadeklarować sposób sortowania grup.An application that uses a CollectionView object to group data can now explicitly declare how to sort the groups. Jawne sortowanie dotyczy problemu nieintuicyjnej kolejności, która występuje, gdy aplikacja dynamicznie dodaje lub usuwa grupy, lub gdy zmienia wartość właściwości elementu w grupowaniu.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. Może również zwiększyć wydajność procesu tworzenia grupy przez przeniesienie porównań właściwości grupowania z sortowania pełnej kolekcji do sortowania grup.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.

Aby można było obsłużyć sortowanie grup, nowe właściwości GroupDescription.SortDescriptions i GroupDescription.CustomSort opisują sposób sortowania kolekcji grup utworzonych przez obiekt 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. Jest to analogiczne do sposobu, w jaki właściwości ListCollectionView o identycznej nazwie opisują sposób sortowania elementów danych.This is analogous to the way the identically named ListCollectionView properties describe how to sort the data items.

Dwie nowe właściwości statyczne klasy PropertyGroupDescription, CompareNameAscending i CompareNameDescendingmogą być używane dla najczęstszych przypadków.Two new static properties of the PropertyGroupDescription class, CompareNameAscending and CompareNameDescending, can be used for the most common cases.

Na przykład poniższe dane grup XAML są uporządkowane według wieku, sortowania grupy wiekowe w kolejności rosnącej oraz grupowania elementów w każdej grupie wiekowej według nazwiska.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>

Obsługa klawiatury miękkiejSoft keyboard support

Obsługa klawiatury miękkiej umożliwia śledzenie fokusu w aplikacjach WPF przez automatyczne wywoływanie i odrzucanie nowej miękkiej klawiatury w systemie Windows 10, gdy dane wejściowe dotyku są odbierane przez kontrolkę, która może przyjmować tekst.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.

W poprzednich wersjach .NET Framework aplikacje WPF nie mogą należeć do śledzenia fokusu bez wyłączania obsługi gestu pióra WPF/dotknięcia.In previous versions of the .NET Framework, WPF applications cannot opt into the focus tracking without disabling WPF pen/touch gesture support. W efekcie aplikacje WPF muszą wybierać między pełną obsługą technologii WPF touch lub korzystać z promocji myszy systemu Windows.As a result, WPF applications must choose between full WPF touch support or rely on Windows mouse promotion.

DPI na monitorPer-monitor DPI

Aby obsłużyć najnowsze rozprzestrzenianie środowisk o wysokiej rozdzielczości DPI i hybrydowych DPI dla aplikacji WPF, WPF w .NET Framework 4.6.2 umożliwia świadomość poszczególnych monitorów.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. Zapoznaj się z przykładami i przewodnikiem dewelopera w witrynie GitHub, aby uzyskać więcej informacji na temat sposobu włączania aplikacji platformy WPF do monitorowania według rozdzielczości DPI.See the samples and developer guide on GitHub for more information about how to enable your WPF app to become per-monitor DPI aware.

We wcześniejszych wersjach .NET Framework aplikacje WPF są oparte na systemie DPI.In previous versions of the .NET Framework, WPF apps are system-DPI aware. Innymi słowy, interfejs użytkownika aplikacji jest skalowany w odpowiednim systemie operacyjnym, w zależności od wartości DPI monitora, na którym jest renderowana aplikacja.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. ,,

W przypadku aplikacji uruchamianych w .NET Framework 4.6.2 można wyłączyć zmiany DPI dla poszczególnych monitorów w aplikacjach WPF przez dodanie instrukcji konfiguracji do sekcji <runtime > pliku konfiguracyjnego aplikacji w następujący sposób: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>

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

W .NET Framework 4.6.2 Windows Workflow Foundation został ulepszony w następującym obszarze:In the .NET Framework 4.6.2, Windows Workflow Foundation has been enhanced in the following area:

Obsługa C# wyrażeń i technologii IntelliSense w rehostowanym projektancie WFSupport for C# expressions and IntelliSense in the Re-hosted WF Designer

Począwszy od .NET Framework 4,5, WF obsługuje C# wyrażenia zarówno w projektancie programu Visual Studio, jak i w przepływach pracy w kodzie.Starting with the .NET Framework 4.5, WF supports C# expressions in both the Visual Studio Designer and in code workflows. Rehostowana Projektant przepływu pracy to kluczowa funkcja WF, która umożliwia Projektant przepływu pracy do aplikacji poza programem Visual Studio (na przykład w WPF).The Re-hosted Workflow Designer is a key feature of WF that allows for the Workflow Designer to be in an application outside Visual Studio (for example, in WPF). Windows Workflow Foundation oferuje możliwość obsługi C# wyrażeń i technologii IntelliSense w przypadku ponownego hostowanej Projektant przepływu pracy.Windows Workflow Foundation provides the ability to support C# expressions and IntelliSense in the Re-hosted Workflow Designer. Aby uzyskać więcej informacji, zapoznaj się z blogiem 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 w wersjach .NET Framework przed .NET Framework 4.6.2, funkcja IntelliSense projektanta WF jest uszkodzona, gdy klient odbudowuje projekt przepływu pracy z programu 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. Gdy kompilacja projektu zakończy się pomyślnie, typy przepływu pracy nie są dostępne w projektancie, a w oknie Lista błędów są wyświetlane ostrzeżenia z funkcji IntelliSense dotyczące brakujących typów przepływów pracy.While the project build is successful, the workflow types are not found on the designer, and warnings from IntelliSense for the missing workflow types appear in the Error List window. .NET Framework 4.6.2 rozwiązuje ten problem i udostępnia funkcję IntelliSense.The .NET Framework 4.6.2 addresses this issue and makes IntelliSense available.

Aplikacje w wersji 1 z funkcją śledzenia przepływu pracy na teraz działaniu w trybie FIPSWorkflow V1 applications with Workflow Tracking on now run under FIPS-mode

Maszyny z włączonym trybem zgodności ze standardem FIPS mogą teraz pomyślnie uruchomić aplikację w stylu w wersji 1 z funkcją śledzenia przepływu pracy.Machines with FIPS Compliance Mode enabled can now successfully run a workflow Version 1-style application with Workflow tracking on. Aby włączyć ten scenariusz, należy wprowadzić następujące zmiany w pliku App. config:To enable this scenario, you must make the following change to your app.config file:

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

Jeśli ten scenariusz nie jest włączony, uruchomienie aplikacji w dalszym ciągu generuje wyjątek z komunikatem "Ta implementacja nie jest częścią zgodnych algorytmów kryptograficznych FIPS platformy 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."

Udoskonalenia przepływu pracy podczas korzystania z aktualizacji dynamicznej w programie Visual Studio Projektant przepływu pracyWorkflow Improvements when using Dynamic Update with Visual Studio Workflow Designer

Projektant przepływu pracy, Projektant działań FlowChart oraz inne Projektanci działań przepływu pracy pomyślnie ładują i wyświetlają przepływy pracy, które zostały zapisane po wywołaniu metody 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. W wersjach .NET Framework przed .NET Framework 4.6.2, ładowanie pliku XAML w programie Visual Studio dla przepływu pracy, który został zapisany po wywołaniu DynamicUpdateServices.PrepareForUpdate może spowodować następujące problemy: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:

  • Projektant przepływu pracy nie może poprawnie załadować pliku XAML (gdy ViewStateData.Id znajduje się na końcu wiersza).The Workflow Designer can't load the XAML file correctly (when the ViewStateData.Id is at the end of the line).

  • Projektant działań Flowchart lub inny przepływ pracy może wyświetlać wszystkie obiekty w ich domyślnych lokalizacjach, w przeciwieństwie do wartości właściwości dołączony.Flowchart Activity Designer or other Workflow Activity Designers may display all objects in their default locations as opposed to attached property values.

ClickOnceClickOnce

Program ClickOnce został zaktualizowany do obsługi protokołów TLS 1,1 i TLS 1,2 oprócz protokołu 1,0, który jest już obsługiwany.ClickOnce has been updated to support TLS 1.1 and TLS 1.2 in addition to the 1.0 protocol, which it already supports. Technologia ClickOnce automatycznie wykrywa wymagany protokół; Aby włączyć obsługę protokołu TLS 1,1 i 1,2, nie są wymagane żadne dodatkowe kroki w aplikacji ClickOnce.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.

Konwertowanie aplikacji Windows Forms i WPF na aplikacje platformy UWPConverting Windows Forms and WPF apps to UWP apps

System Windows oferuje teraz możliwości przenoszenia istniejących aplikacji klasycznych systemu Windows, w tym aplikacji WPF i Windows Forms, do platforma uniwersalna systemu Windows (platformy UWP).Windows now offers capabilities to bring existing Windows desktop apps, including WPF and Windows Forms apps, to the Universal Windows Platform (UWP). Ta technologia działa jako most, dzięki czemu można stopniowo migrować istniejącą bazę kodu do platformy UWP, dzięki czemu aplikacja jest przenoszona na wszystkie urządzenia z systemem 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.

Skonwertowane aplikacje klasyczne uzyskują tożsamość aplikacji podobną do tożsamości aplikacji platformy UWP, dzięki czemu interfejsy API platformy UWP dostępne do włączania funkcji, takich jak kafelki dynamiczne i powiadomienia.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. Aplikacja będzie nadal działać tak jak wcześniej i działała jako aplikacja pełnego zaufania.The app continues to behave as before and runs as a full trust app. Po przekonwertowaniu aplikacji proces kontenera aplikacji można dodać do istniejącego procesu pełnego zaufania, aby dodać do niego interfejs użytkownika adaptacyjnego.Once the app is converted, an app container process can be added to the existing full trust process to add an adaptive user interface. Po przeniesieniu wszystkich funkcji do procesu kontenera aplikacji można usunąć pełny proces zaufania i udostępnić nową aplikację platformy UWP wszystkim urządzeniom z systemem 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.

Ulepszenia debugowaniaDebugging improvements

Niezarządzany interfejs API debugowania został ulepszony w .NET Framework 4.6.2 do wykonania dodatkowej analizy, gdy zostanie zgłoszony NullReferenceException, aby można było określić, która zmienna w jednym wierszu kodu źródłowego jest 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. Aby obsłużyć ten scenariusz, dodano następujące interfejsy API do niezarządzanego interfejsu API debugowania.To support this scenario, the following APIs have been added to the unmanaged debugging API.

Co nowego w .NET Framework 4.6.1What's new in .NET Framework 4.6.1

.NET Framework 4.6.1 zawiera nowe funkcje w następujących obszarach:The .NET Framework 4.6.1 includes new features in the following areas:

Więcej informacji o .NET Framework 4.6.1 można znaleźć w następujących tematach:For more information on the .NET Framework 4.6.1, see the following topics:

Kryptografia: obsługa certyfikatów x509 zawierających ECDSACryptography: Support for X509 certificates containing ECDSA

.NET Framework 4,6 dodano obsługę RSACng dla certyfikatów x509..NET Framework 4.6 added RSACng support for X509 certificates. .NET Framework 4.6.1 dodaje obsługę dla certyfikatów x509 (algorytm podpisu cyfrowego krzywej eliptyczna) ECDSA.The .NET Framework 4.6.1 adds support for ECDSA (Elliptic Curve Digital Signature Algorithm) X509 certificates.

ECDSA zapewnia lepszą wydajność i stanowi bardziej bezpieczny algorytm kryptograficzny niż RSA, zapewniając doskonałe rozwiązanie w zakresie wydajności i skalowalności Transport Layer Security (TLS).ECDSA offers better performance and is a more secure cryptography algorithm than RSA, providing an excellent choice where Transport Layer Security (TLS) performance and scalability is a concern. Implementacja .NET Framework zawija wywołania do istniejących funkcji systemu Windows.The .NET Framework implementation wraps calls into existing Windows functionality.

Poniższy przykładowy kod pokazuje, jak łatwo jest wygenerować sygnaturę strumienia bajtów przy użyciu nowej obsługi certyfikatów x509 ECDSA zawartych w .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

Oferuje to wyróżniony kontrast w kodzie wymaganym do wygenerowania podpisu w .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

Do ADO.NET zostały dodane następujące elementy:The following have been added to ADO.NET:

Obsługa Always Encrypted kluczy chronionych sprzętemAlways Encrypted support for hardware protected keys

ADO.NET obsługuje teraz przechowywanie kluczy głównych kolumn Always Encrypted w sprzętowych modułach zabezpieczeń (sprzętowych modułów zabezpieczeń).ADO.NET now supports storing Always Encrypted column master keys natively in Hardware Security Modules (HSMs). Dzięki temu klientom można korzystać z kluczy asymetrycznych przechowywanych w sprzętowych modułów zabezpieczeń bez konieczności pisania dostawców magazynu kluczy niestandardowych i rejestrowania ich w aplikacjach.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.

Klienci muszą zainstalować dostawcę usług kryptograficznych dostarczonych przez dostawcę modułu HSM lub dostawców magazynu kluczy CNG na serwerach aplikacji lub komputerach klienckich w celu uzyskania dostępu do danych Always Encrypted chronionych przy użyciu kluczy głównych kolumn przechowywanych w module HSM.Customers need to install the HSM vendor-provided CSP provider or CNG key store providers on the app servers or client computers in order to access Always Encrypted data protected with column master keys stored in a HSM.

Ulepszone zachowanie MultiSubnetFailover połączenia dla funkcji AlwaysOnImproved MultiSubnetFailover connection behavior for AlwaysOn

Klient SqlClient teraz automatycznie zapewnia szybsze połączenia z grupą dostępności AlwaysOn (AG).SqlClient now automatically provides faster connections to an AlwaysOn Availability Group (AG). W sposób niewidoczny dla użytkownika wykryje, czy aplikacja nawiązuje połączenie z grupą dostępności AlwaysOn (AG) w innej podsieci, i szybko odnajduje bieżący aktywny serwer i zapewnia połączenie z serwerem.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. Przed tą wersją aplikacja wymagała ustawienia parametrów połączenia w celu uwzględnienia "MultisubnetFailover=true" w celu wskazania, że nastąpiło połączenie z grupą dostępności 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. Bez ustawienia słowa kluczowego połączenia do true w przypadku nawiązywania połączenia z grupą dostępności zawsze może wystąpić limit czasu aplikacji.Without setting the connection keyword to true, an application might experience a timeout while connecting to an AlwaysOn Availability Group. W tej wersji aplikacja nie musi ustawiać MultiSubnetFailover, aby true.With this release, an application does not need to set MultiSubnetFailover to true anymore. Aby uzyskać więcej informacji na temat obsługi klienta z zawsze włączonymi grupami dostępności, zobacz temat Obsługa klienta w przypadku wysokiej dostępności i odzyskiwania po awarii.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 obejmuje wiele udoskonaleń i zmian.Windows Presentation Foundation includes a number of improvements and changes.

Zwiększona wydajnośćImproved performance

Opóźnienie w przypadku uruchamiania zdarzeń Touch zostało rozwiązane w .NET Framework 4.6.1.The delay in firing touch events has been fixed in the .NET Framework 4.6.1. Ponadto wpisywanie kontrolki RichTextBox nie powoduje już powiązania wątku renderowania podczas szybkiego wprowadzania danych.In addition, typing in a RichTextBox control no longer ties up the render thread during fast input.

Ulepszenia sprawdzania pisowniSpell checking improvements

Moduł sprawdzania pisowni w programie WPF został zaktualizowany w Windows 8.1 i nowszych wersjach, aby można było korzystać z obsługi systemu operacyjnego w przypadku dodatkowych języków sprawdzania pisowni.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. Nie wprowadzono zmian w wersjach systemu Windows starszych niż Windows 8.1.There is no change in functionality on Windows versions prior to Windows 8.1.

Podobnie jak w poprzednich wersjach .NET Framework, język dla bloku TextBox sterowania ora RichTextBox jest wykrywany przez wyszukiwanie informacji w następującej kolejności: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, jeśli jest obecny.xml:lang, if it is present.

  • Bieżący język wejściowy.Current input language.

  • Bieżąca kultura wątku.Current thread culture.

Aby uzyskać dodatkowe informacje na temat obsługi języków w programie WPF, zobacz wpis w blogu WPF w witrynie .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.

Dodatkowa obsługa słowników niestandardowych dla poszczególnych użytkownikówAdditional support for per-user custom dictionaries

W .NET Framework 4.6.1, WPF rozpoznaje niestandardowe słowniki, które są rejestrowane globalnie.In .NET Framework 4.6.1, WPF recognizes custom dictionaries that are registered globally. Ta funkcja jest dostępna oprócz możliwości zarejestrowania ich na kontrolę.This capability is available in addition to the ability to register them per-control.

We wcześniejszych wersjach programu WPF Słowniki niestandardowe nie rozpoznają wykluczonych słów i list Autokorekty.In previous versions of WPF, custom dictionaries did not recognize Excluded Words and AutoCorrect lists. Są one obsługiwane w Windows 8.1 i Windows 10 za pomocą plików, które można umieścić w katalogu %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. Do tych plików mają zastosowanie następujące reguły:The following rules apply to these files:

  • Pliki powinny mieć rozszerzenia. dic (dla dodanych wyrazów),. wyłączne (dla wykluczonych słów) lub ACL (na potrzeby funkcji Autokorekta).The files should have extensions of .dic (for added words), .exc (for excluded words), or .acl (for AutoCorrect).

  • Pliki powinny zawierać tekst w formacie UTF-16, zaczynający się od znaku kolejności bajtów (BOM).The files should be UTF-16 LE plaintext that starts with the Byte Order Mark (BOM).

  • Każdy wiersz powinien zawierać słowo (na dodanych i wykluczonych listach wyrazów) lub parę Autokorekta z wyrazami rozdzielonymi pionowym paskiem ("|") (na liście Autokorekta wyrazów).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).

  • Te pliki są uznawane za tylko do odczytu i nie są modyfikowane przez system.These files are considered read-only and are not modified by the system.

Uwaga

Te nowe formaty plików nie są bezpośrednio obsługiwane przez interfejsy API sprawdzania pisowni WPF, a Słowniki niestandardowe dostarczane do WPF w aplikacjach powinny nadal używać plików. 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.

PrzykładySamples

Istnieje kilka przykładów WPF w repozytorium GitHub Microsoft/WPF-Samples .There are a number of WPF samples on the Microsoft/WPF-Samples GitHub repository. Pomóż nam ulepszyć nasze przykłady, wysyłając do nas żądanie ściągnięcia lub otwierając problem usługi GitHub.Help us improve our samples by sending us a pull-request or opening a GitHub issue.

Rozszerzenia DirectXDirectX extensions

WPF zawiera pakiet NuGet , który udostępnia nowe implementacje D3DImage, które ułatwiają współpracę z zawartością DX10 i 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. Kod dla tego pakietu został otwarty jako źródło i jest dostępny w serwisie GitHub.The code for this package has been open sourced and is available on GitHub.

Windows Workflow Foundation: transakcjeWindows Workflow Foundation: Transactions

Metoda Transaction.EnlistPromotableSinglePhase może teraz korzystać z programu Distributed Transaction Manager innego niż MSDTC, aby podwyższyć poziom transakcji.The Transaction.EnlistPromotableSinglePhase method can now use a distributed transaction manager other than MSDTC to promote the transaction. W tym celu należy określić identyfikator identyfikatora podwyższania transakcji dla nowego przeciążenia Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid).You do this by specifying a GUID transaction promoter identifier to the new Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overload . W przypadku pomyślnego wykonania tej operacji istnieją ograniczenia dotyczące możliwości transakcji.If this operation is successful, there are limitations placed on the capabilities of the transaction. Po zapisaniu podwyższania poziomu usługi MSDTC następujące metody zwracają TransactionPromotionException, ponieważ te metody wymagają podwyższania poziomu do usługi MSDTC:Once a non-MSDTC transaction promoter is enlisted, the following methods throw a TransactionPromotionException because these methods require promotion to MSDTC:

Po zapisaniu podwyższania poziomu usługi MSDTC należy go używać na potrzeby przyszłych trwałych rejestracji przy użyciu protokołów, które definiuje.Once a non-MSDTC transaction promoter is enlisted, it must be used for future durable enlistments by using protocols that it defines. Guid podwyższania poziomu transakcji można uzyskać za pomocą właściwości PromoterType.The Guid of the transaction promoter can be obtained by using the PromoterType property. Gdy transakcja promuje, podwyższanie poziomu transakcji zapewnia tablicę Byte, która reprezentuje podwyższony token.When the transaction promotes, the transaction promoter provides a Byte array that represents the promoted token. Aplikacja może uzyskać podwyższony token dla transakcji, która nie jest podwyższana dla usługi MSDTC, za pomocą metody GetPromotedToken.An application can obtain the promoted token for a non-MSDTC promoted transaction with the GetPromotedToken method.

Użytkownicy nowego przeciążenia Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) muszą wykonać określoną sekwencję wywołań, aby można było pomyślnie ukończyć operację podwyższania poziomu.Users of the new Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification, Guid) overload must follow a specific call sequence in order for the promotion operation to complete successfully. Te reguły są udokumentowane w dokumentacji metody.These rules are documented in the method's documentation.

ProfilowanieProfiling

Niezarządzany interfejs API profilowania został ulepszony w następujący sposób:The unmanaged profiling API has been enhanced as follows:

  • Lepsza obsługa dostępu do plików PDB w interfejsie ICorProfilerInfo7 .Better support for accessing PDBs in the ICorProfilerInfo7 interface.

    W ASP.NET Core staje się znacznie bardziej powszechny dla zestawów do skompilowania w pamięci przez Roslyn.In ASP.NET Core, it is becoming much more common for assemblies to be compiled in-memory by Roslyn. W przypadku deweloperów tworzących narzędzia profilowania oznacza to, że nie można już wyplików PDB, że na dysku mogły być serializowane historyczne.For developers making profiling tools, this means that PDBs that historically were serialized on disk may no longer be present. Narzędzia profilera często używają plików PDB do mapowania kodu z powrotem do wierszy źródłowych dla zadań, takich jak pokrycie kodu lub analiza wydajności linia po wierszu.Profiler tools often use PDBs to map code back to source lines for tasks such as code coverage or line-by-line performance analysis. Interfejs ICorProfilerInfo7 zawiera teraz dwie nowe metody, ICorProfilerInfo7:: GetInMemorySymbolsLength i ICorProfilerInfo7:: ReadInMemorySymbols, aby udostępnić te narzędzia profilera z dostępem do danych PDB znajdujących się w pamięci. Korzystając z nowych interfejsów API, profiler może uzyskać zawartość PDB w pamięci jako tablicę bajtową, a następnie przetworzyć ją lub serializować do dysku.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.

  • Lepsza Instrumentacja przy użyciu interfejsu ICorProfiler.Better instrumentation with the ICorProfiler interface.

    Profilowani, którzy korzystają z interfejsów API ICorProfiler ReJit funkcję Instrumentacji dynamicznej, mogą teraz modyfikować niektóre metadane.Profilers that are using the ICorProfiler APIs ReJit functionality for dynamic instrumentation can now modify some metadata. Wcześniej takie narzędzia mogły w dowolnej chwili instrumentować IL, ale metadane można modyfikować tylko w czasie ładowania modułu.Previously such tools could instrument IL at any time, but metadata could only be modified at module load time. Ponieważ IL odwołuje się do metadanych, ogranicza to typy instrumentacji, które mogą zostać wykonane.Because IL refers to metadata, this limited the kinds of instrumentation that could be done. Niektóre z tych limitów zostały zniesione przez dodanie metody ICorProfilerInfo7:: ApplyMetaData , aby obsługiwała podzbiór zmian metadanych po załadowaniu modułu, w szczególności przez dodanie nowych AssemblyRef, TypeRef, TypeSpec, MemberRef, MemberSpec i UserString rekordów.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. Ta zmiana zapewnia znacznie szerszy zakres Instrumentacji na bieżąco.This change makes a much broader range of on-the-fly instrumentation possible.

Generator obrazu natywnego (NGEN) plików PDBNative Image Generator (NGEN) PDBs

Śledzenie zdarzeń między maszynami umożliwia klientom profilowanie programu na maszynie A i przyjrzyj się zdarzeniom profilowania z mapowaniem wierszy źródłowych na komputerze B. korzystając z poprzednich wersji .NET Framework, użytkownik skopiuje wszystkie moduły i obrazy natywne z PROFILOWANEGO maszynę z maszyną analizy, która zawiera plik PDB języka IL, aby utworzyć mapowanie źródła do kodu natywnego.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. Chociaż ten proces może działać prawidłowo, gdy pliki są stosunkowo małe, na przykład w przypadku aplikacji na telefon, pliki mogą być bardzo duże w systemach komputerowych i wymagają znaczącego czasu na skopiowanie.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.

Za pomocą narzędzia NGen plików PDB można utworzyć plik PDB zawierający mapowanie IL-to-native bez zależności w pliku PDB IL.With Ngen PDBs, NGen can create a PDB that contains the IL-to-native mapping without a dependency on the IL PDB. W naszym scenariuszu śledzenia zdarzeń między maszynami konieczne jest skopiowanie pliku PDB obrazu natywnego, który jest generowany przez maszynę A na komputerze B i użycie interfejsów API dostępu do interfejsu debugowania w celu odczytania mapowania Source-to-IL języka IL i kodu Il-to-native obrazu natywnego zmianę.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. Połączenie obu mapowań zapewnia mapowanie między źródłami.Combining both mappings provides a source-to-native mapping. Ponieważ plik PDB obrazu natywnego jest znacznie mniejszy niż wszystkie moduły i obrazy natywne, proces kopiowania z maszyny A na maszynę B jest znacznie szybszy.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.

Co nowego w programie .NET 2015What's new in .NET 2015

W programie .NET 2015 wprowadzono .NET Framework 4,6 i .NET Core..NET 2015 introduces the .NET Framework 4.6 and .NET Core. Niektóre nowe funkcje mają zastosowanie do obu i innych funkcji, które są specyficzne dla .NET Framework 4,6 lub .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

    Platforma .NET 2015 zawiera ASP.NET Core, która jest implementacją środowiska .NET Lean do kompilowania nowoczesnych aplikacji opartych na chmurze..NET 2015 includes ASP.NET Core, which is a lean .NET implementation for building modern cloud-based apps. ASP.NET Core jest modułowy, dzięki czemu można uwzględnić tylko te funkcje, które są potrzebne w aplikacji.ASP.NET Core is modular so you can include only those features that are needed in your application. Mogą być hostowane w usługach IIS lub samodzielny w procesie niestandardowym i można uruchamiać aplikacje z różnymi wersjami .NET Framework na tym samym serwerze.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. Obejmuje nowy system konfiguracji środowiska, który jest przeznaczony do wdrożenia w chmurze.It includes a new environment configuration system that is designed for cloud deployment.

    MVC, Web API i Web Pages są ujednolicone w pojedynczą strukturę o nazwie MVC 6.MVC, Web API, and Web Pages are unified into a single framework called MVC 6. Tworzysz ASP.NET Core aplikacje za poorednictwem narzędzi w programie Visual Studio 2015 lub nowszym.You build ASP.NET Core apps through tools in Visual Studio 2015 or later. Twoje istniejące aplikacje będą działały na nowym .NET Framework; Jednak w przypadku kompilowania aplikacji używającej MVC 6 lub sygnalizującego 3 należy użyć systemu projektu w programie Visual Studio 2015 lub nowszym.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.

    Aby uzyskać więcej informacji, zobacz ASP.NET Core.For information, see ASP.NET Core.

  • Aktualizacje ASP.NETASP.NET Updates

    • Interfejs API oparty na zadaniach dla opróżniania odpowiedzi asynchronicznejTask-based API for Asynchronous Response Flushing

      ASP.NET teraz udostępnia prosty interfejs API oparty na zadaniach do opróżniania odpowiedzi asynchronicznych, HttpResponse.FlushAsync, który umożliwia asynchroniczne opróżnianie odpowiedzi przy użyciu obsługi async/await języka.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.

    • Powiązanie modelu obsługuje metody zwracające zadaniaModel binding supports task-returning methods

      W .NET Framework 4,5 ASP.NET dodano funkcję powiązania modelu, która umożliwiła rozszerzalne podejście ukierunkowane na CRUD operacji na danych na stronach formularzy sieci Web i w kontrolkach użytkownika.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. System powiązań modelu obsługuje teraz metody powiązań modelu zwracające Task.The Model Binding system now supports Task-returning model binding methods. Ta funkcja umożliwia deweloperom formularzy sieci Web uzyskanie korzyści z skalowalności asynchronicznej przy użyciu systemu powiązań danych w przypadku używania nowszych wersji programu ORMs, w tym 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.

      Powiązanie modelu asynchronicznego jest kontrolowane przez ustawienie konfiguracji aspnet:EnableAsyncModelBinding.Async model binding is controlled by the aspnet:EnableAsyncModelBinding configuration setting.

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

      W przypadku aplikacji docelowych .NET Framework 4,6 domyślna wartość to true.On apps the target the .NET Framework 4.6, it defaults to true. W przypadku aplikacji uruchomionych na .NET Framework 4,6, które są przeznaczone dla starszej wersji .NET Framework, domyślnie false.On apps running on the .NET Framework 4.6 that target an earlier version of the .NET Framework, it is false by default. Można ją włączyć, ustawiając ustawienie konfiguracji na true.It can be enabled by setting the configuration setting to true.

    • Obsługa protokołu HTTP/2 (system Windows 10)HTTP/2 Support (Windows 10)

      Http/2 to nowa wersja protokołu HTTP, która zapewnia znacznie lepsze wykorzystanie połączenia (mniejszą liczbę operacji rundy między klientem a serwerem), co powoduje załadowanie strony sieci Web o mniejszej opóźnieniu dla użytkowników.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. Strony sieci Web (w przeciwieństwie do usług) korzystają z protokołu HTTP/2, ponieważ protokół optymalizuje dla wielu artefaktów, które są żądane w ramach jednego środowiska.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. Obsługa protokołu HTTP/2 została dodana do ASP.NET w .NET Framework 4,6.HTTP/2 support has been added to ASP.NET in .NET Framework 4.6. Ponieważ funkcjonalność sieci istnieje w wielu warstwach, w systemie Windows w usługach IIS i w programie ASP.NET są wymagane nowe funkcje, które umożliwiają włączenie protokołu 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. Aby używać protokołu HTTP/2 z usługą ASP.NET, musi być uruchomiony system Windows 10.You must be running on Windows 10 to use HTTP/2 with ASP.NET.

      Protokół HTTP/2 jest również obsługiwany i domyślnie włączony w przypadku aplikacji z systemem Windows 10 platforma uniwersalna systemu Windows (platformy UWP), które używają interfejsu 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.

      Aby zapewnić możliwość korzystania z funkcji PUSH_PROMISE w aplikacjach ASP.NET, do klasy HttpResponse dodano nową metodę z dwoma przeciążeń, PushPromise(String) i PushPromise(String, String, NameValueCollection).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.

      Uwaga

      Mimo że ASP.NET Core obsługuje protokół HTTP/2, obsługa funkcji WYPYCHANia PROMISe nie została jeszcze dodana.While ASP.NET Core supports HTTP/2, support for the PUSH PROMISE feature has not yet been added.

      Przeglądarka i serwer sieci Web (usługi IIS w systemie Windows) wykonują wszystkie prace.The browser and the web server (IIS on Windows) do all the work. Nie trzeba wykonywać żadnych dużych ponoszenia zawartości dla użytkowników.You don't have to do any heavy-lifting for your users.

      Większość głównych przeglądarek obsługuje protokół HTTP/2, dlatego prawdopodobnie użytkownicy będą korzystać z obsługi protokołu HTTP/2, jeśli serwer ten obsługuje.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.

    • Obsługa protokołu powiązania tokenuSupport for the Token Binding Protocol

      Firma Microsoft i Google współpracują nad nowym podejściem do uwierzytelniania, nazywanym protokołem powiązania tokenu.Microsoft and Google have been collaborating on a new approach to authentication, called the Token Binding Protocol. Założeniem jest to, że tokeny uwierzytelniania (w pamięci podręcznej przeglądarki) mogą być skradzione i używane przez przestępców w celu uzyskania dostępu do bezpiecznych zasobów (np. konta bankowego) bez konieczności podawania hasła lub wszelkich innych uprzywilejowanych informacji.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. Nowy protokół ma na celu ograniczenie tego problemu.The new protocol aims to mitigate this problem.

      Protokół powiązania tokenu zostanie wdrożony w systemie Windows 10 jako funkcja przeglądarki.The Token Binding Protocol will be implemented in Windows 10 as a browser feature. Aplikacje ASP.NET będą uczestniczyć w protokole, dzięki czemu tokeny uwierzytelniania są weryfikowane jako wiarygodne.ASP.NET apps will participate in the protocol, so that authentication tokens are validated to be legitimate. Klient i implementacje serwera określają kompleksową ochronę określoną przez protokół.The client and the server implementations establish the end-to-end protection specified by the protocol.

    • Losowe algorytmy wyznaczania wartości ciągówRandomized string hash algorithms

      .NET Framework 4,5 wprowadził losowy algorytm wyznaczania wartości skrótu..NET Framework 4.5 introduced a randomized string hash algorithm. Nie jest to jednak obsługiwane przez ASP.NET z powodu niektórych funkcji ASP.NET zależnych od stabilnego kodu skrótu.However, it was not supported by ASP.NET because of some ASP.NET features depended on a stable hash code. W .NET Framework 4,6 są teraz obsługiwane losowe algorytmy wyznaczania wartości ciągów.In .NET Framework 4.6, randomized string hash algorithms are now supported. Aby włączyć tę funkcję, użyj ustawienia konfiguracji aspnet:UseRandomizedStringHashAlgorithm.To enable this feature, use the aspnet:UseRandomizedStringHashAlgorithm config setting.

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

    Obiekt ADO .NET obsługuje teraz funkcję Always Encrypted dostępną w 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). Za pomocą Always Encrypted SQL Server mogą wykonywać operacje na zaszyfrowanych danych, a wszystkie klucze szyfrowania znajdują się w aplikacji wewnątrz zaufanego środowiska klienta, a nie na serwerze.With Always Encrypted, SQL Server can perform operations on encrypted data, and best of all the encryption key resides with the application inside the customer’s trusted environment and not on the server. Always Encrypted zabezpiecza dane klientów, dzięki czemu przetwarzający nie mają dostępu do danych w postaci zwykłego tekstu.Always Encrypted secures customer data so DBAs do not have access to plain text data. Szyfrowanie i odszyfrowywanie danych odbywa się w sposób przezroczysty na poziomie sterownika, minimalizując zmiany, które należy wprowadzić w istniejących aplikacjach.Encryption and decryption of data happens transparently at the driver level, minimizing changes that have to be made to existing applications. Aby uzyskać szczegółowe informacje, zobacz Always Encrypted (aparat bazy danych) i Always Encrypted (Programowanie klienta).For details, see Always Encrypted (Database Engine) and Always Encrypted (client development).

  • 64-bitowy kompilator JIT dla kodu zarządzanego64-bit JIT Compiler for managed code

    .NET Framework 4,6 zawiera nową wersję 64-bitowego kompilatora JIT (pierwotnie kod o nazwie RyuJIT)..NET Framework 4.6 features a new version of the 64-bit JIT compiler (originally code-named RyuJIT). Nowy kompilator 64-bitowy zapewnia znaczące ulepszenia wydajności w porównaniu do starszego, 64-bitowego kompilatora JIT.The new 64-bit compiler provides significant performance improvements over the older 64-bit JIT compiler. Nowy kompilator 64-bitowy jest włączony dla procesów 64-bitowych uruchomionych w oparciu o .NET Framework 4,6.The new 64-bit compiler is enabled for 64-bit processes running on top of .NET Framework 4.6. Aplikacja będzie działać w procesie 64-bitowym, jeśli zostanie skompilowana jako 64-bit lub AnyCPU i uruchomiona w 64-bitowym systemie operacyjnym.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. Należy zachować ostrożność, aby przechodzenie do nowego kompilatora było możliwie przejrzyste. zmiany w zachowaniu są możliwe.While care has been taken to make the transition to the new compiler as transparent as possible, changes in behavior are possible. Chcemy bezpośrednio poznać wszelkie problemy, które wystąpiły podczas korzystania z nowego kompilatora JIT.We would like to hear directly about any issues encountered when using the new JIT compiler. Skontaktuj się z nami za pomocą programu Microsoft Connect , jeśli wystąpi problem, który może być związany z nowym kompilatorem 64-bitowym JIT.Please contact us through Microsoft Connect if you encounter an issue that may be related to the new 64-bit JIT compiler.

    Nowy 64-bitowy kompilator JIT obejmuje również funkcje SIMD przyspieszania sprzętowego w połączeniu z typami z obsługą SIMD w przestrzeni nazw System.Numerics, co może przynieść dobre ulepszenia wydajności.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.

  • Udoskonalenia modułu ładującego zestawyAssembly loader improvements

    Program ładujący zestawy zużywa teraz pamięć bardziej wydajnie, zwalniając zestawy IL po załadowaniu odpowiedniego obrazu NGEN.The assembly loader now uses memory more efficiently by unloading IL assemblies after a corresponding NGEN image is loaded. Ta zmiana zmniejsza ilość pamięci wirtualnej, co jest szczególnie przydatne w przypadku dużych aplikacji 32-bitowych (takich jak Visual Studio), a także umożliwia zapisanie pamięci fizycznej.This change decreases virtual memory, which is particularly beneficial for large 32-bit apps (such as Visual Studio), and also saves physical memory.

  • Zmiany w bibliotece klas podstawowychBase class library changes

    Dodano wiele nowych interfejsów API do .NET Framework 4,6, aby umożliwić korzystanie z kluczowych scenariuszy.Many new APIs have been added around to .NET Framework 4.6 to enable key scenarios. Należą do nich następujące zmiany i Dodatki:These include the following changes and additions:

    • Implementacje > IReadOnlyCollection<TIReadOnlyCollection<T> implementations

      Dodatkowe kolekcje implementują IReadOnlyCollection<T>, takie jak Queue<T> i Stack<T>.Additional collections implement IReadOnlyCollection<T> such as Queue<T> and Stack<T>.

    • CultureInfo. CurrentCulture i CultureInfo. CurrentUICultureCultureInfo.CurrentCulture and CultureInfo.CurrentUICulture

      Właściwości CultureInfo.CurrentCulture i CultureInfo.CurrentUICulture są teraz do odczytu i zapisu, a nie tylko do odczytu.The CultureInfo.CurrentCulture and CultureInfo.CurrentUICulture properties are now read-write rather than read-only. Jeśli do tych właściwości przypiszesz nowy obiekt CultureInfo, bieżąca kultura wątku zdefiniowana przez właściwość Thread.CurrentThread.CurrentCulture i kulturę wątku bieżącego interfejsu użytkownika zdefiniowana przez właściwości Thread.CurrentThread.CurrentUICulture również zmienią się.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.

    • Udoskonalenia do wyrzucania elementów bezużytecznych (GC)Enhancements to garbage collection (GC)

      Klasa GC zawiera teraz metody TryStartNoGCRegion i EndNoGCRegion, które umożliwiają niezezwalanie na wyrzucanie elementów bezużytecznych podczas wykonywania ścieżki krytycznej.The GC class now includes TryStartNoGCRegion and EndNoGCRegion methods that allow you to disallow garbage collection during the execution of a critical path.

      Nowe Przeciążenie metody GC.Collect(Int32, GCCollectionMode, Boolean, Boolean) pozwala kontrolować, czy zarówno sterta małego obiektu, jak i sterta dużego obiektu są wycierane i kompaktowe.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.

    • Typy z obsługą SIMDSIMD-enabled types

      Przestrzeń nazw System.Numerics zawiera teraz wiele typów z obsługą SIMD, takich jak Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3 i Vector4.The System.Numerics namespace now includes a number of SIMD-enabled types, such as Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3, and Vector4.

      Ponieważ nowy kompilator 64-bitowy JIT obejmuje również funkcje sprzętowego przyspieszania SIMD, istnieją szczególnie znaczące ulepszenia wydajności w przypadku używania typów z obsługą SIMD z nowym, 64-bitowym kompilatorem JIT.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.

    • Aktualizacje kryptografiiCryptography updates

      Interfejs API System.Security.Cryptography jest aktualizowany do obsługi interfejsów API kryptografii CNG systemu Windows.The System.Security.Cryptography API is being updated to support the Windows CNG cryptography APIs. Poprzednie wersje .NET Framework były używane całkowicie we wcześniejszej wersji interfejsów API kryptografii systemu Windows jako podstawy dla implementacji 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. Mamy żądania obsługi interfejsu API CNG, ponieważ obsługuje on nowoczesne algorytmy kryptografii, które są ważne w przypadku niektórych kategorii aplikacji.We have had requests to support the CNG API, since it supports modern cryptography algorithms, which are important for certain categories of apps.

      .NET Framework 4,6 zawiera następujące nowe ulepszenia do obsługi interfejsów API kryptografii CNG systemu Windows:.NET Framework 4.6 includes the following new enhancements to support the Windows CNG cryptography APIs:

      • Zestaw metod rozszerzających certyfikaty x509, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2) i System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2), które zwracają implementację opartą na protokole CNG, a nie implementację w trybie CAPI, gdy jest to możliwe.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. (Niektóre karty inteligentne itp.) nadal wymagają użycia programu CAPI, a interfejsy API obsługują rezerwę.(Some smartcards, etc., still require CAPI, and the APIs handle the fallback).

      • Klasa System.Security.Cryptography.RSACng, która zapewnia implementację algorytmu RSA w języku CNG.The System.Security.Cryptography.RSACng class, which provides a CNG implementation of the RSA algorithm.

      • Udoskonalenia interfejsu API RSA, dzięki czemu typowe akcje nie wymagają już rzutowania.Enhancements to the RSA API so that common actions no longer require casting. Na przykład szyfrowanie danych przy użyciu obiektu X509Certificate2 wymaga kodu, takiego jak następujące w poprzednich wersjach .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)
        

        Kod korzystający z nowych interfejsów API kryptografii w .NET Framework 4,6 może zostać zapisany w następujący sposób, aby uniknąć rzutowania.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)
        
    • Obsługa konwersji dat i godzin do lub z czasu systemu UNIXSupport for converting dates and times to or from Unix time

      Do struktury DateTimeOffset dodano następujące nowe metody, które obsługują konwertowanie wartości daty i godziny na czas lub z systemu UNIX:The following new methods have been added to the DateTimeOffset structure to support converting date and time values to or from Unix time:

    • Przełączniki zgodnościCompatibility switches

      Nowa Klasa AppContext dodaje nową funkcję zgodności, która umożliwia autorom biblioteki zapewnia jednolity mechanizm rezygnacji dla nowych funkcji dla swoich użytkowników.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. Tworzy luźno rozłączoną umowę między składnikami w celu przekazywania żądania rezygnacji.It establishes a loosely-coupled contract between components in order to communicate an opt-out request. Ta funkcja jest zwykle ważna w przypadku zmiany istniejącej funkcji.This capability is typically important when a change is made to existing functionality. Z drugiej strony istnieje już niejawny wybór dla nowych funkcji.Conversely, there is already an implicit opt-in for new functionality.

      W przypadku AppContext biblioteki definiują i uwidaczniają przełączniki zgodności, podczas gdy kod, który zależy od nich, mogą ustawiać te przełączniki na wpływ na zachowanie biblioteki.With AppContext, libraries define and expose compatibility switches, while code that depends on them can set those switches to affect the library behavior. Domyślnie biblioteki udostępniają nowe funkcje i zmieniają je (to oznacza, że zapewniają poprzednie funkcje), jeśli przełącznik jest ustawiony.By default, libraries provide the new functionality, and they only alter it (that is, they provide the previous functionality) if the switch is set.

      Aplikacja (lub biblioteka) może zadeklarować wartość przełącznika (zawsze wartość Boolean), którą definiuje Biblioteka zależna.An application (or a library) can declare the value of a switch (which is always a Boolean value) that a dependent library defines. Przełącznik jest zawsze niejawnie false.The switch is always implicitly false. Ustawienie przełącznika na true włącza go.Setting the switch to true enables it. Jawne ustawienie przełącznika false zapewnia nowe zachowanie.Explicitly setting the switch to false provides the new behavior.

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

      Biblioteka musi sprawdzić, czy konsument zadeklaruje wartość przełącznika, a następnie odpowiednio wykonać odpowiednie działania.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
      

      Korzystne jest użycie spójnego formatu dla przełączników, ponieważ są one formalnym kontraktem udostępnianym przez bibliotekę.It's beneficial to use a consistent format for switches, since they are a formal contract exposed by a library. Poniżej przedstawiono dwa oczywiste formaty.The following are two obvious formats.

      • Przełącznik. przestrzeń nazw. przełączniknameSwitch.namespace.switchname

      • Przełącznik. Biblioteka. przełączniknameSwitch.library.switchname

    • Zmiany wzorca asynchronicznego opartego na zadaniach (TAP)Changes to the task-based asynchronous pattern (TAP)

      W przypadku aplikacji przeznaczonych dla .NET Framework 4,6, Task i Task<TResult> obiekty dziedziczą kulturę i kultury interfejsu użytkownika wątku wywołującego.For apps that target the .NET Framework 4.6, Task and Task<TResult> objects inherit the culture and UI culture of the calling thread. Nie dotyczy to zachowania aplikacji przeznaczonych dla poprzednich wersji .NET Framework lub nie przeznaczonych dla określonej wersji .NET Framework.The behavior of apps that target previous versions of the .NET Framework, or that do not target a specific version of the .NET Framework, is unaffected. Aby uzyskać więcej informacji, zobacz sekcję "kultury i operacje asynchroniczne oparte na zadaniach" w temacie dotyczącym klas CultureInfo.For more information, see the "Culture and task-based asynchronous operations" section of the CultureInfo class topic.

      Klasa System.Threading.AsyncLocal<T> pozwala reprezentować dane otoczenia, które są lokalne dla danego przepływu kontroli asynchronicznej, takie jak Metoda 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. Może służyć do utrwalania danych w wątkach.It can be used to persist data across threads. Można również zdefiniować metodę wywołania zwrotnego, która jest przekazywana za każdym razem, gdy dane otoczenia ulegną zmianie, ponieważ właściwość AsyncLocal<T>.Value została jawnie zmieniona lub wątek napotkał przejście kontekstu.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.

      Trzy wygodne metody, Task.CompletedTask, Task.FromCanceledi Task.FromExceptionzostały dodane do wzorca asynchronicznego opartego na zadaniach (TAP) w celu zwrócenia ukończonych zadań w określonym stanie.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.

      Klasa NamedPipeClientStream obsługuje teraz asynchroniczną komunikację z nowym ConnectAsync.The NamedPipeClientStream class now supports asynchronous communication with its new ConnectAsync. Method.method.

    • Zdarzenie EventSource obsługuje teraz zapisywanie w dzienniku zdarzeńEventSource now supports writing to the Event log

      Teraz można użyć klasy EventSource do rejestrowania administracyjnych lub komunikatów operacyjnych w dzienniku zdarzeń, oprócz wszelkich istniejących sesji ETW utworzonych na komputerze.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. W przeszłości należało użyć pakietu NuGet Microsoft. Diagnostics. Tracing. EventSource dla tej funkcji.In the past, you had to use the Microsoft.Diagnostics.Tracing.EventSource NuGet package for this functionality. Ta funkcja jest teraz wbudowana .NET Framework 4,6.This functionality is now built-into .NET Framework 4.6.

      Pakiet NuGet i .NET Framework 4,6 zostały zaktualizowane przy użyciu następujących funkcji:Both the NuGet package and .NET Framework 4.6 have been updated with the following features:

      • Zdarzenia dynamiczneDynamic events

        Umożliwia zdefiniowanie zdarzeń "na bieżąco" bez tworzenia metod zdarzeń.Allows events defined "on the fly" without creating event methods.

      • Rozbudowane ładunkiRich payloads

        Umożliwia użycie specjalnie przypisanych klas i tablic, a także typów pierwotnych, które mają być przesyłane jako ładunekAllows specially attributed classes and arrays as well as primitive types to be passed as a payload

      • Śledzenie działańActivity tracking

        Powoduje, że zdarzenia uruchamiania i zatrzymywania do tagów zdarzeń między nimi mają identyfikator reprezentujący wszystkie aktualnie aktywne aktywności.Causes Start and Stop events to tag events between them with an ID that represents all currently active activities.

      Do obsługi tych funkcji przeciążona metoda Write została dodana do klasy EventSource.To support these features, the overloaded Write method has been added to the EventSource class.

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

    • Udoskonalenia HDPIHDPI improvements

      Obsługa HDPI w programie WPF jest teraz lepsza w .NET Framework 4,6.HDPI support in WPF is now better in the .NET Framework 4.6. Wprowadzono zmiany układu zaokrąglania, aby zmniejszyć liczbę wystąpień wycinków w kontrolkach z obramowaniem.Changes have been made to layout rounding to reduce instances of clipping in controls with borders. Domyślnie ta funkcja jest włączona tylko wtedy, gdy dla TargetFrameworkAttribute ustawiono wartość .NET 4,6.By default, this feature is enabled only if your TargetFrameworkAttribute is set to .NET 4.6. Aplikacje, które są przeznaczone dla wcześniejszych wersji platformy, ale działają w .NET Framework 4,6, mogą zrezygnować z nowego zachowania, dodając następujący wiersz do sekcji <runtime > pliku 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"
      />
      

      Środowiska WPF systemu Windows na rozgałęzieniu wielu monitorów z różnymi ustawieniami DPI (Konfiguracja z wieloma DPI) są teraz całkowicie renderowane bez czarnego regionu.WPF windows straddling multiple monitors with different DPI settings (Multi-DPI setup) are now completely rendered without blacked-out regions. Możesz zrezygnować z tego zachowania, dodając następujący wiersz do sekcji <appSettings> pliku App. config, aby wyłączyć to nowe zachowanie: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"/>
      

      Obsługa automatycznego ładowania prawego kursora na podstawie ustawienia DPI została dodana do System.Windows.Input.Cursor.Support for automatically loading the right cursor based on DPI setting has been added to System.Windows.Input.Cursor.

    • Lepsza obsługa dotykuTouch is better

      Raporty klienta dotyczące połączenia , które dotykają nieprzewidywalnego zachowania, zostały rozwiązane w .NET Framework 4,6.Customer reports on Connect that touch produces unpredictable behavior have been addressed in the .NET Framework 4.6. Próg podwójnego nacisku dla aplikacji ze sklepu Windows i aplikacji WPF jest teraz taki sam jak w Windows 8.1 i nowszych.The double tap threshold for Windows Store applications and WPF applications is now the same in Windows 8.1 and above.

    • Obsługa okna przezroczystego elementu podrzędnegoTransparent child window support

      WPF w .NET Framework 4,6 obsługuje przezroczyste okna podrzędne w Windows 8.1 i nowszych.WPF in the .NET Framework 4.6 supports transparent child windows in Windows 8.1 and above. Dzięki temu można tworzyć nieprostokątne i przezroczyste okna podrzędne w oknach najwyższego poziomu.This allows you to create non-rectangular and transparent child windows in your top-level windows. Tę funkcję można włączyć, ustawiając właściwość HwndSourceParameters.UsesPerPixelTransparency na true.You can enable this feature by setting the HwndSourceParameters.UsesPerPixelTransparency property to true.

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

    • Obsługa protokołu SSLSSL support

      Usługa WCF obsługuje teraz protokół SSL w wersji 1,1 i TLS 1,2, oprócz protokołu SSL 3,0 i TLS 1,0, podczas korzystania z usługi NetTcp z zabezpieczeniami transportu i uwierzytelnianiem klientów.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. Teraz można wybrać protokół, który ma być używany, lub aby wyłączyć stare, bezpieczne protokoły.It is now possible to select which protocol to use, or to disable old lesser secure protocols. Można to zrobić, ustawiając właściwość SslProtocols lub dodając następujący element do pliku konfiguracji.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>
      
    • Wysyłanie komunikatów przy użyciu różnych połączeń HTTPSending messages using different HTTP connections

      Usługa WCF umożliwia teraz użytkownikom zapewnienie, że niektóre komunikaty są wysyłane przy użyciu różnych podstawowych połączeń HTTP.WCF now allows users to ensure certain messages are sent using different underlying HTTP connections. Istnieją dwa sposoby wykonania tej czynności:There are two ways to do this:

      • Używanie prefiksu nazwy grupy połączeńUsing a connection group name prefix

        Użytkownicy mogą określić ciąg, który będzie używany przez program WCF jako prefiks nazwy grupy połączeń.Users can specify a string that WCF will use as a prefix for the connection group name. Dwa komunikaty z różnymi prefiksami są wysyłane przy użyciu różnych podstawowych połączeń HTTP.Two messages with different prefixes are sent using different underlying HTTP connections. Należy ustawić prefiks, dodając parę klucz/wartość do właściwości Message.Properties komunikatu.You set the prefix by adding a key/value pair to the message's Message.Properties property. Klucz ma wartość "HttpTransportConnectionGroupNamePrefix"; wartość jest pożądanym prefiksem.The key is "HttpTransportConnectionGroupNamePrefix"; the value is the desired prefix.

      • Korzystanie z różnych fabryk kanałówUsing different channel factories

        Użytkownicy mogą również włączyć funkcję, która zapewnia, że komunikaty wysyłane przy użyciu kanałów utworzonych przez różne fabryki kanałów będą używać różnych podstawowych połączeń HTTP.Users can also enable a feature that ensures that messages sent using channels created by different channel factories will use different underlying HTTP connections. Aby włączyć tę funkcję, użytkownicy muszą ustawić następujące appSetting do 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)

    Teraz możesz określić liczbę sekund, przez jaką usługa przepływu pracy będzie przekroczyć żądanie operacji poza kolejnością, gdy istnieje oczekująca zakładka "bez protokołu" przed upływem limitu czasu żądania.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. Zakładka "non-Protocol" jest zakładką, która nie jest powiązana z oczekującymi działaniami Receive.A "non-protocol" bookmark is a bookmark that is not related to outstanding Receive activities. Niektóre działania tworzą zakładki nieobsługujące protokołów w ramach ich implementacji, dlatego może nie być oczywiste, że istnieje zakładka niebędąca protokołem.Some activities create non-protocol bookmarks within their implementation, so it may not be obvious that a non-protocol bookmark exists. Obejmują one stan i wybór.These include State and Pick. Dlatego jeśli masz zaimplementowaną usługę przepływu pracy z maszyną stanu lub z działaniami pobrania, najprawdopodobniej zaistnieją zakładki niebędące protokołami.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. Interwał można określić, dodając wiersz podobny do poniższego, do sekcji appSettings pliku 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"/>
    

    Wartość domyślna to 60 sekund.The default value is 60 seconds. Jeśli wartość value jest równa 0, żądania poza kolejnością zostaną natychmiast odrzucone z powodu błędu z tekstem, który wygląda następująco: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.
    

    Jest to ten sam komunikat, który jest wyświetlany po odebraniu komunikatu o operacji poza kolejnością i braku zakładek innych niż protokoły.This is the same message that you receive if an out-of-order operation message is received and there are no non-protocol bookmarks.

    Jeśli wartość elementu FilterResumeTimeoutInSeconds jest różna od zera, istnieją zakładki inne niż protokoły i przekroczenie limitu czasu, operacja kończy się niepowodzeniem z komunikatem o przekroczeniu limitu czasu.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.

  • TransakcjeTransactions

    Teraz można uwzględnić identyfikator transakcji rozproszonej dla transakcji, która spowodowała wygenerowanie wyjątku pochodzącego od TransactionException.You can now include the distributed transaction identifier for the transaction that has caused an exception derived from TransactionException to be thrown. W tym celu należy dodać następujący klucz do sekcji appSettings pliku 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"/>
    

    Wartość domyślna to false.The default value is false.

  • SieciNetworking

    • Ponowne użycie gniazdaSocket reuse

      System Windows 10 zawiera nowy algorytm sieci o wysokiej skalowalności, który umożliwia lepsze wykorzystanie zasobów komputera przez ponowne użycie portów lokalnych dla wychodzących połączeń TCP.Windows 10 includes a new high-scalability networking algorithm that makes better use of machine resources by reusing local ports for outbound TCP connections. .NET Framework 4,6 obsługuje nowy algorytm, umożliwiając aplikacjom .NET korzystanie z nowych zachowań..NET Framework 4.6 supports the new algorithm, enabling .NET apps to take advantage of the new behavior. W poprzednich wersjach systemu Windows istnieje sztuczny limit połączeń współbieżnych (zazwyczaj 16 384, domyślny rozmiar dynamicznego zakresu portów), który może ograniczyć skalowalność usługi, powodując wyczerpanie portów podczas ładowania.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.

      W .NET Framework 4,6 dodano dwa nowe interfejsy API umożliwiające ponowne użycie portów, co skutecznie eliminuje limit 64 KB dla połączeń współbieżnych: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:

      Domyślnie właściwość ServicePointManager.ReusePort jest false, chyba że wartość HWRPortReuseOnSocketBind klucza rejestru HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 jest ustawiona na 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. Aby włączyć ponowne używanie portów lokalnych dla połączeń HTTP, ustaw właściwość ServicePointManager.ReusePort na true.To enable local port reuse on HTTP connections, set the ServicePointManager.ReusePort property to true. Powoduje to, że wszystkie wychodzące połączenia gniazda TCP z HttpClient i HttpWebRequest do korzystania z nowej opcji gniazda systemu Windows 10 SO_REUSE_UNICASTPORT, która umożliwia ponowne użycie portów lokalnych.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.

      Deweloperzy piszący aplikację tylko do gniazd mogą określić opcję System.Net.Sockets.SocketOptionName podczas wywoływania metody, takiej jak Socket.SetSocketOption, aby gniazda wychodzące ponownie używały portów lokalnych podczas wiązania.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.

    • Obsługa międzynarodowych nazw domen i formacie PunycodeSupport for international domain names and PunyCode

      Nowa właściwość, IdnHost, została dodana do klasy Uri, aby lepiej obsługiwała międzynarodowe nazwy domen i formacie Punycode.A new property, IdnHost, has been added to the Uri class to better support international domain names and PunyCode.

  • Zmienianie rozmiarów w kontrolkach Windows Forms.Resizing in Windows Forms controls.

    Ta funkcja została rozwinięta w .NET Framework 4,6, aby uwzględnić typy DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn i ToolStripSplitButton oraz prostokąt określony przez właściwość Bounds używaną podczas rysowania 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.

    Jest to funkcja opcjonalna.This is an opt-in feature. Aby ją włączyć, ustaw dla elementu EnableWindowsFormsHighDpiAutoResizing wartość true w pliku konfiguracji aplikacji (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>
    
  • Obsługa kodowania stron kodowychSupport for code page encodings

    Program .NET Core obsługuje przede wszystkim kodowania Unicode i domyślnie udostępnia ograniczoną obsługę kodowania stron kodowych..NET Core primarily supports the Unicode encodings and by default provides limited support for code page encodings. Można dodać obsługę kodowania stron kodowych dostępnych w .NET Framework ale nieobsługiwane w programie .NET Core przez zarejestrowanie kodowania stron kodowych za pomocą metody 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. Aby uzyskać więcej informacji, zobacz System.Text.CodePagesEncodingProvider.For more information, see System.Text.CodePagesEncodingProvider.

  • .NET Native.NET Native

    Aplikacje systemu Windows dla systemu Windows 10, które są przeznaczone dla platformy C# .NET Core i są zapisywana lub Visual Basic mogą korzystać z nowej technologii, która kompiluje aplikacje do kodu natywnego, a nie 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. Generują aplikacje charakteryzujące się krótszym czasem uruchamiania i wykonywania.They produce apps characterized by faster startup and execution times. Aby uzyskać więcej informacji, zobacz Kompilowanie aplikacji za pomocą .NET Native.For more information, see Compiling Apps with .NET Native. Aby zapoznać się z omówieniem .NET Native, który bada, w jaki sposób różni się od kompilacji JIT i NGEN oraz czego dotyczy Twój kod, zapoznaj się z tematem .NET Native i kompilacją.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.

    Aplikacje są domyślnie kompilowane do kodu natywnego podczas kompilowania ich przy użyciu programu Visual Studio 2015 lub nowszego.Your apps are compiled to native code by default when you compile them with Visual Studio 2015 or later. Aby uzyskać więcej informacji, zobacz wprowadzenie z .NET Native.For more information, see Getting Started with .NET Native.

    Aby można było obsługiwać debugowanie .NET Native aplikacje, do niezarządzanego interfejsu API debugowania dodano wiele nowych interfejsów i wyliczeń.To support debugging .NET Native apps, a number of new interfaces and enumerations have been added to the unmanaged debugging API. Aby uzyskać więcej informacji, zobacz temat debugowanie (niezarządzany wykaz interfejsów API) .For more information, see the Debugging (Unmanaged API Reference) topic.

  • Pakiety .NET Framework Open SourceOpen-source .NET Framework packages

    Pakiety .NET Core, takie jak Niezmienne kolekcje, interfejsy API SIMDi interfejsy API sieci, takie jak te, które znajdują się w przestrzeni nazw System.Net.Http, są teraz dostępne jako pakiety Open Source w witrynie 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. Aby uzyskać dostęp do kodu, zobacz CoreFx w witrynie GitHub.To access the code, see CoreFx on GitHub. Aby uzyskać więcej informacji i dowiedzieć się, jak współtworzyć te pakiety, zobacz stronę główną platformy .NET Core i Open Source w witrynie GitHub.For more information and how to contribute to these packages, see .NET Core and Open-Source, .NET Home Page on GitHub.

Co nowego w .NET Framework 4.5.2What's new in .NET Framework 4.5.2

  • Nowe interfejsy API dla aplikacji ASP.NET.New APIs for ASP.NET apps. Nowe metody HttpResponse.AddOnSendingHeaders i HttpResponseBase.AddOnSendingHeaders umożliwiają inspekcję i modyfikowanie nagłówków odpowiedzi oraz kodu stanu, gdy odpowiedź jest opróżniana do aplikacji klienckiej.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. Rozważ użycie tych metod zamiast zdarzeń PreSendRequestHeaders i PreSendRequestContent; są one bardziej wydajne i niezawodne.Consider using these methods instead of the PreSendRequestHeaders and PreSendRequestContent events; they are more efficient and reliable.

    Metoda HostingEnvironment.QueueBackgroundWorkItem umożliwia zaplanowanie niewielkich elementów roboczych w tle.The HostingEnvironment.QueueBackgroundWorkItem method lets you schedule small background work items. ASP.NET śledzi te elementy i uniemożliwia nieoczekiwane zakończenie procesu roboczego przez usługi IIS do momentu zakończenia wszystkich elementów roboczych w tle.ASP.NET tracks these items and prevents IIS from abruptly terminating the worker process until all background work items have completed. Tej metody nie można wywołać poza domenę aplikacji zarządzanej przez ASP.NET.This method can't be called outside an ASP.NET managed app domain.

    Nowe właściwości HttpResponse.HeadersWritten i HttpResponseBase.HeadersWritten zwracają wartości logiczne, które wskazują, czy nagłówki odpowiedzi zostały zapisaniu.The new HttpResponse.HeadersWritten and HttpResponseBase.HeadersWritten properties return Boolean values that indicate whether the response headers have been written. Możesz użyć tych właściwości, aby upewnić się, że wywołania interfejsów API, takie jak HttpResponse.StatusCode (które generują wyjątki, jeśli nagłówki zostały zapisaną) powiedzie się.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.

  • Zmienianie rozmiarów w kontrolkach Windows Forms.Resizing in Windows Forms controls. Ta funkcja została rozszerzona.This feature has been expanded. Teraz można użyć ustawienia DPI systemu, aby zmienić rozmiar składników następujących dodatkowych kontrolek (na przykład strzałkę rozwijaną w polach kombi):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):

    Jest to funkcja opcjonalna.This is an opt-in feature. Aby ją włączyć, ustaw dla elementu EnableWindowsFormsHighDpiAutoResizing wartość true w pliku konfiguracji aplikacji (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>
    
  • Nowa funkcja przepływu pracy.New workflow feature. Menedżer zasobów używający metody EnlistPromotableSinglePhase (i w związku z tym implementujący interfejs IPromotableSinglePhaseNotification) może użyć nowej metody Transaction.PromoteAndEnlistDurable do żądania następujących czynności: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:

    Można to zrobić w ramach tej samej domeny aplikacji i nie jest wymagany żaden dodatkowy kod niezarządzany do współpracy z usługą MSDTC w celu przeprowadzenia promocji.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. Nową metodę można wywołać tylko wtedy, gdy istnieje oczekujące wywołanie z System.Transactions do metody IPromotableSinglePhaseNotificationPromote, która jest implementowana przez rejestrację promocji.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.

  • Udoskonalenia profilowania.Profiling improvements. Następujące nowe niezarządzane interfejsy API profilowania zapewniają bardziej niezawodne profilowanie:The following new unmanaged profiling APIs provide more robust profiling:

    Poprzednie implementacje ICorProfiler obsługują ładowanie zestawów zależnych z opóźnieniem.Previous ICorProfiler implementations supported lazy loading of dependent assemblies. Nowe interfejsy API profilowania wymagają zestawów zależnych, które są wstrzykiwane przez profiler, aby można je było załadować natychmiast, zamiast ładować po całkowitym zainicjowaniu aplikacji.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. Ta zmiana nie ma wpływu na użytkowników istniejących interfejsów API ICorProfiler.This change doesn't affect users of the existing ICorProfiler APIs.

  • Ulepszenia debugowania.Debugging improvements. Poniższe nowe niezarządzane interfejsy API debugowania zapewniają lepszą integrację z profilerem.The following new unmanaged debugging APIs provide better integration with a profiler. Teraz możesz uzyskiwać dostęp do metadanych wstawianych przez profiler, a także zmiennych lokalnych i kodu wytworzonych przez ReJIT kompilatora w przypadku debugowania zrzutów.You can now access metadata inserted by the profiler as well as local variables and code produced by compiler ReJIT requests when dump debugging.

  • Zmiany śledzenia zdarzeń.Event tracing changes. .NET Framework 4.5.2 pozwala na pozaprocesowe śledzenie aktywności na podstawie śledzenia zdarzeń systemu Windows (ETW) dla większego obszaru powierzchni..NET Framework 4.5.2 enables out-of-process, Event Tracing for Windows (ETW)-based activity tracing for a larger surface area. Dzięki temu dostawcy zaawansowanego zarządzania energią (APM) mogą zapewnić uproszczone narzędzia, które dokładnie śledzą koszty poszczególnych żądań i działań obejmujących wiele wątków.This enables Advanced Power Management (APM) vendors to provide lightweight tools that accurately track the costs of individual requests and activities that cross threads. Te zdarzenia są wywoływane tylko wtedy, gdy są włączone przez kontrolery ETW; w związku z tym zmiany nie mają wpływu na wcześniej zapisany kod ETW lub kod, który jest uruchamiany z funkcją ETW wyłączona.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.

  • Podwyższanie poziomu transakcji i konwertowanie jej na trwałe rejestracjePromoting a transaction and converting it to a durable enlistment

    Transaction.PromoteAndEnlistDurable to nowy interfejs API dodany do .NET Framework 4.5.2 i 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
    

    Metoda może być używana przez rejestrację, która została wcześniej utworzona przez Transaction.EnlistPromotableSinglePhase w odpowiedzi na metodę ITransactionPromoter.Promote.The method may be used by an enlistment that was previously created by Transaction.EnlistPromotableSinglePhase in response to the ITransactionPromoter.Promote method. Prosi o System.Transactions, aby podwyższyć poziom transakcji do transakcji MSDTC i "Konwertuj" rejestrację w postaci trwałej rejestracji.It asks System.Transactions to promote the transaction to an MSDTC transaction and to "convert" the promotable enlistment to a durable enlistment. Po pomyślnym zakończeniu tej metody interfejs IPromotableSinglePhaseNotification nie będzie już przywoływany przez System.Transactions, a wszystkie przyszłe powiadomienia będą docierać do podanego interfejsu ISinglePhaseNotification.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. Dana Rejestracja musi pełnić rolę trwałej rejestracji, obsługującej rejestrowanie i odzyskiwanie transakcji.The enlistment in question must act as a durable enlistment, supporting transaction logging and recovery. Aby uzyskać szczegółowe informacje, zobacz Transaction.EnlistDurable.Refer to Transaction.EnlistDurable for details. Ponadto Rejestracja musi obsługiwać ISinglePhaseNotification.In addition, the enlistment must support ISinglePhaseNotification. Tę metodę można wywołać tylko podczas przetwarzania wywołania ITransactionPromoter.Promote.This method can only be called while processing an ITransactionPromoter.Promote call. Jeśli tak się nie dzieje, zostanie zgłoszony wyjątek TransactionException.If that is not the case, a TransactionException exception is thrown.

Co nowego w .NET Framework 4.5.1What's new in .NET Framework 4.5.1

Aktualizacje 2014 kwietnia:April 2014 updates:

  • Aktualizacja Visual Studio 2013 Update 2 obejmuje aktualizacje szablonów bibliotek klas przenośnych do obsługi następujących scenariuszy:Visual Studio 2013 Update 2 includes updates to the Portable Class Library templates to support these scenarios:

    • W bibliotekach przenośnych można używać środowisko wykonawcze systemu Windows interfejsów API przeznaczonych dla Windows 8.1, Windows Phone 8,1 i 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.

    • W przenośnych bibliotekach można uwzględnić kod XAML (typy Windows. UI. XAML), gdy jest przeznaczony Windows 8.1 lub 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. Obsługiwane są następujące szablony XAML: pusta strona, słownik zasobów, formant z szablonem i kontrola użytkownika.The following XAML templates are supported: Blank Page, Resource Dictionary, Templated Control, and User Control.

    • Można utworzyć przenośny składnik środowisko wykonawcze systemu Windows (plik. winmd) do użycia w aplikacjach ze sklepu przeznaczonym dla Windows 8.1 i 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.

    • Można przekierować magazyn Windows lub Windows Phone bibliotekę klas magazynu, jak Biblioteka klas przenośnych.You can retarget a Windows Store or Windows Phone Store class library like a Portable Class Library.

    Aby uzyskać więcej informacji o tych zmianach, zobacz Przenośna biblioteka klas.For more information about these changes, see Portable Class Library.

  • Zestaw zawartości .NET Framework zawiera teraz dokumentację .NET Native, która jest technologią prekompilacji do kompilowania i wdrażania aplikacji systemu Windows.The .NET Framework content set now includes documentation for .NET Native, which is a precompilation technology for building and deploying Windows apps. .NET Native kompiluje aplikacje bezpośrednio do kodu natywnego, a nie do języka pośredniego (IL), aby uzyskać lepszą wydajność..NET Native compiles your apps directly to native code, rather than to intermediate language (IL), for better performance. Aby uzyskać szczegółowe informacje, zobacz Kompilowanie aplikacji za pomocą .NET Native.For details, see Compiling Apps with .NET Native.

  • Źródło referencyjne .NET Framework udostępnia nowe środowisko przeglądania i udoskonalone funkcje.The .NET Framework Reference Source provides a new browsing experience and enhanced functionality. Możesz teraz przeglądać kod źródłowy .NET Framework online, pobrać odwołanie do wyświetlania w trybie offline i przejść przez źródła (w tym poprawki i aktualizacje) podczas debugowania.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. Aby uzyskać więcej informacji, zobacz wpis w blogu nowe wyszukiwanie źródła odwołania dla platformy .NET.For more information, see the blog entry A new look for .NET Reference Source.

Nowe funkcje i ulepszenia w klasach bazowych w .NET Framework 4.5.1 obejmują:New features and enhancements in the base classes in .NET Framework 4.5.1 include:

  • Automatyczne przekierowywanie powiązań dla zestawów.Automatic binding redirection for assemblies. Począwszy od Visual Studio 2013, podczas kompilowania aplikacji przeznaczonej dla .NET Framework 4.5.1 można dodać przekierowania powiązań do pliku konfiguracyjnego aplikacji, jeśli aplikacja lub jej składniki odwołują się do wielu wersji tego samego zestawu.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. Tę funkcję można również włączyć dla projektów przeznaczonych dla starszych wersji .NET Framework.You can also enable this feature for projects that target older versions of the .NET Framework. Aby uzyskać więcej informacji, zobacz jak: Włączanie i wyłączanie automatycznego przekierowywania powiązań.For more information, see How to: Enable and Disable Automatic Binding Redirection.

  • Możliwość zbierania informacji diagnostycznych, aby pomóc deweloperom w ulepszaniu wydajności serwerów i aplikacji w chmurze.Ability to collect diagnostics information to help developers improve the performance of server and cloud applications. Aby uzyskać więcej informacji, zobacz Metody WriteEventWithRelatedActivityId i WriteEventWithRelatedActivityIdCore w klasie EventSource.For more information, see the WriteEventWithRelatedActivityId and WriteEventWithRelatedActivityIdCore methods in the EventSource class.

  • Możliwość jawnego kompaktowania sterty dużego obiektu (LOH) podczas wyrzucania elementów bezużytecznych.Ability to explicitly compact the large object heap (LOH) during garbage collection. Aby uzyskać więcej informacji, zobacz Właściwość GCSettings.LargeObjectHeapCompactionMode.For more information, see the GCSettings.LargeObjectHeapCompactionMode property.

  • Dodatkowe ulepszenia wydajności, takie jak zawieszenie aplikacji ASP.NET, wielordzeniowe udoskonalenia JIT i szybsze uruchamianie aplikacji po aktualizacji .NET Framework.Additional performance improvements such as ASP.NET app suspension, multi-core JIT improvements, and faster app startup after a .NET Framework update. Aby uzyskać szczegółowe informacje, zapoznaj się z wpisem w blogu .NET Framework 4.5.1 i zawieszania aplikacji ASP.NET .For details, see the .NET Framework 4.5.1 announcement and the ASP.NET app suspend blog post.

Ulepszenia Windows Forms obejmują:Improvements to Windows Forms include:

  • Zmienianie rozmiarów w kontrolkach Windows Forms.Resizing in Windows Forms controls. Ustawienia DPI systemu można użyć do zmiany rozmiaru składników formantów (na przykład ikon, które pojawiają się w siatce właściwości) przez zajęcie wpisu w pliku konfiguracyjnym aplikacji (App. config) aplikacji.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. Ta funkcja jest obecnie obsługiwana w następujących formantach Windows Forms:This feature is currently supported in the following Windows Forms controls:

    Aby włączyć tę funkcję, Dodaj nowy <appSettings > elementu do pliku konfiguracji (App. config) i Ustaw element EnableWindowsFormsHighDpiAutoResizing na 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>
    

Ulepszenia podczas debugowania aplikacji .NET Framework w Visual Studio 2013 obejmują:Improvements when debugging your .NET Framework apps in Visual Studio 2013 include:

  • Zwraca wartości w debugerze programu Visual Studio.Return values in the Visual Studio debugger. Gdy debugujesz zarządzaną aplikację w Visual Studio 2013, w oknie samochody są wyświetlane typy zwracane i wartości dla metod.When you debug a managed app in Visual Studio 2013, the Autos window displays return types and values for methods. Te informacje są dostępne dla aplikacji klasycznych, sklepu Windows i Windows Phone.This information is available for desktop, Windows Store, and Windows Phone apps. Aby uzyskać więcej informacji, zobacz badanie wartości zwracanych wywołań metod.For more information, see Examine return values of method calls.

  • Edytuj i Kontynuuj dla aplikacji 64-bitowych.Edit and Continue for 64-bit apps. Visual Studio 2013 obsługuje funkcję Edytuj i Kontynuuj dla 64-bitowych aplikacji zarządzanych dla komputerów stacjonarnych, sklepu Windows i Windows Phone.Visual Studio 2013 supports the Edit and Continue feature for 64-bit managed apps for desktop, Windows Store, and Windows Phone. Istniejące ograniczenia nadal obowiązują dla aplikacji 32-bitowych i 64-bitowych (zobacz ostatnią sekcję obsługiwane zmiany koduC#() artykułu).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).

  • Debugowanie z obsługą asynchroniczną.Async-aware debugging. Aby ułatwić debugowanie asynchronicznych aplikacji w Visual Studio 2013, stos wywołań ukrywa kod infrastruktury dostarczony przez kompilatory do obsługi asynchronicznego programowania, a także łańcuchuje w logicznych klatkach nadrzędnych, dzięki czemu można wykonać więcej czynności po wykonaniu programu logicznego zrozumiał.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. Okno zadań zastępuje okno zadania równoległe i wyświetla zadania, które odnoszą się do określonego punktu przerwania, a także wyświetla wszystkie inne zadania, które są aktualnie aktywne lub zaplanowane w aplikacji.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. Informacje o tej funkcji można znaleźć w sekcji "debugowanie z obsługą asynchroniczną" anonsu .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.

  • Lepsza obsługa wyjątków dla składników środowisko wykonawcze systemu Windows.Better exception support for Windows Runtime components. W Windows 8.1Windows 8.1wyjątki, które powstają w aplikacjach ze sklepu Windows, zachowują informacje o błędzie, który spowodował wyjątek, nawet między granicami języka.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. Informacje o tej funkcji można znaleźć w sekcji "Programowanie aplikacji ze sklepu Windows" w ogłoszeniu .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.

Począwszy od Visual Studio 2013, można użyć narzędzia do optymalizacji opartej na profilach zarządzanych (Mpgo. exe) do optymalizowania Sklep Windows 8.xWindows 8.x Store aplikacji, a także aplikacji klasycznych.Starting with Visual Studio 2013, you can use the Managed Profile Guided Optimization Tool (Mpgo.exe) to optimize Sklep Windows 8.xWindows 8.x Store apps as well as desktop apps.

Nowe funkcje w programie ASP.NET 4.5.1 można znaleźć w temacie ASP.NET and Web Tools for Visual Studio 2013 informacji o wersji.For new features in ASP.NET 4.5.1, see ASP.NET and Web Tools for Visual Studio 2013 Release Notes.

Co nowego w .NET Framework 4,5What's new in .NET Framework 4.5

Klas podstawowychBase classes

  • Możliwość zmniejszenia liczby ponownych uruchomień systemu przez wykrywanie i zamykanie aplikacji .NET Framework 4 podczas wdrażania.Ability to reduce system restarts by detecting and closing .NET Framework 4 applications during deployment. Zobacz zmniejszanie liczby ponownych uruchomień systemu podczas instalacji .NET Framework 4,5.See Reducing System Restarts During .NET Framework 4.5 Installations.

  • Obsługa tablic o rozmiarze większym niż 2 gigabajty (GB) na platformach 64-bitowych.Support for arrays that are larger than 2 gigabytes (GB) on 64-bit platforms. Tę funkcję można włączyć w pliku konfiguracji aplikacji.This feature can be enabled in the application configuration file. Zobacz <gcAllowVeryLargeObjects >, który zawiera również inne ograniczenia dotyczące rozmiaru obiektu i rozmiaru tablicy.See the <gcAllowVeryLargeObjects> element, which also lists other restrictions on object size and array size.

  • Lepsza wydajność dzięki wyrzucaniu elementów bezużytecznych w tle dla serwerów.Better performance through background garbage collection for servers. W przypadku używania wyrzucania elementów bezużytecznych serwera w .NET Framework 4,5, wyrzucanie elementów bezużytecznych w tle jest automatycznie włączone.When you use server garbage collection in the .NET Framework 4.5, background garbage collection is automatically enabled. Zobacz sekcję odzyskiwanie pamięci w tle w temacie Podstawowe informacje dotyczące wyrzucania elementów bezużytecznych .See the Background Server Garbage Collection section of the Fundamentals of Garbage Collection topic.

  • Kompilacja just-in-Time (JIT) w tle, która jest opcjonalnie dostępna na wielordzeniowych procesorach, aby zwiększyć wydajność aplikacji.Background just-in-time (JIT) compilation, which is optionally available on multi-core processors to improve application performance. Zobacz ProfileOptimization.See ProfileOptimization.

  • Możliwość ograniczenia czasu, przez który aparat wyrażeń regularnych podejmie próbę rozpoznania wyrażenia regularnego przed przekroczeniem limitu czasu. Zobacz Właściwość 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.

  • Możliwość zdefiniowania domyślnej kultury dla domeny aplikacji.Ability to define the default culture for an application domain. Zapoznaj się z klasą CultureInfo.See the CultureInfo class.

  • Obsługa kodowania Unicode (UTF-16) w konsoli.Console support for Unicode (UTF-16) encoding. Zapoznaj się z klasą Console.See the Console class.

  • Obsługa wersji uporządkowania ciągów i danych porównawczych.Support for versioning of cultural string ordering and comparison data. Zapoznaj się z klasą SortVersion.See the SortVersion class.

  • Lepsza wydajność podczas pobierania zasobów.Better performance when retrieving resources. Zobacz pakowanie i wdrażanie zasobów.See Packaging and Deploying Resources.

  • Udoskonalenia kompresji ZIP w celu zmniejszenia rozmiaru skompresowanego pliku.Zip compression improvements to reduce the size of a compressed file. Zapoznaj się z przestrzenią nazw System.IO.Compression.See the System.IO.Compression namespace.

  • Możliwość dostosowania kontekstu odbicia w celu przesłania domyślnego zachowania odbicia za pomocą klasy CustomReflectionContext.Ability to customize a reflection context to override default reflection behavior through the CustomReflectionContext class.

  • Obsługa wersji 2008 międzynarodowych nazw domen w programie Applications (IDNA) standard, gdy Klasa System.Globalization.IdnMapping jest używana w 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.

  • Delegowanie porównania ciągów do systemu operacyjnego, który implementuje Unicode 6,0, gdy .NET Framework jest używany w 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. W przypadku uruchamiania na innych platformach .NET Framework obejmuje własne dane porównania ciągów, które implementują standard Unicode 5. x.When running on other platforms, the .NET Framework includes its own string comparison data, which implements Unicode 5.x. Zapoznaj się z klasą String i sekcją uwagi klasy SortVersion.See the String class and the Remarks section of the SortVersion class.

  • Możliwość obliczania kodów skrótów dla ciągów na podstawie poszczególnych domen aplikacji.Ability to compute the hash codes for strings on a per application domain basis. Zobacz <UseRandomizedStringHashAlgorithm > elementu.See <UseRandomizedStringHashAlgorithm> Element.

  • Obsługa odbicia typu jest dzielona między klasy Type i TypeInfo.Type reflection support split between Type and TypeInfo classes. Zobacz odbicie w .NET Framework dla aplikacji ze sklepu Windows.See Reflection in the .NET Framework for Windows Store Apps.

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

W .NET Framework 4,5 Managed Extensibility Framework (MEF) udostępnia następujące nowe funkcje:In the .NET Framework 4.5, the Managed Extensibility Framework (MEF) provides the following new features:

  • Obsługa typów ogólnych.Support for generic types.

  • Model programowania oparty na Konwencji, który umożliwia tworzenie części na podstawie konwencji nazewnictwa, a nie atrybutów.Convention-based programming model that enables you to create parts based on naming conventions rather than attributes.

  • Wiele zakresów.Multiple scopes.

  • Podzbiór MEF, którego można używać podczas tworzenia aplikacji Sklep Windows 8.xWindows 8.x Store.A subset of MEF that you can use when you create Sklep Windows 8.xWindows 8.x Store apps. Ten podzestaw jest dostępny jako pakiet do pobrania z galerii NuGet.This subset is available as a downloadable package from the NuGet Gallery. Aby zainstalować pakiet, Otwórz projekt w programie Visual Studio, wybierz polecenie Zarządzaj pakietami NuGet z menu projekt i Wyszukaj w trybie online pakiet Microsoft.Composition.To install the package, open your project in Visual Studio, choose Manage NuGet Packages from the Project menu, and search online for the Microsoft.Composition package.

Aby uzyskać więcej informacji, zobacz Managed Extensibility Framework (MEF).For more information, see Managed Extensibility Framework (MEF).

Asynchroniczne operacje na plikachAsynchronous file operations

W .NET Framework 4,5 nowe funkcje asynchroniczne zostały dodane do języków C# i Visual Basic.In the .NET Framework 4.5, new asynchronous features were added to the C# and Visual Basic languages. Te funkcje dodają model oparty na zadaniach służący do wykonywania operacji asynchronicznych.These features add a task-based model for performing asynchronous operations. Aby użyć tego nowego modelu, należy użyć metod asynchronicznych w klasach we/wy.To use this new model, use the asynchronous methods in the I/O classes. Zobacz asynchroniczne operacje we/wy pliku.See Asynchronous File I/O.

NarzędziaTools

W .NET Framework 4,5, Generator plików zasobów (Resgen. exe) umożliwia utworzenie pliku. resw do użycia w aplikacjach Sklep Windows 8.xWindows 8.x Store z pliku Resources osadzonego w zestawie .NET Framework.In the .NET Framework 4.5, Resource File Generator (Resgen.exe) enables you to create a .resw file for use in Sklep Windows 8.xWindows 8.x Store apps from a .resources file embedded in a .NET Framework assembly. Aby uzyskać więcej informacji, zobacz Resgen. exe (Generator plików zasobów).For more information, see Resgen.exe (Resource File Generator).

Optymalizacja z przewodnikiem zarządzanym profilem (Mpgo. exe) umożliwia skrócenie czasu uruchamiania aplikacji, wykorzystanie pamięci (rozmiar zestawu roboczego) i przepływność przez optymalizację zestawów obrazów natywnych.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. Narzędzie wiersza polecenia generuje dane profilowe dla zestawów aplikacji obrazu natywnego.The command-line tool generates profile data for native image application assemblies. Zobacz Mpgo. exe (Narzędzie optymalizacji zarządzanego profilu).See Mpgo.exe (Managed Profile Guided Optimization Tool). Począwszy od Visual Studio 2013, można użyć programu Mpgo. exe do optymalizowania Sklep Windows 8.xWindows 8.x Store aplikacji, a także aplikacji klasycznych.Starting with Visual Studio 2013, you can use Mpgo.exe to optimize Sklep Windows 8.xWindows 8.x Store apps as well as desktop apps.

Przetwarzanie równoległeParallel computing

.NET Framework 4,5 zawiera kilka nowych funkcji i ulepszeń obliczeń równoległych.The .NET Framework 4.5 provides several new features and improvements for parallel computing. Obejmują one ulepszoną wydajność, zwiększoną kontrolę, ulepszoną obsługę programowania asynchronicznego, nową bibliotekę przepływu danych oraz ulepszoną obsługę debugowania równoległego i wydajności.These include improved performance, increased control, improved support for asynchronous programming, a new dataflow library, and improved support for parallel debugging and performance analysis. Zapoznaj się z wpisem nowości w programie .net 4,5 na blogu programowanie równoległe przy użyciu platformy .NET.See the entry What’s New for Parallelism in .NET 4.5 in the Parallel Programming with .NET blog.

sieć WebWeb

ASP.NET 4,5 i 4.5.1 Dodawanie powiązania modelu dla formularzy sieci Web, obsługi protokołu WebSocket, obsługi asynchronicznych, ulepszeń wydajności i wielu innych funkcji.ASP.NET 4.5 and 4.5.1 add model binding for Web Forms, WebSocket support, asynchronous handlers, performance enhancements, and many other features. Aby uzyskać więcej informacji, zobacz następujące zasoby:For more information, see the following resources:

sieciNetworking

.NET Framework 4,5 udostępnia nowy interfejs programowania dla aplikacji HTTP.The .NET Framework 4.5 provides a new programming interface for HTTP applications. Aby uzyskać więcej informacji, zobacz nowe przestrzenie nazw System.Net.Http i System.Net.Http.Headers.For more information, see the new System.Net.Http and System.Net.Http.Headers namespaces.

Pomoc techniczna jest również dostępna dla nowego interfejsu programowania do akceptowania i korzystania z połączenia WebSocket przy użyciu istniejących HttpListener i powiązanych klas.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. Aby uzyskać więcej informacji, zobacz nową przestrzeń nazw System.Net.WebSockets i Klasa HttpListener.For more information, see the new System.Net.WebSockets namespace and the HttpListener class.

Ponadto .NET Framework 4,5 obejmuje następujące udoskonalenia sieci:In addition, the .NET Framework 4.5 includes the following networking improvements:

  • Obsługa identyfikatorów URI zgodnych ze standardem RFC.RFC-compliant URI support. Aby uzyskać więcej informacji, zobacz Uri i powiązane klasy.For more information, see Uri and related classes.

  • Obsługa analizy międzynarodowej nazwy domeny (IDN).Support for Internationalized Domain Name (IDN) parsing. Aby uzyskać więcej informacji, zobacz Uri i powiązane klasy.For more information, see Uri and related classes.

  • Obsługa funkcji wielojęzycznych dla adresów E-mail (EAI).Support for Email Address Internationalization (EAI). Aby uzyskać więcej informacji, zobacz Przestrzeń nazw System.Net.Mail.For more information, see the System.Net.Mail namespace.

  • Ulepszona obsługa protokołu IPv6.Improved IPv6 support. Aby uzyskać więcej informacji, zobacz Przestrzeń nazw System.Net.NetworkInformation.For more information, see the System.Net.NetworkInformation namespace.

  • Obsługa gniazd Dual-Mode.Dual-mode socket support. Aby uzyskać więcej informacji, zobacz klasy Socket i TcpListener.For more information, see the Socket and TcpListener classes.

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

W .NET Framework 4,5 Windows Presentation Foundation (WPF) zawiera zmiany i usprawnienia w następujących obszarach:In the .NET Framework 4.5, Windows Presentation Foundation (WPF) contains changes and improvements in the following areas:

  • Nowa kontrolka Ribbon, która umożliwia implementację interfejsu użytkownika wstążki, który obsługuje pasek narzędzi Szybki dostęp, menu aplikacji i karty.The new Ribbon control, which enables you to implement a ribbon user interface that hosts a Quick Access Toolbar, Application Menu, and tabs.

  • Nowy interfejs INotifyDataErrorInfo obsługujący synchroniczną i asynchroniczną weryfikację danych.The new INotifyDataErrorInfo interface, which supports synchronous and asynchronous data validation.

  • Nowe funkcje dla klas VirtualizingPanel i Dispatcher.New features for the VirtualizingPanel and Dispatcher classes.

  • Zwiększona wydajność podczas wyświetlania dużych zestawów pogrupowanych danych i uzyskiwania dostępu do kolekcji w wątkach innych niż interfejs użytkownika.Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.

  • Powiązanie danych z właściwościami statycznymi, powiązanie danych z typami niestandardowymi, które implementują interfejs ICustomTypeProvider i pobierają informacje o powiązaniu danych z wyrażenia powiązania.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.

  • Zmiana położenia danych jako zmiany wartości (kształtowanie na żywo).Repositioning of data as the values change (live shaping).

  • Możliwość sprawdzenia, czy kontekst danych kontenera elementów jest odłączony.Ability to check whether the data context for an item container is disconnected.

  • Możliwość ustawienia czasu, który powinien upłynąć między zmianami właściwości i aktualizacjami źródła danych.Ability to set the amount of time that should elapse between property changes and data source updates.

  • Ulepszona obsługa implementowania słabych wzorców zdarzeń.Improved support for implementing weak event patterns. Ponadto zdarzenia mogą teraz akceptować rozszerzenia znaczników.Also, events can now accept markup extensions.

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

W .NET Framework 4,5 dodano następujące funkcje, które ułatwiają zapisywanie i konserwowanie aplikacji 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:

  • Uproszczenie wygenerowanych plików konfiguracji.Simplification of generated configuration files.

  • Obsługa pierwszego rozwoju kontraktu.Support for contract-first development.

  • Możliwość łatwiejszego konfigurowania trybu zgodności ASP.NET.Ability to configure ASP.NET compatibility mode more easily.

  • Zmiany wartości właściwości domyślnych transportu w celu zmniejszenia prawdopodobieństwa, że będzie konieczne ich ustawienie.Changes in default transport property values to reduce the likelihood that you will have to set them.

  • Aktualizuje klasę XmlDictionaryReaderQuotas, aby zmniejszyć prawdopodobieństwo, że konieczne będzie ręczne skonfigurowanie przydziałów dla czytników słownika XML.Updates to the XmlDictionaryReaderQuotas class to reduce the likelihood that you will have to manually configure quotas for XML dictionary readers.

  • Sprawdzanie poprawności plików konfiguracji WCF przez program Visual Studio w ramach procesu kompilacji, dzięki czemu można wykryć błędy konfiguracji przed uruchomieniem aplikacji.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.

  • Nowe asynchroniczne obsłudze przesyłania strumieniowego.New asynchronous streaming support.

  • Nowe mapowanie protokołu HTTPS, aby ułatwić udostępnianie punktu końcowego za pośrednictwem protokołu HTTPS za pomocą Internet Information Services (IIS).New HTTPS protocol mapping to make it easier to expose an endpoint over HTTPS with Internet Information Services (IIS).

  • Możliwość generowania metadanych w jednym dokumencie WSDL przez dołączenie ?singleWSDL do adresu URL usługi.Ability to generate metadata in a single WSDL document by appending ?singleWSDL to the service URL.

  • Obsługa obiektów WebSockets w celu umożliwienia prawdziwej komunikacji dwukierunkowej za pośrednictwem portów 80 i 443 z charakterystykami wydajności podobnymi do transportu TCP.Websockets support to enable true bidirectional communication over ports 80 and 443 with performance characteristics similar to the TCP transport.

  • Obsługa konfigurowania usług w kodzie.Support for configuring services in code.

  • Etykietki narzędzi edytora XML.XML Editor tooltips.

  • Obsługa buforowania ChannelFactory.ChannelFactory caching support.

  • Obsługa kompresji koderów binarnych.Binary encoder compression support.

  • Obsługa transportu UDP, który umożliwia deweloperom pisanie usług korzystających z komunikatów "Fire i zapomnij".Support for a UDP transport that enables developers to write services that use "fire and forget" messaging. Klient wysyła komunikat do usługi i oczekuje braku odpowiedzi z usługi.A client sends a message to a service and expects no response from the service.

  • Możliwość obsługi wielu trybów uwierzytelniania w jednym punkcie końcowym WCF podczas korzystania z transportu HTTP i zabezpieczeń transportu.Ability to support multiple authentication modes on a single WCF endpoint when using the HTTP transport and transport security.

  • Obsługa usług WCF korzystających z międzynarodowych nazw domen (IDN).Support for WCF services that use internationalized domain names (IDNs).

Aby uzyskać więcej informacji, zobacz co nowego w Windows Communication Foundation.For more information, see What's New in Windows Communication Foundation.

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

W .NET Framework 4,5 dodano kilka nowych funkcji do Windows Workflow Foundation (WF), w tym:In the .NET Framework 4.5, several new features were added to Windows Workflow Foundation (WF), including:

  • Przepływy pracy automatu Stanów, które zostały po raz pierwszy wprowadzone w ramach .NET Framework 4.0.1 (aktualizacja .NET Framework 4 platformy 1).State machine workflows, which were first introduced as part of .NET Framework 4.0.1 (.NET Framework 4 Platform Update 1). Ta aktualizacja zawiera kilka nowych klas i działań, które umożliwiają deweloperom tworzenie przepływów pracy automatu Stanów.This update included several new classes and activities that enabled developers to create state machine workflows. Te klasy i działania zostały zaktualizowane dla .NET Framework 4,5, aby uwzględnić:These classes and activities were updated for the .NET Framework 4.5 to include:

    • Możliwość ustawiania punktów przerwania w Stanach.The ability to set breakpoints on states.

    • Możliwość kopiowania i wklejania przejść w Projektancie przepływu pracy.The ability to copy and paste transitions in the workflow designer.

    • Obsługa tworzenia przejść między udostępnionymi wyzwalaczami przez projektanta.Designer support for shared trigger transition creation.

    • Działania związane z tworzeniem przepływów pracy automatu Stanów, w tym: StateMachine, State i Transition.Activities for creating state machine workflows, including: StateMachine, State, and Transition.

  • Ulepszone Projektant przepływu pracy funkcje, takie jak następujące:Enhanced Workflow Designer features such as the following:

    • Ulepszone możliwości wyszukiwania przepływu pracy w programie Visual Studio, w tym szybkie znajdowanie i Znajdowanie plików.Enhanced workflow search capabilities in Visual Studio, including Quick Find and Find in Files.

    • Możliwość automatycznego tworzenia działania sekwencji po dodaniu drugiego działania podrzędnego do działania kontenera oraz w celu uwzględnienia obu działań w działaniu sekwencji.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.

    • Obsługa panoramowania, która umożliwia zmianę widocznej części przepływu pracy bez używania pasków przewijania.Panning support, which enables the visible portion of a workflow to be changed without using the scroll bars.

    • Nowy widok konspektu dokumentu , który pokazuje składniki przepływu pracy w widoku konspektu w stylu drzewa i umożliwia wybranie składnika w widoku konspektu dokumentu .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.

    • Możliwość dodawania adnotacji do działań.Ability to add annotations to activities.

    • Możliwość definiowania delegatów działań i korzystania z nich przy użyciu projektanta przepływu pracy.Ability to define and consume activity delegates by using the workflow designer.

    • Funkcja AutoConnect i funkcja autoinsert dla działań i przejść w przepływie pracy automatu stanów i schematu blokowego.Auto-connect and auto-insert for activities and transitions in state machine and flowchart workflows.

  • Przechowywanie informacji o stanie widoku dla przepływu pracy w pojedynczym elemencie w pliku XAML, dzięki czemu można łatwo lokalizować i edytować informacje o stanie widoku.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.

  • Działanie kontenera NoPersistScope zapobiegające utrwalaniu działań podrzędnych.A NoPersistScope container activity to prevent child activities from persisting.

  • Obsługa C# wyrażeń:Support for C# expressions:

    • Projekty przepływu pracy używające Visual Basic będą używać wyrażeń Visual Basic, C# a projekty przepływu pracy C# będą używać wyrażeń.Workflow projects that use Visual Basic will use Visual Basic expressions, and C# workflow projects will use C# expressions.

    • C#projekty przepływu pracy utworzone w programie Visual Studio 2010 i zawierające wyrażenia Visual Basic są zgodne z C# projektami przepływu pracy, które C# używają wyrażeń.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.

  • Udoskonalenia wersji:Versioning enhancements:

    • Nowa Klasa WorkflowIdentity, która zapewnia mapowanie między utrwalonym wystąpieniem przepływu pracy i jego definicją przepływu pracy.The new WorkflowIdentity class, which provides a mapping between a persisted workflow instance and its workflow definition.

    • Wykonywanie równoczesne wielu wersji przepływu pracy na tym samym hoście, w tym WorkflowServiceHost.Side-by-side execution of multiple workflow versions in the same host, including WorkflowServiceHost.

    • W obszarze aktualizacja dynamiczna można modyfikować definicję utrwalonego wystąpienia przepływu pracy.In Dynamic Update, the ability to modify the definition of a persisted workflow instance.

  • Opracowywanie usługi przepływu pracy w pierwszej kolejności, która zapewnia obsługę automatycznego generowania działań w celu dopasowania do istniejącego kontraktu usługi.Contract-first workflow service development, which provides support for automatically generating activities to match an existing service contract.

Aby uzyskać więcej informacji, zobacz co nowego w Windows Workflow Foundation.For more information, see What's New in Windows Workflow Foundation.

Platforma .NET dla aplikacji do Sklepu Windows 8.x.NET for Windows 8.x Store apps

aplikacje Sklep Windows 8.xWindows 8.x Store są przeznaczone do określonych współczynników formularzy i wykorzystują możliwości systemu operacyjnego Windows.Sklep Windows 8.xWindows 8.x Store apps are designed for specific form factors and leverage the power of the Windows operating system. Podzestaw .NET Framework 4,5 lub 4.5.1 jest dostępny do kompilowania aplikacji Sklep Windows 8.xWindows 8.x Store dla systemu Windows za pomocą programu C# lub Visual Basic.A subset of the .NET Framework 4.5 or 4.5.1 is available for building Sklep Windows 8.xWindows 8.x Store apps for Windows by using C# or Visual Basic. Ten podzbiór jest nazywany Platforma .NET dla aplikacji do Sklepu Windows 8.x.NET for Windows 8.x Store apps i został omówiony w omówieniu w centrum deweloperów systemu Windows.This subset is called Platforma .NET dla aplikacji do Sklepu Windows 8.x.NET for Windows 8.x Store apps and is discussed in an overview in the Windows Dev Center.

Przenośne biblioteki klas Portable Class Libraries

Przenośna biblioteka klas w programie Visual Studio 2012 (i nowszych wersjach) umożliwia pisanie i kompilowanie zestawów zarządzanych, które działają na wielu platformach .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. Za pomocą przenośnego projektu biblioteki klas należy wybrać platformy (takie jak Windows Phone i Platforma .NET dla aplikacji do Sklepu Windows 8.x.NET for Windows 8.x Store apps) do celów.Using a Portable Class Library project, you choose the platforms (such as Windows Phone and Platforma .NET dla aplikacji do Sklepu Windows 8.x.NET for Windows 8.x Store apps) to target. Dostępne typy i elementy członkowskie w projekcie są automatycznie ograniczone do wspólnych typów i elementów członkowskich na tych platformach.The available types and members in your project are automatically restricted to the common types and members across these platforms. Aby uzyskać więcej informacji, zobacz Przenośna biblioteka klas.For more information, see Portable Class Library.

Zobacz takżeSee also