Neuigkeiten in .NET Framework

 

Veröffentlicht: Oktober 2016

Dieser Artikel beschreibt wichtige neue Features und Verbesserungen in den folgenden Versionen von .NET Framework:

.NET Framework 4.6.2
.NET Framework 4.6.1
.NET 2015 und .NET Framework 4.6
.NET Framework 4.5.2
.NET Framework 4.5.1
.NET Framework 4.5

Dieser Artikel enthält keine umfassenden Informationen zu jeder neuen Funktion und unterliegt möglichen Änderungen. Allgemeine Informationen zu .NET Framework finden Sie unter Getting Started. Informationen zu unterstützten Plattformen finden Sie unter Systemanforderungen. Downloadlinks und installationsanweisungen finden Sie unter Installationshandbuch.

System_CAPS_ICON_note.jpg Hinweis

.NET Framework-Team veröffentlicht Features Out of Band mit NuGet, um die plattformunterstützung zu erweitern und neuen Funktionen, z. B. unveränderliche Auflistungen und SIMD-fähigen vektortypen einzuführen. Weitere Informationen finden Sie unter zusätzliche Klassenbibliotheken und APIs und der .NET Framework und Out-of-Band-Versionen. Finden Sie unter einem vollständige Liste von NuGet-Paketen für .NET Framework oder abonnieren Sie unseres Feeds.

.NET Framework 4.6.2 baut auf .NET Framework 4.6 und 4.6.1 auf und umfasst zahlreiche Fehlerkorrekturen und neue Funktionen in einem gewohnt stabilen Produkt.

Herunterladen und Installieren von .NET Framework 4.6.2

Sie können .NET Framework 4.6.2 von den folgenden Speicherorten herunterladen:

.NET Framework 4.6.2 kann unter Windows 10, Windows 8.1, Windows 7 und den entsprechenden Serverplattformen, beginnend mit Windows Server 2008 R2 SP1, installiert werden. Sie können .NET Framework 4.6.2 wahlweise mit dem Webinstaller oder Offlineinstaller installieren. Die empfohlene Vorgehensweise für die meisten Benutzer ist die Verwendung des Webinstallers.

Sie können als Ziel der .NET Framework 4.6.2 in Visual Studio 2012 oder höher installieren der .NET Framework 4.6.2 Developer Pack.

Neuigkeiten in .NET Framework 4.6.2

.NET Framework 4.6.2 enthält neue Features in den folgenden Bereichen:

Für eine Liste der neuen APIs erweitert die .NET Framework 4.6.2, finden Sie unter .NET Framework 4.6.2 API-Änderungen auf GitHub. Eine Liste der Features Verbesserungen und Fehlerbehebungen in den .NET Framework 4.6.2, finden Sie unter .NET Framework 4.6.2 API-Änderungen auf GitHub. Weitere Informationen finden Sie unter Ankündigung von .NET Framework 4.6.2 im .NET-Blog.

ASP.NET

In .NET Framework 4.6.2 umfasst ASP.NET die folgenden Verbesserungen:

Verbesserte Unterstützung für lokalisierte Fehlermeldungen im Daten-Anmerkung Validierungssteuerelemente
Mit Validierungssteuerelementen für Datenanmerkungen können Sie eine Überprüfung durchführen, indem Sie mindestens ein Attribut einer Klasseneigenschaft hinzufügen. Des Attributs ValidationAttribute.ErrorMessage Element definiert den Text der Fehlermeldung aus, wenn die Validierung fehlschlägt. Beginnend mit .NET Framework 4.6.2, ist es einfach, mit ASP.NET Fehlermeldungen zu lokalisieren. Fehlermeldungen werden lokalisiert, wenn:

  1. Die ValidationAttribute.ErrorMessage in das Validierungsattribut bereitgestellt wird.

  2. die Ressourcendatei im Ordner „App_LocalResources“ gespeichert ist.

  3. Der Name der lokalisierten Ressourcendatei hat die Form DataAnnotation.Localization.{ Namen}.resx, wobei Namen Namen einer Kultur im Format LanguageCode-Landes-/Regionskennzahl oder LanguageCode.

  4. Der Schlüssel der Ressource ist der zugewiesene Zeichenfolge die ValidationAttribute.ErrorMessage -Attribut, und der Wert ist die lokalisierte Fehlermeldung.

Das folgende anmerkungsattribut definiert z. B. die Standardkultur Fehlermeldung für eine ungültige Bewertung.

  
public class RatingInfo  
{  
   [Required(ErrorMessage = "The rating must be between 1 and 10.")]  
   [Display(Name = "Your Rating")]  
   public int Rating { get; set; }  
}  
  

Dann können Sie eine Ressourcendatei DataAnnotation.Localization.fr.resx, erstellen, deren Schlüssel die Zeichenfolge der Fehlermeldung ist und dessen Wert ist die lokalisierte Fehlermeldung. Die Datei muss vorhanden sein, der App.LocalResources Ordner. Beispielsweise ist im folgenden die Schlüssel und seinen Wert in eine lokalisierte Fehlermeldung für Französisch (fr) Sprache:

NameWert
Die Bewertung muss zwischen 1 und 10 liegen.LA Hinweis "doit" Être umfassen Entre 1 und 10.

Diese Datei kann dann

Darüber hinaus ist die Lokalisierung der Datenanmerkung erweiterbar. Entwickler können eigene Zeichenfolge Lokalisierungsexperten Anbieter schließen Sie durch die Implementierung der IStringLocalizerProvider Schnittstelle, um an einer beliebigen Stelle in der Lokalisierungszeichenfolge nicht in einer Ressourcendatei speichern.

Async-Unterstützung mit Sitzungszustandsspeicher-Anbieter
ASP.NET erlaubt nun, dass Methoden, die eine Aufgabe zurückgeben, zusammen mit dem Anbieter für die Speicherung von Daten aus der Variable „Sitzungszustand“ verwendet werden können. Dadurch stehen ASP .NET-Apps die Vorteile zur Verfügung, die async in Sachen Skalierbarkeit bietet. Unterstützt asynchrone Vorgänge mit dem Sitzungsstatus Zertifikatsspeicher Anbieter, ASP.NET beinhaltet eine neue Schnittstelle, System.Web.SessionState.ISessionStateModule, erbt von IHttpModule und ermöglicht es Entwicklern, ihre eigenen Sitzungsstatus Modul "und" Async Sitzungszustandsspeicher Anbieter implementieren. Die Schnittstelle wird wie folgt definiert:

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

Darüber hinaus die SessionStateUtility Klasse enthält zwei neue Methoden IsSessionStateReadOnly und IsSessionStateRequired, die verwendet werden kann, um asynchrone Vorgänge zu unterstützen.

Async-Unterstützung für Ausgabecacheanbieter
Beginnend mit .NET Framework 4.6.2, können Methoden, die Aufgaben zurückgeben, mit Ausgabecacheanbietern verwendet werden, um die Vorteile der Skalierbarkeit von Async bereitzustellen. Anbieter, die diese Methoden bereitstellen, verringern die Anzahl blockierter Threads auf einem Webserver und verbessern die Skalierbarkeit eines ASP.NET-Diensts.

Die folgenden APIs wurden hinzugefügt, um asynchrone Ausgabecacheanbieter zu unterstützen:

Zeichenkategorien

Zeichen in der .NET Framework 4.6.2 klassifiziert sind, basierend auf der Unicode-Standard, Version 8.0.0. In .NET Framework 4.6 und .NET Framework 4.6.1, werden Zeichen basierend auf den Zeichenkategorien von Unicode 6.3 klassifiziert.

Unterstützung für Unicode-8.0 ist beschränkt auf die Klassifizierung von Zeichen von der CharUnicodeInfo Klasse und auf Typen und Methoden, die darauf basieren. Dazu gehören die StringInfo Klasse, die überladene Char.GetUnicodeCategory -Methode, und die Zeichenklassen von der .NET Framework-Modul für reguläre Ausdrücke erkannt. Der Vergleich und die Sortierung von Zeichen und Zeichenfolgen sind von dieser Änderung nicht betroffen und beruhen weiterhin auf dem zugrunde liegenden Betriebssystem oder auf Windows 7-Systemen auf Zeichendaten, die vom .NET Framework bereitgestellt wurden.

Änderungen in Zeichenkategorien Unicode 6.0 bis 7.0 Unicode-, finden Sie unter im Unicode-Standard, Version 7.0.0 Unicode Consortium-Website. Änderungen von Unicode-7.0 auf Unicode-8.0, finden Sie unter im Unicode-Standard, Version 8.0.0 Unicode Consortium-Website.

Kryptografie

Unterstützung für X509 Zertifikate mit FIPS 186-3-DSA
.NET Framework 4.6.2 unterstützt DSA X509-Zertifikate (Digital Signature Algorithm), deren Schlüssel die FIPS 186-2-1024-Bit-Grenze überschreiten.

Zusätzlich zur Unterstützung der größeren Schlüsselgrößen von FIPS 186-3, erlaubt .NET Framework 4.6.2 die Berechnung von Signaturen mit der SHA-2-Familie der Hashalgorithmen (SHA256, SHA384 und SHA512). FIPS 186-3 wird unterstützt durch den neuen System.Security.Cryptography.DSACng Klasse.

Mit den neuesten Änderungen an der RSA -Klasse in .NET Framework 4.6 und die ECDsa -Klasse in .NET Framework 4.6.1, die DSA abstrakten Basisklasse in .NET Framework 4.6.2 verfügt über zusätzliche Methoden zum Aufrufer Verwendung dieser Funktionen ohne Umwandlung. Rufen Sie die DSACertificateExtensions.GetDSAPrivateKey Erweiterungsmethode zum Signieren von Daten, wie im folgenden Beispiel gezeigt.

  
public static byte[] SignDataDsaSha384(byte[] data, X509Certificate2 cert)  
{  
    using (DSA dsa = cert.GetDSAPrivateKey())  
    {  
        return dsa.SignData(data, HashAlgorithmName.SHA384);  
    }  
}  
  

Und rufen Sie die DSACertificateExtensions.GetDSAPublicKey Erweiterungsmethode zum Überprüfen von signierten Daten ab, wie im folgenden Beispiel gezeigt.

  
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  
  

Erhöhte Übersichtlichkeit für Eingaben ECDiffieHellman schlüsselableitung Routinen
In.NET Framework 3.5 wurde die Unterstützung der Elliptic Curve Diffie-Hellman-Schlüsselübereinstimmung mit drei verschiedenen Schlüsselableitungsfunktions-Routinen (KDF) hinzugefügt. Die Eingaben für die und die Routinen für sich selbst über Eigenschaften konfiguriert wurden, auf die ECDiffieHellmanCng Objekt. Da jedoch nicht jede Routine jede input-Eigenschaft liest,sorgte dies bisher bei Entwicklern für reichlich Verwirrungspotenzial.

In diesem in die .NET Framework 4.6.2, die folgenden drei Methoden hinzugefügt wurden die ECDiffieHellman Basisklasse, um diese Routinen KDF und ihre Eingaben klarer darstellen:

Die ECDiffieHellman-MethodeBeschreibung
DeriveKeyFromHash (ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[])Leitet Schlüsselmaterial mithilfe der Formel ab

Hash(secretPrepend
xSecretAppend)

HASH (SecretPrepend OrElse x OrElse SecretAppend)

wobei x ist das berechnete Ergebnis des EC Diffie-Hellman-Algorithmus.
DeriveKeyFromHmac (ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[])Leitet Schlüsselmaterial mithilfe der Formel ab

HMAC (HmacKey SecretPrepend
xSecretAppend)

HMAC (HmacKey SecretPrepend OrElse x OrElse SecretAppend)

wobei x ist das berechnete Ergebnis des EC Diffie-Hellman-Algorithmus.
DeriveKeyTls (ECDiffieHellmanPublicKey, Byte[], Byte[])Leitet Schlüsselmaterial mit dem Ableitungsalgorithmus der TLS-Pseudozufallsfunktion (pseudo-random function; PRF) ab.

Unterstützung für die symmetrische Verschlüsselung beibehalten-Schlüssel
Die Windows-Kryptografiebibliothek (Cryptography API: Next Generation; CNG) hat Unterstützung für die Speicherung persistenter symmetrischer Schlüssel und für die Verwendung von in der Hardware gespeicherter symmetrischer Schlüssel bereitgestellt. .NET Framework 4.6.2 ermöglicht Entwicklern, diese Funktion zu verwenden. Da das Konzept des Schlüsselnamens und des Schlüsselanbieters implementierungsspezifisch ist, erfordert die Nutzung dieser Funktion die Verwendung des Konstruktors der konkreten Implementierungstypen anstatt der bevorzugten Herangehensweise des Unternehmens (z.B. durch aufrufen von Aes.Create).

Unterstützung für symmetrische Verschlüsselung beibehalten Schlüssel vorhanden ist, für die AES (AesCng) und 3DES (TripleDESCng) Algorithmen. Beispiel:

  
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);  
        }  
    }  
}  
  

