Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano nowe funkcje i ulepszenia w zestawie SDK .NET dla .NET 11. Ostatnia aktualizacja dotyczyła wersji zapoznawczej 3.
Mniejsze instalatory zestawu SDK w systemach Linux i macOS
Rozmiar instalatora zestawu SDK .NET w systemach Linux i macOS został zmniejszony przez deduplikację zestawów przy użyciu linków symbolicznych. Zduplikowane .dll pliki i .exe są identyfikowane przez skrót zawartości i zastępowane linkami symbolicznymi wskazującymi pojedynczą kopię. Dotyczy to tarballs, .pkg, .deb, i .rpm instalatorów.
Analiza wykazała, że 35% katalogu SDK składa się z zduplikowanych plików. W systemie Linux x64 to 816 plików łącznie 140 MB na dysku (skompresowane 53 MB). Zastępując duplikaty linkami symbolicznymi, rozmiar archiwum systemu Linux x64 znacznie się zmniejsza.
| Platforma | Artefakt zestawu SDK | rozmiar .NET 10 (MB) | rozmiar .NET 11 (wersja zapoznawcza 2) (MB) | Redukcja |
|---|---|---|---|---|
| linux-x64 | Archiwum | 230 | 189 | 17.8% |
| linux-x64 | Deb | 164 | 122 | 25.6% |
| linux-x64 | Rpm | 165 | 122 | 26.0% |
| linux-x64 | Pojemniki | Varies | Varies | 8–17% |
Windows deduplikacja danych jest planowana w przyszłej wersji testowej.
Ulepszenia analizatora kodu
CA1873: Zmniejszenie szumu i ulepszone komunikaty
Wprowadzono dwie ulepszenia dotyczące CA1873 (Unikaj potencjalnie kosztownego logowania):
Zmniejszona liczba fałszywych alarmów: dostępy do właściwości, GetType(), GetHashCode() i GetTimestamp() wywołania nie są już raportowane. Diagnostyka ma teraz zastosowanie domyślnie do rejestrowania na poziomie informacji i niższym, ponieważ ścieżki ostrzeżeń, błędów i krytycznych kodów rzadko są gorącymi ścieżkami.
Konkretne przyczyny komunikatów diagnostycznych: Komunikat diagnostyczny zawiera teraz przyczynę oznaczenia argumentu, co ułatwia ustalanie, które ostrzeżenia należy rozwiązać w pierwszej kolejności.
// 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)
Dziewięć konkretnych powodów to:
- Wywołanie metody
- Tworzenie obiektu
- Tworzenie tablicy
- Konwersja boksu
- Interpolacja ciągów
- Wyrażenie kolekcji
- Tworzenie obiektu anonimowego
- Wyrażenie Await
- Z wyrażeniem
Poprawki błędów analizatora
| Analizator | Napraw. |
|---|---|
| CA1515 | Naprawiono błąd fałszywie pozytywny, gdy obecne są elementy rozszerzenia C# |
| CA1034 | Naprawiono błąd fałszywie pozytywny, gdy obecne są elementy rozszerzenia C# |
| CA1859 | Naprawiono nieprawidłową obsługę implementacji interfejsu domyślnego |
Poprawiono wartość AnalysisLevel dla .NET 11
Projekty z AnalysisLevel=latest nieprawidłowo używały reguł analizatora .NET 9 zamiast oczekiwanych reguł .NET 11. To jest teraz naprawione.
Nowe ostrzeżenia zestawu SDK
NETSDK1235: Niestandardowy plik .nuspec z PackAsTool
Nowe ostrzeżenie jest emitowane, gdy projekt ustawia PackAsTool=true i określa właściwość niestandardową NuspecFile . Pliki niestandardowe .nuspec zazwyczaj naruszają wymagane przez pakiety narzędzi określone konwencje układu i identyfikatorów.
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.
Operacja pakowania nadal jest wykonywana, z ostrzeżeniem, aby uniknąć przerywania istniejących projektów.
Obsługa CLI filtru rozwiązania
dotnet sln Teraz można tworzyć i edytować filtry rozwiązań (.slnf) bezpośrednio z poziomu interfejsu wiersza polecenia. Filtry rozwiązań umożliwiają załadowanie dużych repozytoriów lub utworzenie podzbioru projektów bez zmiany głównego rozwiązania. Obsługiwane operacje odzwierciedlają istniejące dotnet sln polecenia:
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
Aplikacje oparte na plikach rozłożone wśród plików
Aplikacje oparte na plikach obsługują teraz dyrektywę #:include , dzięki czemu można przenosić udostępnione pomocniki do oddzielnych plików bez rezygnacji z przepływu pracy opartego na plikach:
#:include helpers.cs
#:include models/customer.cs
Console.WriteLine(Helpers.FormatOutput(new Customer()));
Przekazywanie zmiennych środowiskowych za pomocą polecenia dotnet run
dotnet run -e KEY=VALUE przekazuje zmienne środowiskowe do uruchomionej aplikacji z wiersza polecenia bez konieczności eksportowania stanu powłoki lub edytowania profilów uruchamiania:
dotnet run -e ASPNETCORE_ENVIRONMENT=Development -e LOG_LEVEL=Debug
Zmienne środowiskowe przekazywane w ten sposób są dostępne dla logiki MSBuild jako RuntimeEnvironmentVariable elementy.
ulepszenia w dotnet watch
Wersja zapoznawcza 3 dodaje kilka ulepszeń dla długotrwałych lokalnych cykli rozwojowych dotnet watch:
-
Aspire integracja:
dotnet watchmożna teraz zintegrować z hostami Aspire aplikacji, umożliwiając ponowne ładowanie przepływów pracy na gorąco w całym Aspire modelu aplikacji. -
Odzyskiwanie awaryjne: Gdy aplikacja ulegnie awarii,
dotnet watchautomatycznie uruchomi ją podczas następnej odpowiedniej zmiany pliku. - Obsługa pulpitu Windows: została ulepszona obsługa klawiszy Ctrl+C w aplikacjach pulpitowych Windows, takich jak Windows Forms i WPF.
Inne ulepszenia interfejsu wiersza polecenia
-
dotnet formatteraz akceptuje projekty wielokierunkowe--framework. -
dotnet testw trybie platformy testowania Microsoft (MTP) obsługuje teraz--artifacts-path. -
dotnet tool execidnxnie proszą już o dodatkowe zatwierdzenie podczas uruchamiania narzędzi.
Zmiany przełomowe
.NET 11 obejmuje następującą zmianę łamiącą zgodność w pakiecie SDK.
Cel uruchamiania Mono nie jest już ustawiany automatycznie
Od .NET 11, .NET SDK nie ustawia już automatycznie mono jako celu uruchamiania aplikacji .NET Framework w systemie Linux. Jeśli używasz platformy Mono do wykonywania, zaktualizuj konfigurację uruchamiania, aby jawnie określić mono .
Aby uzyskać więcej informacji, zobacz Cel uruchamiania Mono nie jest już ustawiany automatycznie.