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.
Un 'ondata di modifiche è un set di modifiche di comportamento in MSBuild che è possibile rifiutare esplicitamente specificando un flag specifico come variabile di ambiente. Lo scopo di questo è avvisare l'utente di modifiche potenzialmente dannose, in modo da avere flessibilità nell'adattarsi a queste modifiche prima che diventino funzionalità standard. Tutte le funzionalità di un'onda di modifica specifica possono essere abilitate o disabilitate insieme, non singolarmente.
Quando si esegue l'aggiornamento a una nuova versione di MSBuild, le modifiche potenzialmente di rilievo sono abilitate per impostazione predefinita, ma se una funzionalità influisce negativamente sulla compilazione, è possibile disabilitare facilmente tale ondata di modifiche. Ogni onda di modifica viene identificata da un numero di versione di MSBuild (ad esempio, 16.8), ma l'impostazione dell'onda delle modifiche controlla solo determinate funzionalità che possono influire sul processo di compilazione, non tutte le modifiche apportate a tale versione di MSBuild. Un elenco delle funzionalità di ogni ondata di modifiche viene visualizzato più avanti in questo articolo. La disabilitazione di un'onda di modifica disabilita anche le onde di modifica delle versioni successive.
Disattivare le funzionalità del ciclo di modifiche
Per disabilitare le funzionalità in un'ondata di modifiche, impostare la variabile di ambiente MSBuildDisableFeaturesFromVersion sull'onda delle modifiche (o sulla versione di MSBuild) che contiene la funzionalità che si desidera disabilitare . Questa è la versione di MSBuild per cui sono state sviluppate le funzionalità. Consulta l'associazione delle onde di modifica alle funzionalità seguenti.
Valori MSBuildDisableFeaturesFromVersion
Riceverai un avviso e/o ti verrà assegnata un'onda specifica se non imposti MSBuildDisableFeaturesFromVersion su una specifica onda di modifica valida. La tabella seguente illustra le possibili impostazioni:
valore MSBuildDisableFeaturesFromVersion |
Risultato | Ricevere un avviso? |
|---|---|---|
| Non impostato | Abilitare tutte le onde di modifica, ovvero tutte le funzionalità dietro ogni onda di modifica sono abilitate. | No |
Qualsiasi onda di modifica valida e corrente (ad esempio, 16.8) |
Disabilitare tutte le funzionalità dietro l'onda di cambiamento 16.8e superiori a. |
No |
Valore non valido(ad esempio, 16.9 quando le onde valide sono 16.8 e 16.10) |
Imposta automaticamente al valore valido più vicino (in ordine crescente). Ad esempio, impostando 16.9 si passerà per impostazione predefinita a 16.10. |
No |
Fuori Rotazione (ad esempio, 17.1 quando l'onda più alta è 17.0) |
Arrotonda al valore valido più vicino. Ad esempio, 17.1 bloccano a 17.0e 16.5 bloccano a 16.8 |
Sì |
Formato non valido ( ad esempio, 16x8, 17_0, garbage) |
Abilitare tutte le onde di modifica, ovvero tutte le funzionalità dietro ogni onda di modifica sono abilitate. | Sì |
Modificare le onde e le funzionalità associate
Rotazione corrente delle onde di modifica
18.8
18.7
- Riprova l’operazione di copia in caso di ERROR_ACCESS_DENIED sulle piattaforme non Windows per gestire conflitti temporanei di blocco (ad esempio nei file system CoW di macOS)
- Correzione dei progetti WebSite ASP.NET per risolvere le dipendenze di netstandard2.0 - Passare TargetFrameworkVersion all'attività RAR e copiare l'assembly facade netstandard.dll per i progetti Web .NET Framework 4.7.1 e versioni successive.
18.6
- Ottimizzazione absolutePath.GetCanonicalForm: evitare chiamate Path.GetFullPath costose quando i percorsi non richiedono la canonizzazione
- TaskHostTask inoltra le proprietà globali a livello di richiesta (ad esempio MSBuildRestoreSessionId) a TaskHost out-of-proc in modalità -mt
- Correzione di ShouldTreatWarningAsError in OOP TaskHost controllando la raccolta errata (WarningsAsMessages anziché WarningsAsErrors)
- Correzione del blocco ToolTask quando lo strumento genera processi nipoti che ereditano handle pipe stdout/stderr
18,5
- Le attività FindUnderPath e AssignTargetPath non generano più caratteri di percorso non validi quando si usa TaskEnvironment.GetAbsolutePath
- AssignTargetPath su Linux rispetta la distinzione tra maiuscole e minuscole del file system anziché ignorarla sempre
18.4
Ondate di modifiche che verranno rimosse nella versione che accompagna .NET 11
18.3
17.14
- ~ . Supporto SLNX: usare il nuovo parser per .sln e slnx~ ripristinato dopo che sono stati individuati problemi di compatibilità
-
Supporto delle impostazioni cultura personalizzate in RAR: vedere 11607 per informazioni dettagliate - Telemetria di Visual Studio
17.12
- Log TaskParameterEvent per i parametri scalari
- Convert.ToString durante una valutazione di proprietà usa InvariantCulture per tutti i tipi
- Correggere la condivisione eccessiva dei risultati della build in ResultsCache
- Aggiungere ParameterName e PropertyName a TaskParameterEventArgs
- Generare oggetti di valutazione se richiesti da qualsiasi sink
- Carica Microsoft.DotNet.MSBuildSdkResolver nel contesto di caricamento predefinito (solo in MSBuild.exe)
17.10
-
La configurazione di AppDomain viene serializzata senza usare BinFmt . È possibile rifiutare esplicitamente la funzionalità solo se BinaryFormatter è consentito in fase di esecuzione modificando
MSBuild.runtimeconfig.json. Si noti che qualsiasi utilizzo di BinaryFormatter non è sicuro. - Avviso relativo agli eventi personalizzati di serializzazione per impostazione predefinita nel framework .NET
- Dati del risolutore SDK della cache a livello di processo
- I parametri di destinazione non verranno racchiusi tra virgolette, ovvero il simbolo ';' nel nome della destinazione del parametro verrà sempre considerato come separatore
- Aggiungere i metadati di collegamento alle risorse nella destinazione AssignLinkMetadata
- Modificare l'output dell'opzione Versione per terminare con una nuova riga
- Carica NuGet.Frameworks in un AppDomain secondario (solo in MSBuild.exe)
- Aggiornare i tratti quando l'ambiente è stato modificato
- L'attività Exec non taglia gli spazi vuoti iniziali per ConsoleOutput
- Introduzione dei sovraccarichi di [MSBuild]::StableStringHash
- Mantenere coerente la codifica dell'output standard e dell'errore con la tabella codici della console per ToolTask
Cicli di Cambiamento Non Più in Rotazione
16.8
- Abilitare NoWarn
- Troncare i messaggi di log relativi a obiettivi/compiti a 1024 caratteri
- Non espandere i glob dell'unità completa con false condizioni
16.10
- Errore quando un'espansione di una proprietà in una condizione include spazi vuoti
- Consenti percorso personalizzato di CopyToOutputDirectory con TargetPath
- Consentire agli utenti con determinati caratteri speciali nel nome utente di compilare correttamente quando si usa exec
- Operazioni di ripristino falliscono quando un SDK non è risolvibile
- Ottimizza la valutazione del glob
17.0
- L'utilità di pianificazione deve rispettare BuildParameters.DisableInprocNode
- Non compilare espressioni regolari globbing in .NET Framework
- Impostazione predefinita per copiare in modo transitivo gli elementi di contenuto
-
gli assembly di riferimento non vengono più inseriti nella directory
binper impostazione predefinita (ripristinati qui e ripristinati qui) - Migliorare l'esperienza di debug: aggiungere un commutatore globale MSBuildDebugEngine; Inserire il logger binario da BuildManager; stampare un grafico statico come file con estensione dot
- Correzione del deadlock tra BuildManager e LoggingService
- Ottimizzare il livello diag per logger di file e logger della console
- Verifica dell'aggiornamento dei file non modificabili ottimizzati
- Aggiungi Microsoft.IO.Redist per l'enumerazione della directory
- memorizzazione nella cache a livello di processo di ToolsetConfigurationSection
- Normalizzare i percorsi di output RAR
17.4
- Rispetto deps.json durante il caricamento di assemblaggi
-
Considerare
Platformcome predefinita durante la negoziazione della piattaforma - Aggiunta del criterio di corrispondenza accettato per il nome ai manifest degli SDK
- Genera avviso che indica i tipi di progetto non validi
- del server MSBuild
17.6
- Analizza proprietà non valida nella destinazione
- Eliminare la cache delle stringhe di progetto
- Registrare un errore quando non esiste alcun percorso di ricerca specificato per un'importazione
- Carica gli assemblaggi di registro
- AnyHaveMetadataValue restituisce false quando viene passato un elenco vuoto
- Auto-espansione degli elementi di log
17.8
- [RAR] Non eseguire operazioni di input/output su riferimenti forniti dall'SDK
- Eliminare il file di destinazione prima di copiare
- Passaggio da SHA1 a SHA256 per l'attività Hash
-
Deprecazione di BuildEventArgs derivati personalizzati - è possibile disattivare la funzionalità solo se BinaryFormatter è consentito in fase di esecuzione modificando
MSBuild.runtimeconfig.json
Domande frequenti
perché indirizzare ogni altra versione per ruotare le onde di cambiamento?
Riteniamo che questo sia abbastanza tempo per avere discussioni con coloro interessati e assistere con l'adattamento ai cambiamenti.
perché una variabile di ambiente e non una proprietà del progetto?
Esistono scenari in cui si vuole inserire una funzionalità in un'ondata di modifiche prima che MSBuild abbia caricato il progetto. Per questo motivo, le onde di modifica richiedono l'uso delle variabili di ambiente.
Perché scegliere l'opt-out invece dell'opt-in?
L'opzione di rinuncia è un approccio migliore per noi; in caso contrario, è probabile che si ottenga un feedback limitato quando una funzionalità influisce sulle configurazioni dei clienti.