SignedXml-Unterstützung für das hashing von SHA-2
Die .NET Framework 4.6.2 fügt Unterstützung für die SignedXml Klasse für RSA-SHA256, RSA-SHA384 und RSA-SHA512-PKCS�-Signatur-Methoden und SHA256, SHA384 und SHA512 Verweis Digest-Algorithmen.

Die URI-Konstanten sind für offengelegt SignedXml:

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

Alle Programme, die eine benutzerdefinierte registriert haben SignatureDescription Handler in CryptoConfig zum Hinzufügen der Unterstützung für diese Algorithmen weiterhin so ausgeführt, als würden Sie in der Vergangenheit, aber da gibt es jetzt Plattform Standardeinstellungen, die CryptoConfig Registrierung ist nicht mehr erforderlich.

SqlClient

.NET Framework-Datenanbieter für SQL Server (System.Data.SqlClient) enthält die folgenden neuen Funktionen in der .NET Framework 4.6.2:

Verbindungs-pooling und Timeouts mit Azure SQL-Datenbanken
Wenn das Verbindungspooling aktiviert ist und ein Timeoutfehler oder ein anderer Anmeldefehler auftritt, wird eine Ausnahme zwischengespeichert sowie die zwischengespeicherte Ausnahme wird für jeden nachfolgenden Verbindungsversuch für die nächsten 5 Sekunden bis zu einer Minute. Weitere Informationen finden Sie unter SQL Server Connection Pooling (ADO.NET).

Dieses Verhalten ist bei einer Verbindung zu Azure SQL-Datenbanken unerwünscht, da Verbindungsversuche mit flüchtigen Fehlern fehlschlagen können, die normalerweise schnell wiederhergestellt werden. Das Sperrfristverhalten des Verbindungspools wird entfernt, wenn die Verbindungsversuche zu Azure SQL-Datenbanken fehlschlagen, damit erneute Verbindungsversuche leichter erfolgen können.

Mit dem Hinzufügen des neuen PoolBlockingPeriod-Schlüsselworts können Sie die Sperrfrist auswählen, die für Ihre App am besten geeignet ist. Mögliche Werte:

Auto
Die Sperrfrist des Verbindungspools für eine Anwendung, die eine Verbindung mit einer Azure SQL-Datenbank herstellt, ist deaktiviert, und die Sperrfrist des Verbindungspools für eine Anwendung, die eine Verbindung mit einem anderen SQL-Server herstellt, ist aktiviert. Dies ist der Standardwert. Wenn der Serverendpunktname eine der folgenden Endungen besitzt, werden sie als Azure SQL-Datenbanken bezeichnet:

  • .database.windows.net

  • .database.chinacloudapi.cn

  • .database.usgovcloudapi.net

  • .database.cloudapi.de

AlwaysBlock
Die Sperrfrist des Verbindungspools ist immer aktiviert.

NeverBlock
Die Sperrfrist des Verbindungspools ist immer deaktiviert.

Verbesserungen für immer verschlüsselt.
SQLClient führt zwei Verbesserungen für Always Encrypted ein:

  • Verschlüsselungsmetadaten für Abfrageparameter werden nun zwischengespeichert, um die Leistung von parametrisierten Abfragen von verschlüsselten Datenbankspalten zu verbessert. Mit der SqlConnection.ColumnEncryptionQueryMetadataCacheEnabled Eigenschaft festgelegt, um true (das ist der Standardwert), wenn dieselbe Abfrage mehrmals aufgerufen wird, der Client ruft Parametermetadaten vom Server nur einmal.

  • Verschlüsselung wichtige Einträge im Schlüssel-Zwischenspeicher entfernt werden jetzt nach einer konfigurierbaren Zeitintervall festlegen, verwenden Sie die SqlConnection.ColumnEncryptionKeyCacheTtl Eigenschaft.

Windows Communication Foundation

In .NET Framework 4.6.2 wurde die Windows Communication Foundation in den folgenden Bereichen erweitert:

Unterstützung für die Sicherheit von WCF-Transport für Zertifikate mit CNG gespeichert
Die WCF-Transportsicherheit unterstützt Zertifikate, die mithilfe der Windows-Kryptografiebibliothek (CNG) gespeichert wurden. Diese Unterstützung ist in .NET Framework 4.6.2 auf die Verwendung von Zertifikaten mit einem öffentlichen Schlüssel beschränkt, der über einen Exponent mit einer Länge von nicht mehr als 32 Bit verfügt. Wenn sich eine Anwendung auf den .NET Framework 4.6.2 bezieht, so ist diese Funktion standardmäßig aktiviert.

Für Anwendungen, die als Ziel der .NET Framework 4.6.1 und früheren jedoch ausgeführt werden, auf der .NET Framework 4.6.2, dieses Feature kann aktiviert werden, indem Sie die folgende Zeile hinzu der <> > -Abschnitt der Datei app.config oder web.config.

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

Dies kann auch programmgesteuert mit dem Code durchgeführt werden, so wie in folgendem Beispiel gezeigt:

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

Bessere Unterstützung für mehrere Anpassungsregeln für die Sommerzeit, von der DataContractJsonSerializer-Klasse
Kunden können eine anwendungseinstellung verwenden, um zu bestimmen, ob die DataContractJsonSerializer Klasse unterstützt mehrere Anpassungsregeln einer Zeitzone. Dies ist ein Opt-in-Feature. Fügen Sie die folgende Einstellung der Datei app.config hinzu, um sie zu aktivieren:

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

Wenn dieses Feature aktiviert ist, eine DataContractJsonSerializer -Objekt verwendet die TimeZoneInfo -Typ statt der TimeZone zu Datums-und Uhrzeitdaten zu deserialisierenden Typ. TimeZoneInfo unterstützt mehrere Anpassungsregeln historisch Zeitzonendaten; arbeiten werden TimeZone nicht.

Weitere Informationen zu den TimeZoneInfo Struktur und zeitzonenanpassungen, finden Sie unter Übersicht über Zeitzonen.

Unterstützung zur Beibehaltung von UTC-Uhrzeit serialisieren und Deserialisieren von mit der XMLSerializer-Klasse
Normalerweise, wenn der XmlSerializer Klasse zum Serialisieren von UTC DateTime Wert wird eine serialisierten Zeichenfolge, die beibehalten werden, das Datum und die Uhrzeit, sondern setzt voraus, die Zeit ist die lokale erstellt. Wenn Sie beispielsweise ein UTC-Datum und eine UTC-Uhrzeit instanziieren, indem Sie den folgenden Code aufrufen:

DateTime utc = new DateTime(2016, 11, 07, 3, 0, 0, DateTimeKind.Utc);  

ist das Ergebnis für ein System, das acht Stunden hinter der Zeitzone UTC ist, die serialisierten Zeit-Zeichenfolge „03:00:00.0000000-08:00“ . Serialisierte Werte sind zudem immer als lokale Datums- und Uhrzeitwerte deserialisiert.

Können Sie eine Konfigurationseinstellung für die Anwendung um zu bestimmen, ob die XmlSerializer behält UTC-Zeitzone-Informationen beim Serialisieren und Deserialisieren von DateTime Werte:

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

Wenn dieses Feature aktiviert ist, eine DataContractJsonSerializer -Objekt verwendet die TimeZoneInfo -Typ statt der TimeZone zu Datums-und Uhrzeitdaten zu deserialisierenden Typ. TimeZoneInfo unterstützt mehrere Anpassungsregeln historisch Zeitzonendaten; arbeiten werden TimeZone nicht.

Weitere Informationen zu den TimeZoneInfo Struktur und zeitzonenanpassungen, finden Sie unter Übersicht über Zeitzonen.

NetNamedPipeBinding beste Übereinstimmung
WCF bietet eine neue App-Einstellung, die für Clientanwendungen festgelegt werden kann, um sicherzustellen, dass diese immer eine Verbindung zu dem Dienst herstellen, der an dem URI lauscht, der die höchste Übereinstimmung zu dem aufweist, den die Anwendungen anfordern. Mit dieser app-Einstellung festgelegt false (Standard), es ist möglich, für Clients mit NetNamedPipeBinding zum Herstellen einer Verbindung mit einem Dienst überwacht ein URI, der eine Teilzeichenfolge der angeforderte URI ist.

Angenommen, ein Client versucht, eine Verbindung zu einem Dienst herzustellen, der an net.pipe://localhost/Service1 lauscht, aber ein anderer Dienst auf dem Computer, der mit Administratorrechten ausgeführt wird, lauscht an net.pipe://localhost. Der Client würde versuchen, mit dieser App-Einstellung, die auf false festgelegt ist, eine Verbindung zu dem falschen Dienst herzustellen. Nach dem Festlegen der App-Einstellung auf true, wird der Client stets eine Verbindung zu den passendsten Dienst herstellen.

System_CAPS_ICON_note.jpg Hinweis

Clients mit NetNamedPipeBinding Dienste basierend auf die Basisadresse des Diensts (falls vorhanden) anstatt vollständige Endpunktadresse suchen. Damit diese Einstellung immer funktioniert muss der Dienst eine eindeutige Basisadresse verwenden.

Fügen Sie die folgende App-Einstellung der App.config- oder Web.config-Datei der Anwendung Ihres Clients hinzu, um die Änderung zu aktivieren:

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

SSL 3.0 ist ein Standardprotokoll
Bei der Verwendung von NetTcp im Transportsicherheitsmodus und der Einstellung „Zertifikat“ wird SSL 3.0 nicht länger als eines der Standardprotokolle für das Aushandeln einer sicheren Verbindung verwendet. In den meisten Fällen sollte es keine Auswirkungen auf vorhandene Apps geben, da TLS 1.0 in der Protokollliste für NetTcp enthalten ist. Alle vorhandenen Clients sollten in der Lage sein, eine Verbindung mit mindestens TLS 1.0 auszuhandeln. Wenn Ssl3 erforderlich ist, verwenden Sie eine der folgenden Konfigurationsmechanismen, um es der Liste der ausgehandelten Protokolle hinzuzufügen.

Windows Presentation Foundation (WPF)

In .NET Framework 4.6.2 wurde die Windows Presentation Foundation in den folgenden Bereichen erweitert:

Gruppe sortieren
Eine Anwendung, verwendet eine CollectionView Objekt zum Gruppieren von Daten kann nun explizit deklarieren, wie die Gruppen zu sortieren. Das explizite Sortieren behebt das Problem der nicht-intuitiven Sortierung beim dynamischen Hinzufügen oder Entfernen von Gruppen und beim Ändern des Wert der beim Gruppieren beteiligten Elementeigenschaften durch eine App. Diese Vorgehensweise kann auch die Leistung des Gruppenerstellungsprozesses verbessern, indem Vergleiche der Gruppierungseigenschaften nicht bei der Sortierung der vollständigen Sammlung, sondern bei der Sortierung der Gruppen erfolgen/vorgenommen werden.

Zur Unterstützung der Gruppe sortieren, die neue GroupDescription.SortDescriptions und GroupDescription.CustomSort Eigenschaften beschrieben, wie Sie die Auflistung von Gruppen von erzeugten Sortieren der GroupDescription Objekt. Dies ist analog zu der gleichnamigen wie ListCollectionView Eigenschaften beschrieben, wie Sie die Datenelemente zu sortieren.

Zwei neue statische Eigenschaften der PropertyGroupDescription -Klasse, CompareNameAscending und CompareNameDescending, für die am häufigsten vorkommenden Fälle verwendet werden kann.

Zum Beispiel gruppiert der folgende XAML-Code Daten nach Alter, sortiert die Gruppen in aufsteigender Reihenfolge und gruppierten die Elemente in den einzelnen Gruppen anhand des Nachnamens.

  
<GroupDescriptions>  
     <PropertyGroupDescription   
         PropertyName=”Age”   
         CustomSort=   
              ”{x:Static PropertyGroupDescription.CompareNamesAscending}”/>  
     </PropertyGroupDescription>  
</GroupDescriptions>  
  
<SortDescriptions>  
     <SortDescription PropertyName=”LastName”/>  
</SortDescriptions>  
  

Bildschirmtastatur-Unterstützung
Die Bildschirmtastatur-Unterstützung ermöglicht die fokussierte Verfolgung in WPF-Anwendungen, indem automatisch die neue Bildschirmtastatur in Windows 10 aufgerufen und geschlossen wird, wenn die Fingereingabe von einem Steuerelement empfangen wird, das Texteingabe nutzen kann.

In früheren Versionen des .NET-Frameworks konnte für WPF-Anwendungen die Fokusverfolgung nur aktiviert werden, wenn in WPF die Unterstützung für Stifte und Touchgesten deaktiviert wurde. Die WPF-Anwendungen müssen daher zwischen der vollständiger WPF-Gestenunterstützung und der Windows-Mausheraufstufung wählen.

DPI pro monitor
Um die neueste Vervielfältigung von hohen DPI- und hybrider DPI-Umgebungen für WPF-Apps zu unterstützen, sorgt WPF dafür, dass monitorspezifische DPI-Werte in .NET Framework 4.6.2 erkannt werden. Finden Sie unter der Beispiele und Entwicklerhandbuch auf GitHub für Weitere Informationen dazu, wie Sie die WPF-App zu pro-Monitor DPI-bewusst.

