Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden neue Features und Verbesserungen im .NET SDK für .NET 11 beschrieben. Es wurde zuletzt für Preview 3 aktualisiert.
Kleinere SDK-Installationsprogramme unter Linux und macOS
Die Größe des .NET SDK-Installers unter Linux und macOS wurde durch Deduplizieren von Assemblys mithilfe symbolischer Verknüpfungen reduziert. Duplikate .dll und .exe Dateien werden durch Inhaltshash identifiziert und durch symbolische Verknüpfungen ersetzt, die auf eine einzelne Kopie verweisen. Dies betrifft Tarballs, .pkg, .deb und .rpm-Installationsprogramme.
Die Analyse hat festgestellt, dass 35% des SDK-Verzeichnisses aus doppelten Dateien besteht. Unter Linux x64 beträgt dies 816 Dateien insgesamt 140 MB auf dem Datenträger (53 MB komprimiert). Durch das Ersetzen von Duplikaten durch symbolische Verknüpfungen sinkt das Linux x64-Archiv erheblich in der Größe:
| Plattform | SDK-Komponente | .NET 10 Größe (MB) | .NET 11 Vorschau 2 Größe (MB) | Reduzierung |
|---|---|---|---|---|
| linux-x64 | Tarball | 230 | 189 | 17.8% |
| linux-x64 | 1_i386.deb | 164 | 122 | 25.6% |
| linux-x64 | rpm | 165 | 122 | 26.0% |
| linux-x64 | Container | Variiert | Variiert | 8–17% |
Die Windows-Deduplizierung ist für eine zukünftige Vorschau geplant.
Verbesserungen der Codeanalyse
CA1873: Reduziertes Rauschen und verbesserte Nachrichten
Zwei Verbesserungen wurden an CA1873 vorgenommen (Vermeidung der potenziell teuren Protokollierung):
Weniger Fehlalarme: Zugriff auf Eigenschaften, GetType(), GetHashCode() und GetTimestamp()-Aufrufe werden nicht mehr als Fehler markiert. Die Diagnosefunktionen gelten nun standardmäßig nur noch für die Protokollierung auf der Informationsebene und darunter, da Warnungs-, Fehler- und kritische Codepfade selten zu den am häufigsten auftretenden Pfaden gehören.
Spezifische Gründe in Diagnosenachrichten: Die Diagnosenachricht enthält jetzt, warum ein Argument gekennzeichnet wurde, wodurch Sie priorisieren können, welche Warnungen adressiert werden sollen:
// Before
warning CA1873: Evaluation of this argument may be expensive and unnecessary if logging is disabled
// After
warning CA1873: Evaluation of this argument may be expensive and unnecessary if logging is disabled (method invocation)
Die neun spezifischen Gründe sind:
- Methodenaufruf
- Objekterstellung
- Arrayerstellung
- Boxing-Konvertierung
- Zeichenfolgeninterpolierung
- Sammlungsausdruck
- Erstellung anonymer Objekte
- Await-Ausdruck
- Mit Ausdruck
Analyzer-Fehlerkorrekturen
| Analyzer | Reparatur |
|---|---|
| CA1515 | Ein falsch positives Ergebnis wurde behoben, wenn C#-Erweiterungselemente vorhanden sind |
| CA1034 | Ein falsch positives Ergebnis wurde behoben, wenn C#-Erweiterungselemente vorhanden sind |
| CA1859 | Falsche Behandlung von Standardschnittstellenimplementierungen wurde behoben |
AnalysisLevel korrigiert für .NET 11
Projekte mit AnalysisLevel=latest verwendeten fälschlicherweise die .NET 9-Analyseregeln anstelle der erwarteten .NET 11-Analyseregeln. Dieses Problem wurde behoben.
Neue SDK-Warnungen
NETSDK1235: Benutzerdefinierte .nuspec mit PackAsTool
Eine neue Warnung wird ausgegeben, wenn ein Projekt PackAsTool=true setzt und eine benutzerdefinierte NuspecFile-Eigenschaft angibt. Toolpakete erfordern bestimmte Layout- und Bezeichnerkonventionen, die in der Regel gegen benutzerdefinierte .nuspec Dateien verstoßen:
warning NETSDK1235: .NET Tools do not support using a custom .nuspec file, but the nuspec file 'custom.nuspec' was provided. Remove the NuspecFile property from this project to enable packing it as a .NET Tool.
Der Packvorgang wird weiterhin mit einer Warnung fortgesetzt, um Beschädigungen bestehender Projekte zu vermeiden.
Lösungsfilter-CLI-Unterstützung
dotnet sln kann jetzt Lösungsfilter (.slnf) direkt über die CLI erstellen und bearbeiten. Mit Lösungsfiltern können große Repositorys eine Teilmenge von Projekten laden oder erstellen, ohne die Hauptlösung zu ändern. Die unterstützten Vorgänge spiegeln die vorhandenen dotnet sln Befehle wieder:
dotnet new slnf --name MyApp.slnf
dotnet sln MyApp.slnf add src/Lib/Lib.csproj
dotnet sln MyApp.slnf list
dotnet sln MyApp.slnf remove src/Lib/Lib.csproj
Apps, die auf Dateien basieren und über mehrere Dateien verteilt sind
Dateibasierte Apps unterstützen jetzt eine #:include Direktive, sodass Sie freigegebene Hilfsprogramme in separate Dateien verschieben können, ohne den dateibasierten Workflow aufzugeben:
#:include helpers.cs
#:include models/customer.cs
Console.WriteLine(Helpers.FormatOutput(new Customer()));
Übergeben von Umgebungsvariablen mit dotnet run
dotnet run -e KEY=VALUE übergibt Umgebungsvariablen über die Befehlszeile an die gestartete App, ohne dass Sie shell-Status exportieren oder Startprofile bearbeiten müssen:
dotnet run -e ASPNETCORE_ENVIRONMENT=Development -e LOG_LEVEL=Debug
Auf diese Weise übergebene Umgebungsvariablen stehen MSBuild-Logik als RuntimeEnvironmentVariable Elemente zur Verfügung.
Verbesserungen von dotnet watch
Vorschau 3 enthält mehrere dotnet watch-Verbesserungen für lang andauernde lokale Entwicklungsschleifen:
-
Aspire Integration:
dotnet watchKann jetzt mit Aspire App-Hosts integriert werden, was Workflows mit Hot-Reload-Funktionalität im gesamten Aspire Anwendungsmodell ermöglicht. -
Wiederherstellung bei Abstürzen: Wenn die App abstürzt, wird sie von
dotnet watchbei der nächsten relevanten Dateiänderung automatisch neu gestartet. - Windows Desktop-Support: Die Strg+C-Behandlung wird für Windows-Desktop-Apps wie Windows Forms und WPF verbessert.
Weitere CLI-Verbesserungen
-
dotnet formatakzeptiert jetzt--frameworkfür mehrzielige Projekte. -
dotnet testim MTP-Modus (Microsoft Testing Platform) unterstützt jetzt--artifacts-path. -
dotnet tool execunddnxfordern beim Ausführen von Tools keine zusätzliche Bestätigung mehr an.
Bahnbrechende Änderungen
.NET 11 enthält die folgende grundlegende Änderung im SDK:
Mono-Startziel wird nicht mehr automatisch festgelegt
Ab .NET 11 legt das .NET SDK nicht mehr automatisch mono als Startziel für .NET Framework-Apps unter Linux fest. Wenn Sie auf Mono für die Ausführung angewiesen sind, aktualisieren Sie die Startkonfiguration, um mono explizit anzugeben.
Weitere Informationen finden Sie unter Mono-Startziel wird nicht mehr automatisch gesetzt.