Co nowego w zestawie SDK i narzędziach dla .NET 11

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 watch moż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 watch automatycznie 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 format teraz akceptuje projekty wielokierunkowe --framework .
  • dotnet test w trybie platformy testowania Microsoft (MTP) obsługuje teraz --artifacts-path.
  • dotnet tool exec i dnx nie 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.

Zobacz także