In früheren Versionen von .NET Framework sind WPF-Apps kompatibel mit systemspezifischen DPI-Werten. Die Benutzeroberfläche der Anwendung wird anders gesagt ggf. mit dem Betriebssystem skaliert, abhängig von der DPI des Monitors, auf dem die App gerendert wird. ,

Für apps, die unter der .NET Framework 4.6.2, Sie können Änderungen von DPI pro Monitor in WPF-apps deaktivieren, indem Sie eine Configuration-Anweisung, die <> > Abschnitt der Anwendungskonfiguration Datei wie folgt:

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

Windows Workflow Foundation (WF)

In .NET Framework 4.6.2 wurde die Windows Workflow Foundation im folgenden Bereich erweitert:

Unterstützung für C#-Ausdrücke und IntelliSense im Re-hosted WF-Designer
Beginnend mit .NET Framework 4.5, unterstützt WF C#-Ausdrücke sowohl im Visual Studio-Designer als auch in Codeworkflows. Der neu gehostete Workflow-Designer ist eine wichtige Funktion von WF, die zulässt, dass sich der Workflow-Designer in einer Anwendung außerhalb von Visual Studio befindet (z.B. in WPF). Windows Workflow Foundation bietet die Möglichkeit der Unterstützung von C#-Ausdrücken und IntelliSense im neu gehosteten Workflow-Designer. Weitere Informationen finden Sie unter der Windows Workflow Foundation-Blog.

Availability of IntelliSense when a customer rebuilds a workflow project from Visual Studio
In Versionen von .NET Framework vor .NET Framework 4.6.2 wird IntelliSense in WF-Designer unterbrochen, wenn ein Kunde eine Workflowprojekt von Visual Studio neu erstellt. Während der Projektbuild erfolgreich ist, die Workflowtypen im Designer nicht gefunden werden und Warnungen von IntelliSense für die fehlenden Workflowtypen, in angezeigt der Fehlerliste Fenster. .NET Framework 4.6.2 behandelt dieses Problem und macht IntelliSense verfügbar.

Workflow-V1-Clientanwendungen mit einem Workflow überwachen auf jetzt ausführen, im FIPS-Modus
Computer mit aktiviertem FIPS-Kompatibilitätsmodus können jetzt erfolgreich eine Anwendung, die dem Stil der Workflowversion 1 entspricht, mit aktivierter Workflowüberwachung ausführen. Sie müssen die folgenden Änderungen in Ihrer app.config-Datei vornehmen, um dieses Szenario zu aktivieren:

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

Wenn dieses Szenario nicht aktiviert ist, führt das Ausführen der Anwendung weiterhin dazu, dass eine Ausnahme mit folgender Meldung ausgelöst wird: „Diese Implementation ist nicht Teil der Windows Platform FIPS-überprüften kryptografischen Algorithmen.“

Workflow-Verbesserungen bei dynamischen Updates mit Visual Studio-Workflow-Designer
Die Workflow-Designer, Flussdiagramm-Aktivitätsdesigner, und Workflow-Aktivitätsdesigner jetzt erfolgreich laden und Anzeigen von Workflows, die nach dem Aufruf gespeichert wurden die DynamicUpdateServices.PrepareForUpdate Methode. In Versionen von .NET Framework vor der .NET Framework 4.6.2, das Laden einer XAML-Datei in Visual Studio für einen Workflow, der nach dem Aufruf gespeichert wurde DynamicUpdateServices.PrepareForUpdate kann dazu führen, dass die folgenden Probleme:

  • Workflow-Designer kann nicht die XAML-Datei ordnungsgemäß geladen (bei der ViewStateData.Id befindet sich am Ende der Zeile).

  • Der Flussdiagramm-Aktivitätsdesigner oder andere Workflow-Aktivitätsdesigner können möglicherweise alle Objekte an ihrem Standardspeicherort anzeigen, im Gegensatz zu angefügten Eigenschaftswerten.

ClickOnce

ClickOnce wurde zur Unterstützung von TLS 1.1 und TLS 1.2 neben dem 1.0-Protokoll aktualisiert, das schon unterstützt wird. ClickOnce erkennt automatisch, welches Protokoll erforderlich ist. Es sind keine zusätzlichen Schritte innerhalb der ClickOnce-Anwendung erforderlich, um die TLS 1.1 und 1.2-Unterstützung zu aktivieren.

Konvertieren von Windows Forms und WPF-Apps in UWP-Apps

Windows bietet nun Möglichkeiten, vorhandene Windows Desktop-Apps, einschließlich WPF- und Windows Forms-Apps, auf der Universal Windows Platform (UWP) bereitzustellen. Diese Technologie agiert als Brücke, indem sie Ihnen ermöglicht, Ihre vorhandene Codebasis nach und nach zu UWP zu migrieren und so Ihre App auf allen Windows 10-Geräten bereitzustellen.

Konvertierte Desktop-Apps erlangen eine App-Identität ähnlich der App-Identität von UWP-Apps, wodurch UWP-APIs zugänglich gemacht werden, um Funktionen wie Live-Kacheln und Benachrichtigungen zu aktivieren. Die App verhält sich weiterhin wie zuvor und wird als voll vertrauenswürdige App ausgeführt. Sobald die App konvertiert ist, kann ein App-Container-Prozess zum vorhandenen voll vertrauenswürdigen Prozess hinzugefügt werden, um eine adaptive Benutzeroberfläche hinzuzufügen. Wenn alle Funktionen in den App-Container-Prozess verschoben werden, kann der vollständig vertrauenswürdige Prozess entfernt werden, und die neue UWP-App kann auf allen Windows 10-Geräten zur Verfügung gestellt werden.

Verbesserungen beim Debugging

Die nicht verwalteten Debug-API wurde verbessert, der .NET Framework 4.6.2 zusätzlichen Analysen durchführen bei einer NullReferenceException wird ausgelöst, sodass es möglich ist, zu bestimmen, welche Variablen in einer einzelnen Zeile des Quellcodes ist null. Um dieses Szenario zu unterstützen, wurden die folgenden APIs der nicht verwalteten Debug-API hinzugefügt.

  • Die ICorDebugCode4, ICorDebugVariableHome, und ICorDebugVariableHomeEnum Schnittstellen, die den systemeigenen Häuser verwaltete Variablen verfügbar zu machen. Dadurch Debuggern bereitgestellt werden, führen Sie einige Datenfluss Codeanalyse bei einer NullReferenceException tritt auf, und Abwärtskompatibilität arbeiten, um die verwaltete Variablen zu bestimmen, die den systemeigenen Speicherort entspricht, die null.

  • Die ICorDebugType2::GetTypeID Methode bietet eine Zuordnung für ICorDebugType auf COR_TYPEID, die ermöglicht es dem Debugger zum Abrufen einer COR_TYPEID ohne eine Instanz der ICorDebugType. Vorhandenen APIs auf COR_TYPEID kann dann verwendet werden, um das Klassenlayout des Typs zu bestimmen.

.NET Framework 4.6.1 enthält neue Features in den folgenden Bereichen:

Weitere Informationen zu .NET Framework 4.6.1 finden Sie unter den folgenden Themen:

Kryptografie: Unterstützung für X509-Zertifikate mit ECDSA

RSACng-Unterstützung für X509-Zertifikate in .NET Framework 4.6. .NET Framework 4.6.1 fügt Unterstützung für ECDSA (Elliptic Curve Digital Signature Algorithm) X509-Zertifikate hinzu.

ECDSA bietet eine bessere Leistung und einen sichereren Kryptografiealgorithmus als RSA. Somit ist die Lösung eine hervorragende Wahl, wenn es um TLS (Transport Layer Security)-Leistung und Skalierbarkeit geht. Die .NET Framework-Implementierung schließt Aufrufe in die vorhandene Windows-Funktionalität ein.

Im folgenden Codebeispiel wird gezeigt, wie einfach es ist, eine Signatur für einen Bytedatenstrom mit der neuen in .NET Framework 4.6.1 enthaltenen ECDSA-Unterstützung für X509-Zertifikate zu generieren.

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);
    }
}

Dies steht in deutlichem Gegensatz zu dem Code, der zum Generieren einer Signatur in .NET Framework 4.6 erforderlich war.

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);
    }
}   

ADO.NET

ADO.NET wurde um die folgenden Features erweitert:

"Always Encrypted"-Unterstützung für hardwaregeschützte Schlüssel
ADO.NET unterstützt jetzt die systemeigene Speicherung von "Always Encrypted"-Spaltenhauptschlüsseln in Hardwaresicherheitsmodulen (Hardware Security Modules, HSMs). Mit dieser Unterstützung profitieren Kunden von asymmetrischen, in HSMs gespeicherten Schlüsseln, ohne benutzerdefinierte Spaltenhauptschlüssel-Speicheranbieter zu schreiben und in Anwendungen registrieren zu müssen.

Kunden müssen die vom HSM-Anbieter bereitgestellten CSP-Anbieter oder CNG-Schlüsselspeicheranbieter auf den App-Servern oder Clientcomputern installieren, um über die in einem HSM gespeicherten Spaltenhauptschlüssel auf die mit "Always Encrypted" geschützten Daten zuzugreifen.

Verbesserung der MultiSubnetFailover Verbindungsverhalten für AlwaysOn
SqlClient ermöglicht jetzt automatisch schnellere Verbindungen mit einer AlwaysOn-Verfügbarkeitsgruppe (Availability Group, AG). Er erkennt auf transparente Weise, ob die Anwendung eine Verbindung mit einer AlwaysOn-Verfügbarkeitsgruppe in einem anderen Subnetz herstellt, ermittelt schnell den aktiven Server und stellt eine Verbindung mit dem Server her. Vor dieser Version musste eine Anwendung “MultisubnetFailover=true” in die Verbindungszeichenfolge einschließen, um anzugeben, dass eine Verbindung mit einer AlwaysOn-Verfügbarkeitsgruppe hergestellt wurde. Wenn das Verbindungsschlüsselwort nicht auf true festgelegt wird, kann bei der Verbindung mit einer AlwaysOn-Verfügbarkeitsgruppe ein Anwendungstimeout auftreten. Mit dieser Version eine Anwendung ist nicht müssen MultiSubnetFailover auf true nicht mehr. Weitere Informationen zu SqlClient-Unterstützung für AlwaysOn-Verfügbarkeitsgruppen finden Sie unter SqlClient Support for High Availability, Disaster Recovery.

Windows Presentation Foundation (WPF)

Windows Presentation Foundation umfasst eine Reihe von Verbesserungen und Änderungen.

Leistungssteigerung
Die Verzögerung beim Auslösen von Touchereignissen wurde in .NET Framework 4.6.1 behoben. Darüber hinaus geben Sie in einem RichTextBox Steuerelement der Render-Thread nicht mehr während der schnellen Eingabe verknüpft.

Verbesserte Rechtschreibprüfung
Die Rechtschreibprüfung in WPF wurde unter Windows 8.1 und höheren Versionen aktualisiert, um die Betriebssystemunterstützung für die Rechtschreibprüfung zusätzlicher Sprachen zu nutzen. Bezüglich der Funktionalität in Windows-Versionen vor Windows 8.1 gibt es keine Änderung.

Wie in früheren Versionen von .NET Framework, die Sprache für eine Textfeld steuern Ora RichTextBox Block wird anhand der Informationen in der folgenden Reihenfolge ermittelt:

  • xml:lang, falls vorhanden.

  • Aktuelle Eingabesprache

  • Aktuelle Threadkultur

Weitere Informationen zur sprachunterstützung von in WPF finden Sie unter der WPF-Blog-Beitrag zu den Features von .NET Framework 4.6.1.

Zusätzliche Unterstützung für benutzerdefinierte Wörterbücher pro Benutzer
In .NET Framework 4.6.1 erkennt WPF benutzerdefinierte Wörterbücher, die global registriert sind. Diese Funktion ist zusätzlich zur Registrierung der Wörterbücher pro Steuerelement verfügbar.

In früheren WPF-Versionen wurden Listen ausgeschlossener Wörter und AutoKorrektur-Listen von benutzerdefinierten Wörterbüchern nicht erkannt. Diese werden unter Windows 8.1 und Windows 10 mittels Dateien unterstützt, die im Verzeichnis %AppData%\Microsoft\Spelling\<language tag> abgelegt werden können. Für diese Dateien gelten die folgenden Regeln:

  • Die Dateien sollten über die Erweiterungen ".dic" (hinzugefügte Wörter), ".exc" (ausgeschlossene Wörter) oder ".acl" (AutoKorrektur-Wörter) verfügen.

  • Außerdem sollten sie das UTF-16LE-Nur-Text-Format aufweisen, das mit der Bytereihenfolgenmarke (Byte Order Mark, BOM) beginnt.

  • Jede Zeile sollte ein Wort (in der hinzugefügten und ausgeschlossenen Wortlisten) bestehen oder ein AutoKorrektur-Paar mit den Wörtern getrennt durch einen senkrechten Strich ("|") (in der AutoKorrektur-Liste).

  • Diese Dateien sind schreibgeschützt und werden vom System nicht geändert.

System_CAPS_ICON_note.jpg Hinweis

