Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive le nuove funzionalità e i miglioramenti nell'SDK di .NET per .NET 11. È stato aggiornato per l'ultima volta per l'anteprima 3.
Programmi di installazione sdk più piccoli in Linux e macOS
Le dimensioni del programma di installazione di .NET SDK in Linux e macOS sono state ridotte deduplicando gli assembly usando collegamenti simbolici. I file duplicati .dll e .exe vengono identificati dall'hash del contenuto e sostituiti con collegamenti simbolici che puntano a una singola copia. Ciò influisce sui programmi di installazione tarball, .pkg, .debe .rpm .
L'analisi ha rilevato che 35% della directory SDK è costituito da file duplicati. In Linux x64, si tratta di 816 file totali di 140 MB su disco (53 MB compressi). Sostituendo i duplicati con collegamenti simbolici, l'archivio Linux x64 diminuisce significativamente nelle dimensioni:
| Piattaforma | Artefatto SDK | .NET 10 dimensione (MB) | .NET 11 Anteprima 2 (MB) | Riduzione |
|---|---|---|---|---|
| linux-x64 | Tarball | 230 | 189 | 17.8% |
| linux-x64 | deb | 164 | 122 | 25.6% |
| linux-x64 | Rpm | 165 | 122 | 26.0% |
| linux-x64 | contenitori | Variabile | Variabile | 8-17% |
La deduplicazione di Windows è pianificata per una futura anteprima.
Miglioramenti dell'analizzatore del codice
CA1873: Riduzione del rumore e miglioramento dei messaggi
Sono stati apportati due miglioramenti a CA1873 (Evitare la registrazione dei log potenzialmente costosa):
Riduzione dei falsi positivi: Gli accessi alle proprietà, GetType(), GetHashCode()e GetTimestamp() non vengono più contrassegnati. La diagnostica ora si applica solo al livello di log Informazioni e al di sotto per impostazione predefinita, poiché i percorsi di avvisi, errori e di codice critico sono raramente percorsi frequentemente utilizzati.
Motivi specifici nei messaggi di diagnostica: Il messaggio di diagnostica include ora il motivo per cui è stato contrassegnato un argomento, consentendo di classificare in ordine di priorità gli avvisi da risolvere:
// 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)
I nove motivi specifici sono:
- Invocazione del metodo
- Creazione di oggetti
- creazione di matrici
- Conversione di boxing
- Interpolazione di stringhe
- Espressione di raccolta
- Creazione di oggetti anonimi
- Espressione Await
- Con espressione
Correzioni di bug dell'analizzatore
| Analyzer | Correzione |
|---|---|
| CA1515 | Correzione di falsi positivi quando sono presenti membri dell'estensione C# |
| CA1034 | Correzione di falsi positivi quando sono presenti membri dell'estensione C# |
| CA1859 | Correzione di una gestione non corretta delle implementazioni di interfaccia predefinite |
AnalysisLevel corretto per .NET 11
I progetti con AnalysisLevel=latest usano in modo non corretto le regole dell'analizzatore di .NET 9 anziché le regole previste di .NET 11. Questo problema è stato risolto.
Nuovi avvisi dell'SDK
NETSDK1235: Custom .nuspec con PackAsTool
Viene generato un nuovo avviso quando un progetto imposta PackAsTool=true e specifica una proprietà personalizzata NuspecFile . I pacchetti di strumenti richiedono convenzioni specifiche di layout e di identificatore che in genere vengono violate dai file personalizzati .nuspec.
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.
L'operazione pack continua comunque con un avviso per evitare l'interruzione dei progetti esistenti.
Supporto CLI del filtro di soluzione
dotnet sln ora può creare e modificare i filtri della soluzione (.slnf) direttamente dall'interfaccia della riga di comando. I filtri della soluzione consentono ai repository di grandi dimensioni di caricare o compilare un subset di progetti senza modificare la soluzione principale. Le operazioni supportate rispecchiano i comandi esistenti dotnet sln :
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
Applicazioni basate su file distribuite tra i file
Le app basate su file supportano ora una #:include direttiva, quindi è possibile spostare gli helper condivisi in file separati senza rinunciare al flusso di lavoro basato su file:
#:include helpers.cs
#:include models/customer.cs
Console.WriteLine(Helpers.FormatOutput(new Customer()));
Passare variabili di ambiente con dotnet run
dotnet run -e KEY=VALUE passa le variabili di ambiente all'app avviata dalla riga di comando, senza che sia necessario esportare lo stato della shell o modificare i profili di avvio:
dotnet run -e ASPNETCORE_ENVIRONMENT=Development -e LOG_LEVEL=Debug
Le variabili di ambiente passate in questo modo sono disponibili per la logica DI MSBuild come RuntimeEnvironmentVariable elementi.
Miglioramenti di dotnet watch
L'anteprima 3 aggiunge diversi dotnet watch miglioramenti per i cicli di sviluppo locali di lunga durata.
-
Aspire integrazione:
dotnet watchora può integrarsi con gli host delle app Aspire, abilitando flussi di lavoro per il ricaricamento rapido nel modello di applicazione completo Aspire. -
Ripristino da crash: Quando l'app si arresta in modo anomalo,
dotnet watchlo riavvia automaticamente alla successiva modifica pertinente del file. - Windows supporto desktop: la gestione di CTRL+C è migliorata per le app desktop Windows, ad esempio Windows Forms e macchine virtuali Windows.
Altri miglioramenti dell'interfaccia della riga di comando
-
dotnet formataccetta--frameworkora per i progetti con più destinazioni. -
dotnet testin modalità MTP (Testing Platform) Microsoft supporta ora--artifacts-path. -
dotnet tool execednxnon richiedono più un'approvazione aggiuntiva durante l'esecuzione di strumenti.
Modifiche radicali
.NET 11 include le modifiche di rilievo seguenti nell'SDK:
La destinazione di avvio Mono non è più impostata automaticamente
A partire da .NET 11, .NET SDK non imposta più automaticamente mono come destinazione di avvio per le app di .NET Framework in Linux. Se si fa affidamento su Mono per l'esecuzione, aggiornare la configurazione di avvio per specificare mono in modo esplicito.
Per altre informazioni, vedere Destinazione di avvio Mono non più impostata automaticamente.