Diese neuen Dateiformate werden von der WPF-Rechtschreibprüfungs-API nicht direkt unterstützt, sodass die benutzerdefinierten Wörterbücher, die in Anwendungen für WPF bereitgestellt werden, weiterhin LEX-Dateien verwenden sollten.

Proben
Es gibt eine Reihe von WPF-Beispiele auf MSDN. Werden mehr als 200 der am häufigsten verwendeten Beispiele (basierend auf ihrer Verwendung) verschoben, in einer Open Source-GitHub-Repository. Helfen Sie uns, unsere Beispiele zu verbessern, indem Sie senden uns eine Pull-Anforderung oder Öffnen einer GitHub Problem.

DirectX-Erweiterungen
WPF enthält eine NuGet-Paket , die bietet die neue Implementierung von D3DImage , mit denen Sie für die Zusammenarbeit mit DX10 und Dx11 Inhalt. Der Code für dieses Paket geöffnet wurde bezogen und steht auf GitHub.

Windows Workflow Foundation: Transaktionen

Die Transaction.EnlistPromotableSinglePhase Methode können nun einen verteilten Transaktions-Managers als MS DTC die Transaktion höher gestuft. Sie dazu eine Transaktion Projektträger-GUID der neuen Transaction.EnlistPromotableSinglePhase (IPromotableSinglePhaseNotification, Guid) überladen. Wenn dieser Vorgang erfolgreich ist, unterliegt die Transaktionsfunktionalität gewissen Einschränkungen. Sobald Projektträger eine nicht-MS-DTC-Transaktion eingetragen ist, löst die folgenden Methoden eine TransactionPromotionException , da diese Methoden zu MS DTC heraufgestuft erfordern:

Sobald ein Nicht-MSDTC-Transaktionspromoter eingetragen wird, muss er mit dauerhaften Eintragungen verwendet werden. Dabei werden die von ihm definierten Protokolle verwendet. Die Guid der Transaktion Projektträger abgerufen werden kann, mithilfe der PromoterType Eigenschaft. Wenn die Transaktion fördert, die Transaktion Projektträger bietet ein Byte Array, das höher gestufte Token darstellt. Eine Anwendung kann die höher gestuften Token für eine Transaktion MSDTC nicht höher gestuft mit Abrufen der GetPromotedToken Methode.

Benutzer des neuen Transaction.EnlistPromotableSinglePhase (IPromotableSinglePhaseNotification, Guid) Überladung muss eine bestimmte Aufruffolge in der Reihenfolge für das Heraufstufen erfolgreich abgeschlossen. Diese Regeln werden in der Dokumentation der Methode beschrieben.

Profilerstellung

Die nicht verwaltete Profilerstellungs-API wurde wie folgt erweitert:

Bessere Unterstützung für den Zugriff auf die PDB-Dateien in den ICorProfilerInfo7 Schnittstelle
In ASP.Net 5 werden Assemblys im Arbeitsspeicher immer häufiger mit Roslyn kompiliert. Für Entwickler von Profilertools bedeutet dies, dass PDB-Dateien, die früher auf Datenträgern serialisiert wurden, u. U. nicht mehr vorkommen. Profilertools verwenden PDB-Dateien häufig, um Codezeilen wieder den Quellzeilen zuzuordnen, beispielsweise für die Codeabdeckung oder zeilenweise Leistungsanalysen. Die ICorProfilerInfo7 Schnittstelle enthält nun zwei neue Methoden ICorProfilerInfo7::GetInMemorySymbolsLength und ICorProfilerInfo7::ReadInMemorySymbols, bereitzustellen, diese Profilerbefehlszeilentools mit Zugriff auf die PDB-Daten im Arbeitsspeicher mithilfe der neuen APIs ein Profiler kann erhalten Sie den Inhalt einer PDB im Arbeitsspeicher als Bytearray und dann verarbeiten oder auf der Festplatte zu serialisieren.

Bessere Instrumentation mit der ICorProfiler-Schnittstelle
Profiler, die die ReJit-Funktionalität der ICorProfiler-API für die dynamische Instrumentation verwenden, sind jetzt in der Lage, einige Metadaten zu ändern. Früher konnte IL durch diese Tools jederzeit instrumentiert werden, während Metadaten nur zur Ladezeit des Moduls geändert werden konnten. Da IL auf Metadaten verweist, sind die möglichen Instrumentationsarten eingeschränkt. Wir haben einige dieser Grenzwerte transformiert, durch Hinzufügen der ICorProfilerInfo7::ApplyMetaData -Methode unterstützt eine Teilmenge der Metadaten, nachdem das Modul, insbesondere lädt durch Hinzufügen neuer AssemblyRef, TypeRef, TypeSpec, MemberRef, MemberSpec, und UserString Datensätze. Diese Änderung erweitert die Möglichkeiten der dynamischen Instrumentation.

NGEN (Native Image Generator)-PDBs

Die computerübergreifende Ereignisablaufverfolgung ermöglicht Kunden die Profilerstellung für ein Programm auf Computer A und die Anzeige der Profilerstellungsdaten per Quellzeilenzuordnung auf Computer B. Unter früheren .NET Framework-Versionen musste der Benutzer alle Module und systemeigenen Images vom Profilcomputer auf den Analysecomputer kopieren, der die IL PDB-Datei für die Zuordnung zwischen Quellzeilen und systemeigenen Images enthielt. Während dies bei kleineren Dateien wie Handy-Apps durchaus gut funktionieren kann, können Desktopsystemdateien ziemlich anwachsen und beträchtliche Zeit für das Kopieren erfordern.

Bei NGEN PDB-Dateien kann NGen eine PDB-Datei erstellen, die die Zuordnung zwischen IL und systemeigenen Images enthält, ohne dass eine Abhängigkeit von der IL PDB-Datei besteht. In diesem Szenario computerübergreifend Event Tracing erforderlich ist, ist das systemeigene Abbild PDB-Datei zu kopieren, der von Computer A mit Computer B generiert und verwendet Debuggen-Schnittstelle Zugriff APIs zum Lesen der IL-PDB-Quelle-zu-IL-Zuordnung und die systemeigene Images PDB IL-Code und systemeigenem Zuordnung. Durch die Kombination beider Zuordnungen entsteht eine Zuordnung zwischen Quellzeilen und systemeigenem Image. Da die PDB-Datei für systemeigene Images viel kleiner als alle Module und systemeigenen Images ist, wird das Kopieren von Computer A auf Computer B deutlich beschleunigt.

In .NET 2015 werden .NET Framework 4.6 und .NET Core eingeführt. Einige neue Funktionen gelten für beide, während andere Funktionen für .NET Framework 4.6 bzw. .NET Core spezifisch sind.

  • ASP.NET 5

    .NET 2015 enthält ASP.NET 5, eine schlanke .NET-Plattform zum Erstellen moderner, cloudbasierter Apps. Die Plattform ist modular aufgebaut, sodass Sie nur die Funktionen aufnehmen können, die Sie in Ihrer Anwendung benötigen. Sie kann auf IIS oder eigenständig in einem benutzerdefinierten Prozess gehostet werden, und Sie können Apps mit verschiedenen Versionen von .NET Framework auf demselben Server ausführen. Sie umfasst ein neues Umgebungskonfigurationssystem, das für die Cloudbereitstellung entwickelt wurde.

    MVC, Web-API und Webseiten sind in einem einzigen Framework namens MVC 6 vereint. Sie erstellen ASP.NET 5-Apps mithilfe der neuen Tools in Visual Studio 2015. Ihre vorhandenen Anwendungen funktionieren im neuen .NET Framework. Um jedoch eine App zu erstellen, die MVC 6 oder SignalR 3 verwendet, müssen Sie das Projektsystem in Visual Studio 2015 verwenden.

    Weitere Informationen finden Sie unter ASP.NET 5.

  • Updates für ASP.NET

    • Task-basierte API für die asynchrone Antwort leeren

      ASP.NET bietet nun eine einfache Aufgabe-basierte API für das asynchrone Antwort zu leeren, HttpResponse.FlushAsync, mit der Antworten asynchron geleert werden, mit der Sprache async/await unterstützen.

    • Model binding supports task-returning methods

      In .NET Framework 4.5, ASP.NET wurde das Modellbindungsfeature hinzugefügt, das einen erweiterbaren, codeorientierten Ansatz für CRUD-basierte Datenvorgänge in Web Forms-Seiten und Benutzersteuerelementen ermöglicht. Das Modell Bindungssystem unterstützt jetzt Aufgabe-Modell Bindung Methoden zurückgeben. Dadurch erhalten Web Forms-Entwickler die Vorteile hinsichtlich der Asynchronität und die Einfachheit des Datenbindungssystems beim Verwenden neuerer Versionen von ORMs, einschließlich des Entity Frameworks.

      Die asynchrone Modellbindung wird durch die aspnet:EnableAsyncModelBinding-Konfigurationseinstellung gesteuert.

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

      Bei auf .NET Framework 4.6 abzielenden Apps wird der Standardwert auf true festgelegt. Bei Apps unter .NET Framework 4.6, die auf eine frühere Version von .NET Framework abzielen, ist false der Standard. Dies kann aktiviert werden, indem die Konfigurationseinstellung auf true festgelegt wird.

    • HTTP/2-Unterstützung (Windows 10)

      HTTP/2 ist eine neue Version des HTTP-Protokolls, die bietet wesentlich bessere Nutzung von Verbindungen (weniger Roundtrips zwischen Client und Server), was zu Latenz Webseiten für Benutzer laden. Webseiten profitieren am meisten von HTTP/2 (im Gegensatz zu Services), da das Protokoll Anforderungen mehrerer Artefakte in einem Aufruf zusammenfasst und so optimiert. Die HTTP/2-Unterstützung wurde zu ASP.NET in .NET Framework 4.6 hinzugefügt. Da Netzwerkfunktionen auf mehreren Ebenen vorhanden sind, waren neue Funktionen in Windows, IIS und ASP.NET erforderlich, um HTTP/2 nutzen zu können. Sie müssen Windows 10 ausführen, um HTTP/2 mit ASP.NET nutzen zu können.

      HTTP/2 wird ebenfalls unterstützt und auf standardmäßig für Windows 10 universelle Windows-Plattform (UWP) apps, die die System.Net.Http.HttpClient API.

      Um die Möglichkeit, verwenden Sie die PUSH_PROMISE -Features in ASP.NET Applications, eine neue Methode mit zwei Überladungen PushPromise(String) und PushPromise (String, String, NameValueCollection), hinzugefügt wurde der HttpResponse Klasse.

      System_CAPS_ICON_note.jpg Hinweis

      Während ASP.NET 5 Unterstützung für HTTP/2 enthält, wurde noch keine Unterstützung für das PUSH PROMISE-Feature hinzugefügt.

      Browser und Webserver (IIS unter Windows) erledigen die gesamte Arbeit. Sie müssen keine umfangreichen Aufgaben für Ihre Benutzer ausführen.

      Die meisten der wichtigen Browser unterstützen HTTP/2, daher ist es wahrscheinlich, dass Ihre Benutzer über HTTP/2-Unterstützung profitieren können, wenn Ihr Server es unterstützt.

    • Unterstützung für das Tokenbindungsprotokoll

      Microsoft und Google haben einen neuen Ansatz für Authentifizierung, genannt Zusammenarbeit der Tokenbindungsprotokoll. Voraussetzung ist, dass die Authentifizierungstoken (in Ihrem Browsercache) gestohlen und von Kriminellen ansonsten sicheren Zugriff auf die Ressourcen (z. B. Ihr Bankkonto) ohne Ihr Kennwort oder andere geschützte Informationen verwendet werden können. Das neue Protokoll zielt darauf ab, dieses Problem zu minimieren.

      Das Tokenbindungsprotokoll wird in Windows 10 als Browserfunktion implementiert. ASP.NET-Anwendungen werden in das Protokoll einbezogen, damit die Legitimität von Authentifizierungstoken überprüft werden kann. Die Client- und Serverimplementierungen stellen den durch das Protokoll angegebenen umfassenden Schutz bereit.

    • Zufällige Zeichenfolge Hash-Algorithmen

      .NET Framework 4.5 eingeführte ein zufällige Zeichenfolge Hashalgorithmus. Dieser wurde jedoch durch ASP.NET nicht unterstützt, da einige der ASP.NET von einem stabilen Hash abhängig sind. In .NET Framework 4.6 werden nun zufällige Zeichenfolgen-Hashalgorithmen unterstützt. Verwenden Sie zum Aktivieren dieses Features die aspnet:UseRandomizedStringHashAlgorithm-Konfigurationseinstellung.

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

    ADO .NET unterstützt jetzt das in SQL Server 2016 Community Technology Preview 2 (CTP2) verfügbare Feature zum grundsätzlichen Verschlüsseln. Mit der grundsätzlichen Verschlüsselung kann SQL Server Operationen zu verschlüsselten Daten durchführen und das Beste ist, der Verschlüsselungsschlüssel ist bei der Anwendung in der vertrauenswürdigen Umgebung des Kunden abgelegt, nicht auf dem Server. Die grundsätzliche Verschlüsselung sichert Kundendaten so, dass DBAs keinen Zugriff auf Textdaten haben. Die Verschlüsselung und Entschlüsselung von Daten erfolgt transparent auf Treiberebene, dadurch werden die an vorhandenen Anwendungen erforderlichen Änderungen auf ein Mindestmaß reduziert. Weitere Informationen finden Sie unter immer verschlüsselt (Datenbankmodul) und immer verschlüsselt (Entwicklung).

  • 64-Bit-JIT-Compiler für verwalteten code

    .NET Framework 4.6 umfasst eine neue Version des 64-Bit-JIT-Compilers (ursprünglicher Codename „RyuJIT“). Der neue 64-Bit-Compiler bietet erhebliche Leistungsverbesserungen im Vergleich zum älteren 64-Bit-JIT-Compiler. Der neue 64-Bit-Compiler wird für 64-Bit-Prozesse aktiviert, die zusätzlich zu .NET Framework 4.6 ausgeführt werden. Ihre App wird in einem 64-Bit-Prozess ausgeführt, wenn sie als 64 Bit oder AnyCPU kompiliert ist und auf einem 64-Bit-Betriebssystem ausgeführt wird. Obwohl der Übergang zum neuen Compiler so transparent wie möglich verlief, sind Änderungen im Verhalten möglich. Wir möchten Sie bitten, uns direkt über Probleme zu informieren, die beim Verwenden des neuen JIT-Compilers auftreten. Wenden Sie sich an uns über Microsoft Connect , wenn ein Problem auftritt, die mit der neuen 64-Bit-JIT-Compiler verknüpft werden kann.

    Der neue 64-Bit-JIT-Compiler enthält auch SIMD Hardwarebeschleunigungsfunktionen mit SIMD-fähige Typen in der System.Numerics -Namespace, die gute Leistungssteigerungen ergeben kann.

  • Verbesserungen am assemblylader

    Das Assemblyladeprogramm verwendet nun den Arbeitsspeicher effizienter, indem IL-Assemblys entladen werden, nachdem ein entsprechendes NGEN-Image geladen wurde. Durch diese Änderung wird der virtuelle Arbeitsspeicher verringert. Dies ist besonders bei großen 32-Bit-Apps (wie Visual Studio) hilfreich. Zudem wird dadurch physischer Arbeitsspeicher eingespart.

  • Änderungen an Basisklassenbibliotheken

    Viele neue APIs wurden im Umfeld von .NET Framework 4.6 hinzugefügt, um wichtige Szenarios zu ermöglichen. Dazu zählen die folgenden Änderungen und Ergänzungen:

    • IReadOnlyCollection<> </> > Implementierungen

      Zusätzliche Auflistungen implementieren IReadOnlyCollection<> </> > wie z. B. Warteschlange<> </> > und Stapel<>>.

    • CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture

      Die CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture Eigenschaften sind jetzt Schreib-/ statt schreibgeschützt. Wenn Sie ein neues zuweisen CultureInfo Objekt auf diese Eigenschaften der aktuellen Threadkultur definiert die Thread.CurrentThread.CurrentCulture -Eigenschaft und die aktuelle UI-Threadkultur definiert die Thread.CurrentThread.CurrentUICulture ändern sich ebenfalls.

    • Verbesserte Garbagecollection (GC)

      Die GC -Klasse enthält nun TryStartNoGCRegion und EndNoGCRegion Methoden, die Ihnen ermöglichen, Garbagecollection während der Ausführung eines kritischen Pfads zu unterbinden.

      Eine neue Überladung der GC. Sammeln von (Int32, GCCollectionMode, Boolean, Boolean) Methode können Sie steuern, ob den kleinen Objektheap und der große Objektheap eine Komprimierung und komprimiert oder nur eine Komprimierung.

    • SIMD-fähige Typen

      Die System.Numerics Namespace enthält nun eine Reihe von SIMD-fähigen Datentypen wie z. B. Matrix3x2, Matrix4x4, Ebene, Quaternion, Vector2, Vector3, und Vector4.

      Da der neue 64-Bit-JIT-Compiler zudem Hardware-SIMD-Beschleunigungsfeatures enthält, liegen insbesondere erhebliche Leistungsverbesserungen beim Verwenden von SIMD-fähigen Typen mit dem neuen 64-Bit-JIT-Compiler vor.

    • Kryptografieupdates

      Die System.Security.Cryptography API wird aktualisiert, um die Unterstützung der Windows CNG-Kryptografie-APIs. Frühere Versionen von .NET Framework haben völlig auf verlassen ein frühere Version der Windows-Kryptografie-APIs als Grundlage für die System.Security.Cryptography Implementierung. Wir hatten die CNG-API, Unterstützung, da er unterstützt moderne Kryptografiealgorithmen, die für bestimmte Kategorien von apps wichtig sind.

      .NET Framework 4.6 umfasst die folgenden neuen Erweiterungen, um die Kryptografie-API von Windows CNG zu unterstützen:

      • Ein Satz von Erweiterungsmethoden für X509-Zertifikate, System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPublicKey(System.Security.Cryptography.X509Certificates.X509Certificate2) und System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2), die nach Möglichkeit anstelle einer CAPI-basierten Implementierung eine CNG-basierte Implementierung zurückgeben. (Für einige Smartcards usw. ist weiterhin CAPI erforderlich, und die APIs verarbeiten den Fallback).

      • Die System.Security.Cryptography.RSACng -Klasse, die eine CNG-Implementierung des RSA-Algorithmus bietet.

      • Erweiterungen an der RSA-API, damit für allgemeine Aktionen keine Umwandlung mehr erforderlich ist. Z. B. Verschlüsseln von Daten mithilfe einer X509Certificate2 Objekt erfordert Code wie den folgenden in früheren Versionen von .NET Framework.

                    RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey;
                    byte[] oaepEncrypted = rsa.Encrypt(data, true);
                    byte[] pkcs1Encrypted = rsa.Encrypt(data, false);
        

        Code, der die neuen Kryptografie-APIs in .NET Framework 4.6 verwendet, kann wie folgt umgeschrieben werden, um die Umwandlung zu vermeiden.

                 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);
        

    • Unterstützung für das Konvertieren von Datums- und Zeitangaben zu oder von Unix-Zeit

      Die folgenden neuen Methoden hinzugefügt wurden die DateTimeOffset -Struktur zur Unterstützung der Konvertierung von Datums-und Uhrzeitwerte zu oder von Unix-Zeit:

    • Kompatibilitätsoptionen

      Die neue AppContext Klasse fügt eine neue Kompatibilitätsfunktion, die es Autoren von Bibliotheken ermöglicht, die ihren Benutzern eine einheitliche abwahlmechanismus für neue Funktionalitäten bereitzustellen. Sie richtet einen lose gekoppelten Vertrag zwischen den Komponenten ein, um eine Anforderung zur Abwahl zu übermitteln. Diese Möglichkeit ist in der Regel wichtig, wenn vorhandene Funktionalitäten verändert werden. Im Gegensatz dazu existiert bereits eine implizite Auswahloption für neue Funktionalitäten.

      Mit AppContextdefinieren Bibliotheken und Kompatibilitätsschalter verfügbar machen, während Code, der davon abhängig, diese Optionen beeinflussen das Verhalten der Bibliothek festgelegt werden können. Standardmäßig stellen Bibliotheken die neue Funktionalität bereit. Nur wenn die Option festgelegt ist, stellen sie die vorherige Funktionalität bereit.

      Eine Anwendung (oder eine Bibliothek) kann den Wert eines Schalters deklarieren (Dies ist immer ein booleschen Wert), die einer abhängige Bibliothek definiert. Die Option ist immer implizit false. Durch Festlegen der Option auf true wird diese aktiviert. Durch explizites Festlegen der Option auf false wird das neue Verhalten aktiviert.

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

      Die Bibliothek muss überprüfen, ob ein Consumer den Wert der Option deklariert hat, und dann entsprechend reagieren.

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

      Es empfiehlt sich, ein konsistentes Format für Optionen zu verwenden, da es sich hierbei um eine formellen Vertrag handelt, der von einer Bibliothek verfügbar gemacht wird. Das folgende Beispiel zeigt zwei offensichtliche Formate.

      • Switch.* Namespace. SwitchName*

      • Switch.* library. SwitchName*

    • Änderungen an das aufgabenbasierte asynchrone Muster (TAP)

      Für apps, die als Ziel der .NET Framework 4.6, Aufgabe und Aufgabe<> </> > Objekte erben, die Kultur und die UI-Kultur des aufrufenden Threads. Das Verhalten von Apps, die mit früheren Versionen von .NET Framework arbeiten oder auf keine bestimmte Version von .NET Framework ausgelegt sind, ist davon nicht betroffen. Weitere Informationen finden Sie im Abschnitt "Kultur und aufgabenbasierte asynchrone Vorgänge" von der CultureInfo Thema-Klasse.

      Die System.Threading.AsyncLocal<> </> > Klasse können Sie Umgebungsdaten dar, die für eine angegebene asynchrone ablaufsteuerung lokal ist, wie z. B. ein async Methode. Sie kann zum threadübergreifenden Beibehalten von Daten verwendet werden. Sie können auch eine Rückrufmethode, die benachrichtigt wird, wenn Umgebungsdaten entweder weil ändert definieren die AsyncLocal<>>. Wert Eigenschaft wurde explizit geändert werden, oder weil der Thread einen Übergang Kontext gefunden.

      Drei Hilfsmethoden, "Task.completedtask", Task.FromCanceled, und Task.FromException, das aufgabenbasierte asynchrone Muster (TAP) abgeschlossene Aufgaben in einem bestimmten Zustand zurückgegeben wurde.

      Die NamedPipeClientStream Klasse unterstützt jetzt die asynchronen Kommunikation mit neuen ConnectAsync. -Methode.

    • EventSource unterstützt jetzt das Schreiben in das Ereignisprotokoll

      Jetzt können Sie die EventSource Klasse anmelden Betrieb oder Verwaltung von Nachrichten in das Ereignisprotokoll außerdem auf eine beliebige vorhandenen ETW-Sitzungen auf dem Computer. Früher mussten Sie das „Microsoft.Diagnostics.Tracing.EventSource“-NuGet-Paket für diese Funktionalität verwenden. Diese Funktionalität ist nun in .NET Framework 4.6 integriert.

      Sowohl das NuGet-Paket als auch .NET Framework 4.6 wurden mit den folgenden Features aktualisiert:

      • Dynamische Ereignisse

        Ermöglichen das „spontane“ Definieren von Ereignissen, und zwar ohne das Erstellen von Ereignismethoden.

      • Rich-Nutzlasten

        Ermöglicht, dass speziell attributierte Klassen und Arrays sowie primitive Typen als eine Nutzlast übergeben werden.

      • Das Aktivitätsprotokoll

        Löst Start- und Stoppereignisse aus, um Ereignisse zwischen ihnen mit einer ID zu kennzeichnen, die alle aktuell aktiven Aktivitäten darstellt.

      Auf diese unterstützen Funktionen, die überladene schreiben Methode hinzugefügt wurde der EventSource Klasse.

  • Windows Presentation Foundation (WPF)

    • Verbesserte anzeigen

      Die HDPI-Unterstützung in WPF ist nun besser in .NET Framework 4.6. Es wurden Änderungen an der Layoutglättung vorgenommen, um die Instanzen von Clipping in Steuerelementen mit Begrenzungen zu reduzieren. Diese Funktion ist standardmäßig aktiviert, nur, wenn Ihre TargetFrameworkAttribute für .NET 4.6 festgelegt ist. Clientanwendungen, die frühere Versionen des Frameworks abzielen, jedoch ausgeführt werden, auf der .NET Framework 4.6 können das neue Verhalten entscheiden, indem Sie die folgende Zeile hinzufügen der <> > -Abschnitt der Datei "App.config":

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

      Sich auf mehrere Monitore erstreckende WPF-Fenster mit unterschiedlichen DPI-Einstellungen (Multi-DPI-Einrichtung) wurden nun vollständig gerendert, und zwar ohne verdunkelte Bereiche. Sie können dieses Verhalten deaktivieren, indem Sie die folgende Zeile zum <appSettings>-Abschnitt der Datei „app.config“ hinzufügen, um dieses neue Verhalten zu deaktivieren:

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

      Unterstützung für das automatische Laden von den Cursor nach rechts basierend auf DPI-Einstellung hinzugefügt wurde System.Windows.Input.Cursor.

    • Touch ist besser

      Der Kunde meldet sich auf verbinden , die touch erzeugt zu unvorhersehbarem Verhalten in behandelt wurden die .NET Framework 4.6. Der Schwellenwert für das Doppeltippen für Windows Store- und WPF-Anwendungen entspricht nun dem in Windows 8.1 und höher.

    • Unterstützung für transparente untergeordnete Fenster

      WPF in .NET Framework 4.6 unterstützte transparente untergeordnete Fenster in Windows 8.1 und höher. Dadurch können Sie untergeordnete Fenster, die weder viereckig noch transparent sind, in Ihren Fenstern auf oberster Ebene erstellen. Sie können dieses Feature aktivieren, durch Festlegen der HwndSourceParameters.UsesPerPixelTransparency -Eigenschaft true.

  • Windows Communication Foundation (WCF)

    • SSL-Unterstützung

      WCF unterstützt nun SSL Version TLS 1.1 und TLS 1.2 neben SSL 3.0 und TLS 1.0 beim Verwenden von NetTcp mit Transportsicherheit und Clientauthentifizierung. Es ist nun möglich, auszuwählen, welches Protokoll verwendet werden soll, oder ältere und zugleich unsicherere Protokolle zu deaktivieren. Dies erreichen Sie durch Festlegen der SslProtocols Eigenschaft oder indem Sie Folgendes in eine Konfigurationsdatei hinzufügen.

      <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>  
      
      
      
    • Senden von Nachrichten, die mit anderen HTTP-Verbindungen

      WCF ermöglicht Benutzern nun, sicherzustellen, dass bestimmte Nachrichten unter Verwendung von zugrunde liegenden HTTP-Verbindungen gesendet wurden. Hierfür gibt es zwei Möglichkeiten:

      • Verwenden ein Präfix Gruppe Verbindung

        Benutzer können eine Zeichenfolge angeben, die WCF als ein Präfix für den Verbindungsgruppennamen verwendet. Unter Verwendung von unterschiedlichen zugrunde liegenden HTTP-Verbindungen werden zwei Nachrichten mit unterschiedlichen Präfixen gesendet. Legen Sie das Präfix durch Hinzufügen von Schlüssel/Wert-Paar an der Nachricht Message.Properties Eigenschaft. Der Schlüssel ist "HttpTransportConnectionGroupNamePrefix"; der Wert ist das gewünschte Präfix.

      • Verwenden verschiedene kanalfactorys

        Benutzer können zudem ein Feature aktivieren, das sicherstellt, dass die mithilfe von anhand unterschiedlicher Kanalfaktoren erstellten Kanälen gesendeten Nachrichten unterschiedliche zugrunde liegende HTTP-Verbindungen verwenden. Zum Aktivieren dieses Features müssen die Benutzer die folgende appSetting auf true festlegen:

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

    Sie können nun die Anzahl der Sekunden angeben, die ein Workflowdienst an einer gestörten Vorgangsanforderung festhält, wenn ein ausstehendes Nicht-Protokoll-Lesezeichen vorliegt, bevor für die Anforderung ein Timeout ausgelöst wird. Ein Nicht-Protokoll-Lesezeichen ist ein Lesezeichen, das nicht mit ausstehenden Receive-Aktivitäten verknüpft ist. Bei einigen Aktivitäten werden Nicht-Protokoll-Lesezeichen in ihrer Implementierung erstellt. Es ist daher ggf. nicht offensichtlich, ob ein Nicht-Protokoll-Lesezeichen vorhanden ist. Dazu zählen der Status und die Auswahl. Wenn Sie über einen Workflowdienst verfügen, der mit einem Statuscomputer implementiert wurde oder eine Auswahlaktivität enthält, verfügen Sie sehr wahrscheinlich über Nicht-Protokoll-Lesezeichen. Sie geben das Intervall an, indem Sie eine Zeile wie die folgende zum appSettings-Abschnitt Ihrer „app.config“-Datei hinzufügen:

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

    Der Standardwert beträgt 60 Sekunden. Wenn value auf „0“ festgelegt ist, werden gestörte Anforderungen sofort mit einem Fehlertext abgelehnt, der wie folgt aussieht:

    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.   
    
    

    Hierbei handelt es sich um dieselbe Meldung, die Sie empfangen, wenn Sie eine Meldung in Bezug auf einen gestörten Vorgang empfangen und keine Nicht-Protokoll-Lesezeichen vorliegen.

    Wenn der Wert des FilterResumeTimeoutInSeconds-Elements nicht null entspricht, liegen keine Nicht-Protokoll-Lesezeichen vor, und das Timeoutintervall läuft ab, wobei beim Vorgang Fehler auftreten und eine Timeoutmeldung angezeigt wird.

  • Transaktionen

    Sie können jetzt den verteilten Transaktions-ID enthalten, für die Transaktion, die eine Ausnahme verursacht hat abgeleitet TransactionException ausgelöst wird. Hierzu müssen Sie den folgenden Schlüssel zum appSettings-Abschnitt Ihrer „app.config“-Datei hinzufügen.

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

    Der Standardwert ist false.

  • Netzwerk

    • Socket-Wiederverwendung

      Windows 10 umfasst einen neuen hochskalierbaren Netzwerkalgorithmus, der eine bessere Verwendung von Computerressourcen ermöglicht, indem lokale Ports für ausgehende TCP-Verbindungen verwendet werden. .NET Framework 4.6 unterstützt den neuen Algorithmus, wodurch .NET-Apps von diesem neuen Verhalten profitieren können. In früheren Windows-Versionen gab es einen Grenzwert für gleichzeitige, künstliche Verbindungen (für gewöhnlich 16.384, die Standardgröße des dynamischen Portbereichs), wodurch die Skalierbarkeit eines Diensts begrenzt werden konnte, indem unter Lastbedingungen eine Portauslastung verursacht werden konnte.

      In .NET Framework 4.6 wurden zwei neue APIs hinzugefügt, um die Portwiederverwendung zu aktivieren, wodurch die 64K-Begrenzung für gleichzeitige Verbindungen effektiv entfernt wurde:

      In der Standardeinstellung die ServicePointManager.ReusePort Eigenschaft ist false , wenn die HWRPortReuseOnSocketBind Wert der HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 Registrierungsschlüssel auf 0 x 1 festgelegt ist. Legen Sie zum Aktivieren der Wiederverwendung von lokalen Port für HTTP-Verbindungen die ServicePointManager.ReusePort -Eigenschaft true. Dies bewirkt, dass alle ausgehenden TCP-Socket-Verbindung von HttpClient und HttpWebRequest mit einer neuen Windows 10-Socketoption SO_REUSE_UNICASTPORT, mit der lokale Port Wiederverwendung.

      Entwickler, die eine Anwendung mit Sockets können angeben, die SocketOptionName.ReuseUnicastPort option, wenn eine Methode aufrufen, wie z. B. Socket.SetSocketOption , damit ausgehende Sockets lokale Ports während der Bindung wiederverwenden.

    • Unterstützung für internationale Domänennamen und PunyCode

      Eine neue Eigenschaft, IdnHost, hinzugefügt wurde der Uri Klasse, um die internationale Domänennamen und PunyCode besser zu unterstützen.

  • Ändern der Größe von Windows Forms-Steuerelementen.

    Dieses Feature wurde erweitert, .NET Framework 4.6 enthalten die DomainUpDown, NumericUpDown, DataGridViewComboBoxColumn, DataGridViewColumn und ToolStripSplitButton erhalten soll Typen und die durch angegebene Rechteck der Grenzen Eigenschaft beim Zeichnen verwendet eine UITypeEditor.

    Dies ist ein Opt-in-Feature. Setzen Sie das EnableWindowsFormsHighDpiAutoResizing-Element in der Anwendungskonfigurationsdatei (app.config) auf true, um dieses Feature zu aktivieren:

    
    <appSettings>  
       <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />  
    </appSettings>  
    
    
    
  • Unterstützung für codepagecodierungen

    .NET Core unterstützt primär Unicode-Codierungen und bietet standardmäßig eingeschränkte Unterstützung für Codepagecodierungen. Sie können Unterstützung für codeseitencodierungen, die in .NET Framework, jedoch nicht unterstützt in verfügbaren hinzufügen .NET Core von codeseitencodierungen mit der "Encoding.registerprovider" registrieren Methode. Weitere Informationen finden Sie unter System.Text.CodePagesEncodingProvider.

  • .NET native

    Windows-Apps für Windows 10, die auf .NET Core ausgerichtet und in C# oder Visual Basic geschrieben sind, können eine neue Technologie nutzen, die Apps in systemeigenen Code kompiliert statt in IL. Sie erzeugen Apps, die sich durch kürzere Start- und Ausführungszeiten auszeichnen. Weitere Informationen finden Sie unter Kompilieren von Apps mit .NET Native. Eine Übersicht über .NET-Native, der untersucht werden, wie es sowohl von JIT-Kompilierung als auch von NGEN unterscheidet und was dies bedeutet, dass für Ihren Code finden Sie unter .NET Native und Kompilierung.

    Ihre Apps werden beim Kompilieren mit Visual Studio 2015 standardmäßig in systemeigenen Code kompiliert. Weitere Informationen finden Sie unter erste Schritte mit .NET Native.

    Um das Debuggen von .NET Native-Apps zu unterstützen, wurden der API für nicht verwaltetes Debugging eine Reihe neuer Schnittstellen und Enumerationen hinzugefügt. Weitere Informationen finden Sie unter der Debuggen (Referenz zur nicht verwalteten API) Thema.

  • Open-Source-Pakete von .NET Framework

    .NET CorePakete wie die unveränderlichen Auflistungen, SIMD-APIs, und wie die Netzwerk-APIs finden Sie in der System.Net.Http Namespace stehen jetzt als open Source-Pakete auf GitHub. Um Zugriff auf den Code finden Sie unter NetFx auf GitHub. Weitere Informationen und wie Sie zu diesen Paketen beitragen können, finden Sie unter .NET Core und Open-Source-, .NET-Startseite auf GitHub.

Zurück zum Anfang

  • Neue APIs für ASP.NET-Anwendungen. Die neue HttpResponse.AddOnSendingHeaders und HttpResponseBase.AddOnSendingHeaders Methoden können Sie überprüfen und ändern Antwortheader und Statuscodes, wie die Antwort an die Clientanwendung übergeben. Sie sollten diese Methoden anstelle von der PreSendRequestHeaders und PreSendRequestContent Ereignisse effizienter und zuverlässiger werden.

    Die HostingEnvironment.QueueBackgroundWorkItem Methode können Sie die Ausführung kleiner Hintergrund-Arbeitsaufgaben planen. ASP.NET überwacht diese Aufgaben und verhindert, dass IIS den Arbeitsprozess abrupt beendet, bevor alle Hintergrund-Arbeitsaufgaben abgeschlossen wurden. Diese Methode kann nicht außerhalb von verwalteten ASP.NET-App-Domänen aufgerufen werden.

    Die neue HttpResponse.HeadersWritten und HttpResponseBase.HeadersWritten Eigenschaften zurückzugeben, boolesche Werte, die angeben, ob die Antwortheader geschrieben wurden. Sie können sicherstellen, diese Eigenschaften verwenden, die Aufrufe von APIs wie z. B. HttpResponse.StatusCode (die Ausnahmen auslösen, wenn der Header geschrieben wurden) erfolgreich ausgeführt werden.

  • Ändern der Größe von Windows Forms-Steuerelementen. Dieses Feature wurde erweitert. Sie können nun die systemeigene DPI-Einstellung verwenden, um die Größe von Komponenten der folgenden zusätzlichen Steuerelemente anzupassen (z. B. der Dropdownpfeil in Combofeldern):

    Kombinationsfeld-Steuerelement
    ToolStripComboBox
    ToolStripMenuItem
    Cursor
    DataGridView
    DataGridViewComboBoxColumn

    Dies ist ein Opt-in-Feature. Setzen Sie das EnableWindowsFormsHighDpiAutoResizing-Element in der Anwendungskonfigurationsdatei (app.config) auf true, um dieses Feature zu aktivieren:

    <appSettings>  
       <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />  
    </appSettings>  
    
    
  • Neues Workflow-Feature. Ein Ressourcen-Manager, ist die EnlistPromotableSinglePhase Methode (und daher Implementieren der IPromotableSinglePhaseNotification Schnittstelle) können Sie die neue Transaction.PromoteAndEnlistDurable Methode, um Folgendes abzufragen:

    Dies kann innerhalb derselben App-Domäne erfolgen, und erfordert keinen zusätzlichen nicht verwalteten Code für die Interaktion mit MSDTC für die Höherstufung. Die neue Methode kann aufgerufen werden, nur, wenn ein ausstehender Aufruf von System.Transactions an der IPromotableSinglePhaseNotification Promote -Methode, die von der heraufstufbaren Eintragung implementiert wird.

  • Profilerstellungsverbesserungen. Die folgenden neuen, nicht verwalteten Profilerstellungs-APIs bieten eine robustere Profilerstellung:

    COR_PRF_ASSEMBLY_REFERENCE_INFO-Struktur
    COR_PRF_HIGH_MONITOR-Enumeration
    GetAssemblyReferences-Methode
    GetEventMask2-Methode
    SetEventMask2-Methode
    AddAssemblyReference-Methode

    Frühere ICorProfiler-Implementierungen unterstützten Lazy Loading für abhängige Assemblys. Die neue Profilerstellungs-API benötigt abhängige Assemblys, die vom Profiler zum sofortigen Laden eingefügt werden, anstatt nach der vollständigen Initialisierung der App geladen zu werden. Diese Änderung betrifft keine Benutzer der existierenden ICorProfiler-APIs.

  • Verbesserungen beim Debugging. Die folgenden neuen, nicht verwalteten Debugging-APIs bieten bessere Profilerintegration. Beim Debuggen von Abbildern haben Sie nun Zugriff auf die vom Profiler eingefügten Metadaten sowie auf lokale Variablen und den von ReJIT-Anfragen des Compilers eingefügten Code.

    SetWriteableMetadataUpdateMode-Methode
    EnumerateLocalVariablesEx-Methode
    GetLocalVariableEx-Methode
    GetCodeEx-Methode
    GetActiveReJitRequestILCode-Methode
    GetInstrumentedILMap-Methode

  • Änderungen an der ereignisablaufverfolgung. .NET Framework 4.5.2 unterstützt prozessexterne Ereignisablaufverfolgung für Windows (ETW)-basierte Aktivitätsverfolgung für eine größere Oberfläche. Auf diese Weise können Advanced Power Management (APM)-Hersteller einfache Tools zur Messung der Kosten einzelner threadübergreifender Anfragen und Aktivitäten anbieten. Diese Ereignisse werden nur ausgelöst, wenn sie von einem ETW-Controller aktiviert wurden. Die Änderungen betreffen daher keinen zuvor geschriebenen ETW-Code oder Code, der mit deaktivierter ETW ausgeführt wird.

  • Heraufstufen einer Transaktions und deren Konvertierung in eine dauerhafte Eintragung

    Transaction.PromoteAndEnlistDurable wird eine neue API hinzugefügt zu .NET Framework 4.5.2 und 4.6:

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

    Die Methode kann verwendet werden, durch eine Eintragung, die zuvor von erstellt wurde Transaction.EnlistPromotableSinglePhase als Antwort auf die ITransactionPromoter.Promote Methode. Sie fragt System.Transactions ab, um die Transaktion zu einer MSDTC-Transaktion heraufzustufen und um die heraufstufbare Eintragung zu einer dauerhaften Eintragung zu „konvertieren“. Nach dem erfolgreichen dieser Methode Abschluss die IPromotableSinglePhaseNotification Schnittstelle wird nicht mehr verwiesen werden, indem System.Transactions, und zukünftige Benachrichtigungen für die bereitgestellte kommen ISinglePhaseNotification Schnittstelle. Die entsprechende Eintrag muss als eine dauerhafte Eintragung fungieren und die Transaktionsprotokollierung und -wiederherstellung unterstützen. Finden Sie unter Transaction.EnlistDurable Details. Darüber hinaus muss die Eintragung unterstützen ISinglePhaseNotification. Diese Methode kann nur aufgerufen werden, während der Verarbeitung einer ITransactionPromoter.Promote aufrufen. Wenn dies nicht der Fall ist ein TransactionException Ausnahme ausgelöst.

Zurück zum Anfang

Updates für April 2014:

  • Visual Studio 2013 Update 2 enthält Updates für die Portable Class Library-Vorlagen für diese Szenarien zu unterstützen:

    • Sie können die Windows-Runtime APIs in portablen Bibliotheken einsetzen, die Windows 8.1, Windows Phone 8.1 und Windows Phone Silverlight 8.1 als Ziel verwenden.

    • Sie können XAML (Windows.UI.XAML-Typen) in portablen Bibliotheken einsetzen, wenn Sie Windows 8.1 oder Windows Phone 8.1 als Ziel verwenden. Die folgenden XAML-Vorlagen werden unterstützt: Leere Seite, Ressourcenverzeichnis, Steuerelement mit Vorlagen und Benutzersteuerelement.

    • Sie können eine portable Komponente für Windows-Runtime (.winmd-Datei) für den Einsatz in Store-Apps erstellen, die Windows 8.1 und Windows Phone 8.1 als Ziel verwenden.

    • Sie können eine Windows Store- oder Windows Phone Store-Klassenbibliothek wie eine portable Klassenbibliothek neu zuweisen.

    Weitere Informationen zu diesen Änderungen finden Sie unter Portable Klassenbibliothek.

  • Der .NET Framework-Inhaltssatz enthält nun Dokumentation für .NET systemeigen, eine Vorkompilierungstechnologie für die Erstellung und Bereitstellung von Windows-Apps. .NET systemeigen kompiliert Ihre Apps direkt in systemeigenen Code anstelle einer Intermediate Language (IL) und erzielt dadurch eine bessere Leistung. Weitere Informationen finden Sie unter Kompilieren von Apps mit .NET Native.

  • Die .NET Framework Reference Source bietet ein neues browsing-Erlebnis und erweiterte Funktionen. Sie können jetzt den .NET Framework-Quellcode online Durchsuchen Referenz herunterladen zur Offlineanzeige oder schrittweise zu durchlaufen (inklusive Patches und Updates) während des Debuggens. Weitere Informationen finden Sie im Blogeintrag ein neues Aussehen for .NET Reference Source.

.NET Framework 4.5.1 enthält die folgenden neuen Kernfunktionen und -optimierungen:

  • Automatische Bindungsumleitung für Assemblys. Ab Visual Studio 2013 können beim Kompilieren einer App, deren Ziel .NET Framework 4.5.1 ist, Bindungsumleitungen zur App-Konfigurationsdatei hinzugefügt werden, wenn die App oder ihre Komponenten sich auf mehrere Versionen derselben Assembly beziehen. Sie können diese Funktion auch für Projekte aktivieren, die frühere Versionen von .NET Framework als Ziel haben. Weitere Informationen finden Sie unter Gewusst wie: Aktivieren und Deaktivieren der Bindungsumleitung.

  • Fähigkeit, Diagnoseninformationen zu erfassen, um Entwicklern zu helfen, die Leistung von Server- und Cloud-Anwendungen zu verbessern. Weitere Informationen finden Sie unter der WriteEventWithRelatedActivityId und WriteEventWithRelatedActivityIdCore Methoden in der EventSource Klasse.

  • Fähigkeit, während einer Garbage Collection den großen Objektheap (Large Object Heap, LOH) explizit zu komprimieren. Weitere Informationen finden Sie unter der GCSettings.LargeObjectHeapCompactionMode Eigenschaft.

  • Zusätzliche Leistungsverbesserungen wie ASP.NET-App-Unterbrechung, Multikern-JIT-Verbesserungen und schnellere App-Starts nach einem .NET Framework-Update. Weitere Informationen finden Sie unter der .NET Framework 4.5.1-Ankündigung und ASP.NET-App suspend Blogbeitrag.

Verbesserungen für Windows Forms-Anwendungen:

  • Größenänderungen in Windows Forms-Steuerelementen. Sie können die systemeigene DPI-Einstellung verwenden, um die Größe von Komponenten von Steuerelementen anzupassen (z. B. die Symbole in einem Eigenschaftenraster), indem Sie diese Funktion über einen Eintrag in der Anwendungskonfigurationsdatei (app.config) für Ihre App aktivieren. Dieses Feature wird zurzeit für die folgenden Windows Forms-Steuerelemente unterstützt:

    PropertyGrid
    TreeView
    Einige Aspekte der DataGridView (siehe neue Features in 4.5.2 für Weitere unterstützte Steuerelemente)

    Um dieses Feature zu aktivieren, fügen Sie einen neuen <> > Element auf die Konfigurationsdatei (app.config) und legen die EnableWindowsFormsHighDpiAutoResizing Element true:

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

Zu Verbesserungen beim Debuggen Ihrer .NET Framework-Apps in Visual Studio 2013 zählen:

  • Rückgabewerte im Visual Studio-Debugger. Wenn Sie eine verwaltete App in Visual Studio 2013 debuggen, werden Rückgabetypen und -werte für Methoden im Fenster "Auto" angezeigt. Diese Informationen sind für Desktop-, Windows Store- und Windows Phone-Apps verfügbar. Weitere Informationen finden Sie unter Überprüfen von Rückgabewerten der Methodenaufrufe in der MSDN Library.

  • "Bearbeiten und Fortfahren" für 64-Bit-Apps. Visual Studio 2013 unterstützt die Funktion "Bearbeiten und Fortfahren" für verwaltete 64-Bit-Apps für Desktops, Windows Store und Windows Phone. Die vorhandenen Einschränkungen bleiben für 32-Bit- und 64-Bit-apps wirksam (finden Sie im letzten Abschnitt der unterstützte Codeänderungen (c#) Artikel).

  • Async-bewusstes Debuggen. Um das Debuggen asynchroner Apps in Visual Studio 2013 zu vereinfachen, wird der Infrastrukturcode, der von Compilern zur Unterstützung asynchronen Programmierens bereitgestellt wird, in der Aufrufliste ausgeblendet. Ebenfalls erfolgt dort eine Verkettung mit logisch übergeordneten Rahmen, sodass der logischen Programmausführung übersichtlicher gefolgt werden kann. Ein Aufgabenfenster ersetzt das Fenster "Parallele Aufgaben" und zeigt Aufgaben an, die sich auf einen bestimmten Haltepunkt beziehen. Außerdem werden alle anderen Aufgaben angezeigt, die momentan aktiv oder in der App geplant sind. Informieren Sie sich über dieses Feature im Abschnitt "Async-aware debugging", der die .NET Framework 4.5.1-Ankündigung.

  • Bessere Ausnahmeunterstützung für Windows-Runtime-Komponenten. In Windows 8.1 behalten Ausnahmen, die sich aus Windows Store-Apps ergeben, Informationen zum Fehler, der die Ausnahme ausgelöst hat, sogar über Sprachgrenzen bei. Informieren Sie sich über dieses Feature im Abschnitt "Windows Store-app-Entwicklung", der die .NET Framework 4.5.1-Ankündigung.

Beginnend mit Visual Studio 2013, können Sie die Managed Profile Guided Optimization Tool (Mpgo.exe) zur Optimierung Windows 8.x Store apps sowie desktop-apps.

Informationen zu neuen Funktionen in ASP.NET 4.5.1 finden Sie unter ASP.NET 4.5.1 und Visual Studio 2013 auf der ASP.NET-Website.

Zurück zum Anfang

Wichtige neue Features und Verbesserungen

  • Weniger Systemneustarts durch Erkennen und Schließen von .NET Framework 4-Anwendungen bei der Bereitstellung. Finden Sie unter Reduzieren von Systemneustarts bei .NET Framework 4.5-Installationen.

  • Unterstützung von mehr als 2 Gigabyte (GB) großen Arrays auf 64-Bit-Plattformen. Sie können die Funktion in der Anwendungskonfiguration aktivieren. Finden Sie unter der <> > Element, das auch andere Einschränkungen zur Objekt- und Arraygröße auflistet.

  • Bessere Leistung durch Garbage Collection im Hintergrund für Server. Wenn Sie die Garbage Collection auf dem Server in .NET Framework 4.5 verwenden, wird die Garbage Collection im Hintergrund automatisch aktiviert. Finden Sie im Abschnitt Server Garbage Collection im Hintergrund den Grundlagen der Garbage Collection Thema.

  • Just-In-Time (JIT)-Kompilierung im Hintergrund zur Verbesserung der Anwendungsleistung, die optional auf Mehrkernprozessoren verfügbar ist. Finden Sie unter ProfileOptimization.

  • Festlegen der Zeit, die das Modul für reguläre Ausdrücke zum Auflösen eines regulären Ausdrucks bis zum Timeout benötigen darf. Finden Sie unter der Regex.MatchTimeout Eigenschaft.

  • Definieren der Standardkultur für eine Anwendungsdomäne. Finden Sie unter der CultureInfo Klasse.

  • Konsolenunterstützung für Unicode-Codierung (UTF-16). Finden Sie unter der Konsole Klasse.

  • Unterstützung für die Versionierung kulturabhängiger Zeichenfolgenreihenfolgen und -vergleichsdaten. Finden Sie unter der SortVersion Klasse.

  • Bessere Leistung beim Abrufen von Ressourcen. Finden Sie unter Verpacken und Bereitstellen von Ressourcen.

  • Verbesserte ZIP-Komprimierung zur Reduzierung der Größe einer komprimierten Datei. Finden Sie unter der System.IO.Compression Namespace.

  • Möglichkeit zum Anpassen von Reflektionskontext zum Überschreiben von Standardverhalten der Reflektion über die CustomReflectionContext Klasse.

  • Unterstützung für die Version des Internationalized Domain Names in Applications (IDNA) 2008 standard bei der System.Globalization.IdnMapping Klasse dient auf Windows 8.

  • Delegieren des Zeichenfolgenvergleichs an das Betriebssystem, wobei Unicode 6.0 implementiert wird, wenn .NET Framework in Windows 8 verwendet wird. Bei Ausführung auf anderen Plattformen verwendet .NET Framework eigene Zeichenfolgenvergleichsdaten, wobei Unicode 5.x. implementiert wird. Finden Sie unter der Zeichenfolge -Klasse und im Abschnitt Hinweise der SortVersion Klasse.

  • Berechnen der Hashcodes für Zeichenfolgen pro Anwendungsdomäne. See <>> Element.

  • Geben Sie die Reflektion unterstützt eine Teilung zwischen Typ und TypeInfo Klassen. Finden Sie unter Reflektion in .NET Framework für Windows Store-Apps.

Managed Extensibility Framework (MEF)

In .NET Framework 4.5 bietet das Managed Extensibility Framework (MEF) folgende neue Funktionen:

  • Unterstützung von generischen Typen.

  • Konventionsbasiertes Programmiermodell zum Erstellen von Teilen auf Grundlage von Namenskonventionen anstelle von Attributen.

  • Mehrere Bereiche.

  • Eine Teilmenge von MEF, die Sie verwenden können, wenn Sie Apps im Windows 8.x Store erstellen. Diese Teilmenge steht als ein Downloadpaket aus dem NuGet-Katalog. Um das Paket zu installieren, öffnen Sie das Projekt in Visual Studio, wählen Sie NuGet-Pakete verwalten aus der Projekt Menü, und suchen Sie online nach dem Microsoft.Composition Paket.

Weitere Informationen finden Sie unter Managed Extensibility Framework (MEF).

Asynchrone Dateivorgänge

In .NET Framework 4.5 wurden neue asynchrone Funktionen zu den Programmiersprachen C# und Visual Basic hinzugefügt. Diese Funktionen ergänzen ein aufgabenbasiertes Modell zum Ausführen von asynchronen Vorgängen. Verwenden Sie dieses neue Modell mithilfe der asynchronen Methoden in den E/A-Klassen. Finden Sie unter asynchrone Datei-e/a.

Tools

In .NET Framework 4.5 können Sie mit dem Resource File Generator-Tool (Resgen.exe) aus einer RESOURCES-Datei, die in einer .NET Framework-Assembly eingebettet ist, eine RESW-Datei für Windows 8.x Store-Apps erstellen. Weitere Informationen finden Sie unter Resgen.exe (Resource File Generator).

Mit Managed Profile Guided Optimization (Mpgo.exe) können Sie die Anwendungsstartzeit, die Arbeitsspeicherauslastung (Workingsetgröße) und den Durchsatz verbessern, indem Sie die Assemblys systemeigener Abbilder optimieren. Das Befehlszeilentool generiert Profildaten für Anwendungsassemblys systemeigener Abbilder. Finden Sie unter Mpgo.exe (verwaltetes, Profilgesteuertes Optimierungstool). Ab Visual Studio 2013 können Sie Mpgo.exe verwenden, um Windows 8.x Store-Apps und Desktop-Apps zu optimieren.

Parallele Computervorgänge

.NET Framework 4.5 stellt mehrere neue Funktionen und Verbesserungen für parallele Berechnung bereit. Dazu gehören leistungsfähigere, erweiterte Steuerungsmöglichkeiten, verbesserte Unterstützung für asynchrone Programmierung, eine neue Datenflussbibliothek und verbesserte Unterstützung für paralleles Debuggen und Leistungsanalyse. Siehe den Eintrag What's New for Parallelism in .NET 4.5 in der parallelen Programmierung mit .NET Blog.

Web

In ASP.NET 4.5 und 4.5.1 wurden die Modellbindung für Webformulare, WebSocket-Unterstützung, asynchrone Handler, Leistungserweiterungen und viele weitere Funktionen hinzugefügt. Weitere Informationen finden Sie in den folgenden Ressourcen:

Netzwerk

.NET Framework 4.5 stellt eine neue Programmierschnittstelle für HTTP-Anwendungen bereit. Weitere Informationen finden Sie im neuen System.Net.Http und System.Net.Http.Headers Namespaces.

Support steht auch eine neue Programmierschnittstelle für anzunehmen und interagieren mit einem WebSocket-Verbindung mithilfe der vorhandenen HttpListener und verwandte Klassen. Weitere Informationen finden Sie im neuen System.Net.WebSockets Namespace und die HttpListener Klasse.

Darüber hinaus enthält .NET Framework 4.5 folgende Netzwerkfunktionsverbesserungen:

  • RFC-kompatible URI-Unterstützung. Weitere Informationen finden Sie unter Uri und verwandte Klassen.

  • Unterstützung für IDN (Internationalized Domain Name)-Analysen. Weitere Informationen finden Sie unter Uri und verwandte Klassen.

  • Unterstützung für E-Mail-Adressen-Internationalisierung (EAI). Weitere Informationen finden Sie unter der System.Net.Mail Namespace.

  • Verbesserte IPv6-Unterstützung. Weitere Informationen finden Sie unter der System.Net.NetworkInformation Namespace.

  • Dual-Modus-Socket-Unterstützung. Weitere Informationen finden Sie unter der Socket und TcpListener Klassen.

Windows Presentation Foundation (WPF)

In der Version .NET Framework 4.5 wurde Windows Presentation Foundation (WPF) in vielen Bereichen überarbeitet und verbessert. Dazu gehören:

  • Die neue Menüband -Steuerelement, das können Sie eine Menüband-Benutzeroberfläche zu implementieren, die eine Symbolleiste für den Schnellzugriff, ein Anwendungsmenü und Registerkarten hostet.

  • Die neue INotifyDataErrorInfo -Schnittstelle, die synchrone und asynchrone datenvalidierung unterstützt.

  • Neue Funktionen für die VirtualizingPanel und Dispatcher Klassen.

  • Verbesserte Leistung beim Anzeigen großer Datengruppierungen sowie durch den Zugriff auf Auflistungen in Nicht-UI-Threads.

  • Binden von Daten an statische Eigenschaften, Datenbindung an benutzerdefinierte Typen implementiert die die ICustomTypeProvider -Schnittstelle und das Abrufen von Datenbindungsinformationen von einem Bindungsausdruck.

  • Neupositionierung von Daten bei Wertänderung (Live-Strukturierung).

  • Überprüfen einer möglicherweise getrennten Verbindung des Datenkontexts für einen Elementcontainer.

  • Festlegen der Zeit, die zwischen Eigenschaftenänderungen und Datenquellenupdates verstreichen soll.

  • Verbesserte Unterstützung für das Implementieren schwacher Ereignismuster. Zudem können Ereignisse jetzt Markuperweiterungen akzeptieren.

Windows Communication Foundation (WCF)

Um das Schreiben und Verwalten von Windows Communication Foundation (WCF)-Anwendungen zu erleichtern, wurden in .NET Framework 4.5 folgende Funktionen hinzugefügt:

  • Vereinfachung von generierten Konfigurationsdateien.

  • Unterstützung für Contract-First-Entwicklung.

  • Leichteres Konfigurieren des ASP.NET-Kompatibilitätsmodus.

  • Änderungen in den standardmäßigen Transporteigenschaftswerten, um die Wahrscheinlichkeit zu reduzieren, dass Sie sie festlegen müssen.

  • Aktualisiert die XmlDictionaryReaderQuotas Klasse, um die Wahrscheinlichkeit zu verringern, die Sie Kontingente für XML-Wörterbuch-Reader manuell konfigurieren.

  • Validierung von WCF-Konfigurationsdateien von Visual Studio als Teil des Buildprozesses, sodass Sie Konfigurationsfehler erkennen können, bevor Sie die Anwendung ausführen.

  • Neue Unterstützung für asynchrones Streaming.

  • Neue HTTPS-Protokollzuordnung zur leichteren Bereitstellung eines Endpunkts über HTTPS mit IIS (Internetinformationsdienste).

  • Generieren von Metadaten in einem einzelnen WSDL-Dokument durch Anfügen von ?singleWSDL an die Dienst-URL.

  • Websockets-Unterstützung für echte bidirektionale Kommunikation über die Ports 80 und 443 mit TCP-transportähnlichen Leistungsmerkmalen.

  • Unterstützung für das Konfigurieren von Diensten im Code.

  • XML-Editor-QuickInfos.

  • ChannelFactory Zwischenspeichern unterstützt.

  • Unterstützung für die Komprimierung binärer Encoder.

  • Unterstützung für einen UDP-Transport, mit dem Entwickler "Fire and Forget" (Auslösen und Vergessen)-Messaging-Dienste schreiben können. Ein Client sendet eine Nachricht an einen Dienst und erwartet von diesem keine Antwort.

  • Unterstützung mehrerer Authentifizierungsmodi auf einem einzelnen WCF-Endpunkt beim Verwenden von HTTP-Transport und -Transportsicherheit.

  • Unterstützung für WCF-Dienste, die internationale Domänennamen (IDNs) verwenden.

Weitere Informationen finden Sie unter Neuigkeiten in Windows Communication Foundation.

Windows Workflow Foundation (WF)

In der Version .NET Framework 4.5 gibt es jetzt viele neue Funktionen in Windows Workflow Foundation (WF), darunter:

  • Zustandsautomatworkflows, die als Teil von .NET Framework 4.0.1 eingeführt wurden (.NET Framework 4 Platform Update 1). Dieses Update umfasste mehrere neue Klassen und Aktivitäten, sodass Entwickler Zustandsautomatworkflows erstellen konnten. Diese Klassen und Aktivitäten wurden für .NET Framework 4.5 aktualisiert und umfassen nun Folgendes:

    • Festlegen von Haltepunkten für Zustände.

    • Kopieren und Einfügen von Übergängen im Workflow Designer.

    • Designerunterstützung für das Erstellen von freigegebenen Triggerübergängen.

    • Aktivitäten zum Erstellen von Zustandsautomatworkflows, einschließlich: StateMachine, Status, und Übergang.

  • Verbesserte Workflow Designer-Funktionen, z. B.:

    • Verbesserte workflowsuchfunktionen in Visual Studio, einschließlich Schnellsuche und in Dateien suchen.

    • Automatisches Erstellen einer Sequenzaktivität, wenn eine zweite untergeordnete Aktivität zu einer Containeraktivität hinzugefügt wird, und Einschließen beider Aktivitäten in die Sequenzaktivität.

    • Schwenk-Unterstützung zur Änderung des sichtbaren Teils eines Workflows ohne die Verwendung von Bildlaufleisten.

    • Ein neues Dokumentgliederung Ansicht, zeigt die Komponenten eines Workflows in einer strukturähnlichen Gliederungsansicht und können Sie, wählen Sie eine Komponente in der Dokumentgliederung anzeigen.

    • Hinzufügen von Anmerkungen zu Aktivitäten.

    • Definieren und Verarbeiten von Aktivitätsdelegaten mit dem Workflow Designer.

    • Automatisches Verbinden und Einfügen für Aktivitäten und Übergänge in Zustandsautomaten- und Flussdiagrammworkflows.

  • Speichern der Ansichtszustandsinformationen für einen Workflow in einem einzelnen Element in der XAML-Datei, sodass Sie die Ansichtszustandsinformationen leicht finden und bearbeiten können.

  • Eine NoPersistScope-Containeraktivität, damit untergeordnete Aktivitäten nicht beibehalten werden.

  • Unterstützung von C#-Ausdrücken:

    • Visual Basic-Workflowprojekte verwenden Visual Basic-Ausdrücke, und C#-Workflowprojekte verwenden C#-Ausdrücke.

    • C#-Workflowprojekte, die in Visual Studio 2010 erstellt wurden und Visual Basic-Ausdrücke verwenden, sind mit C#-Workflowprojekten, die C#-Ausdrücke verwenden, kompatibel.

  • Versionsverwaltungserweiterungen:

    • Die neue WorkflowIdentity -Klasse, die eine Zuordnung zwischen einer beibehaltenen Workflowinstanz und ihrer Workflowdefinition bietet.

    • Seite-an-Seite-Ausführung mehrerer workflowversionen im selben Host, einschließlich WorkflowServiceHost.

    • Die Änderbarkeit der Definition einer beibehaltenen Workflowinstanz im Rahmen eines dynamischen Updates.

  • Contract-First-Workflowdienstentwicklung, die das automatische Generieren von Aktivitäten zur Übereinstimmung mit einem vorhandenen Dienstvertrag unterstützt.

Weitere Informationen finden Sie unter Neuigkeiten in Windows Workflow Foundation.

.NET für Windows 8.x Store-Apps

Windows 8.x Store-Apps werden für bestimmte Formularfaktoren entworfen und nutzen die Leistungsfähigkeit des Windows-Betriebssystems. Eine Teilmenge von .NET Framework 4.5 oder 4.5.1 kann mithilfe von C# oder Visual Basic zum Erstellen von Windows 8.x Store-Apps in Windows verwendet werden. Diese Teilmenge wird aufgerufen, .NET für Windows 8.x Store-Apps und wird einer Übersicht über die im Windows Developer Center.

Portable Klassenbibliotheken

Mit dem Projekt "Portable Klassenbibliothek" in Visual Studio 2012 (und Folgeversionen) können Sie verwaltete Assemblys, die auf mehreren .NET Framework-Plattformen ausgeführt werden können, schreiben und erstellen. Mit einem "Portable Klassenbibliothek"-Projekt wählen Sie die Zielplattformen (wie Windows Phone und .NET für Windows 8.x Store-Apps). Die verfügbaren Typen und Member im Projekt werden automatisch auf die allgemeinen Typen und Member dieser Plattformen beschränkt. Weitere Informationen finden Sie unter Portable Klassenbibliothek.

.NET Framework und Out-of-Band-Versionen
What's New in Visual Studio 2013
ASP.NET 4.5.1 und Webtools für Visual Studio 2013
ASP.NET und Visual Studio für Web
Was ist neu in Windows Communication Foundation
Was ist neu in Windows Workflow Foundation
Was ist neu in Visual C++

Anzeigen: