Změna vln
Vlna změn je sada změn chování v nástroji MSBuild, ze které se můžete vyloučit nastavením konkrétního příznaku jako proměnné prostředí. Účelem je upozornit vás na potenciálně rušivé změny, abyste měli flexibilitu při přizpůsobování se těmto změnám, než se stanou standardními funkcemi. Všechny funkce v konkrétní vlně změn lze povolit nebo zakázat pouze společně, ne jednotlivě.
Když upgradujete na novou verzi nástroje MSBuild, změny, které mohou potenciálně způsobit problémy, jsou povoleny ve výchozím nastavení, ale pokud funkce ovlivní sestavení negativně, můžete tuto vlnu změn snadno zakázat. Každá vlna změn je identifikována číslem verze NÁSTROJE MSBuild (například 16.8), ale nastavení vlny změn řídí pouze určité funkce, které mají potenciál ovlivnit proces sestavení, ne všechny změny v této verzi NÁSTROJE MSBuild. Seznam funkcí v každé vlně změn se zobrazí dále v tomto článku. Zakázání vlny změn také zakáže změny ve vyšších verzích.
Odhlášení z funkcí vlny změn
Pokud chcete zakázat funkce v změnové vlně, nastavte proměnnou prostředí MSBuildDisableFeaturesFromVersion
na změnovou vlnu (nebo verzi MSBuild), která obsahuje funkci, kterou chcete zakázat. Toto je verze nástroje MSBuild, pro kterou byly vyvinuty funkce. Podívejte se níže na přiřazení vln změn k funkcím.
Hodnoty MSBuildDisableFeaturesFromVersion
Pokud nenastavíte MSBuildDisableFeaturesFromVersion
na platnou změnovou vlnu, zobrazí se vám upozornění a/nebo se použije výchozí vlna. V následující tabulce jsou uvedena možná nastavení:
hodnota MSBuildDisableFeaturesFromVersion |
Výsledek | Zobrazí se upozornění? |
---|---|---|
Nenastavený | Povolte všechny vlny změn, což znamená, že jsou povolené všechny funkce za každou vlnou změn. | Ne |
Jakákoli platná a aktuální vlna změn (například 16.8 ) |
Zakažte všechny funkce za vlnou změn 16.8 a vyšších. |
Ne |
Neplatná hodnota (například 16.9 , pokud jsou platné vlny 16.8 a 16.10 ) |
Nastavit na nejbližší platnou hodnotu (vzestupně). Například nastavení 16.9 vás přiřadí ve výchozím nastavení k 16.10 . |
Ne |
Mimo otočení (například 17.1 , když je nejvyšší vlna 17.0 ) |
Uchycení k nejbližší platné hodnotě. Například 17.1 je připevněno k 17.0 a 16.5 je připevněno k 16.8 |
Ano |
Neplatný formát (například 16x8 , 17_0 , garbage ) |
Povolte všechny vlny změn, což znamená, že jsou povolené všechny funkce za každou vlnou změn. | Ano |
Změna vln a souvisejících prvků
17.10
-
Konfigurace AppDomain je serializována bez použití BinFmt – funkci lze deaktivovat jenom v případě, že BinaryFormatter je povolen během běhu úpravou
MSBuild.runtimeconfig.json
- Na úrovni procesu řešení mezipaměti SDK
17.8
- [RAR] Neudělávejte vstupně-výstupní operace u odkazů poskytovaných sadou SDK
- Odstranit cílový soubor před kopírováním
- Přesunutí z SHA1 na SHA256 pro hash úkol
-
vyřazení vlastního odvozeného BuildEventArgs – funkci je možné odhlásit pouze v případě, že BinaryFormatter je povolený za běhu úpravou
MSBuild.runtimeconfig.json
17.6
- Parsovat neplatnou vlastnost v cílovém
- odstranit mezipaměť řetězců projektu
- protokolovat chybu, pokud neexistuje zadaná cesta hledání importu
- sestavení protokolu se načte
- AnyHaveMetadataValue vrátí hodnotu false při předání prázdného seznamu
- samoobslužné rozšíření položky protokolu
17.4
- Respektovat deps.json při načítání sestavení
-
zvažte
Platform
jako výchozí při vyjednávání platformy. - Přidání přijatého vzoru shody názvu SDK do manifestů SDK
- vyvolání upozornění označující neplatné typy projektů
- MSBuild server
- Zavolejte nové API CultureInfo při ověřování kultur (pouze .NET Core)
17.0
- Plánovač by měl respektovat buildParameters.DisableInprocNode
- Nekopilujte výrazy regexing globbing v rozhraní .NET Framework
- Výchozí nastavení pro tranzitivní kopírování položek obsahu
-
Referenční sestavení již nejsou ve výchozím nastavení umístěna v adresáři
bin
(vrátila se sem a byla obnovena zde) - Zlepšení prostředí ladění: přidání globálního přepínače MSBuildDebugEngine; Vložení binárního protokolovacího nástroje z BuildManageru; tisk statického grafu jako souboru .dot
- Oprava vzájemného zablokování v BuildManageru a LoggingService
- Optimalizujte úroveň diagnostiky pro souborový protokol a konzolový protokol
- Optimalizované neměnné soubory pro aktuální kontroly
- Přidat Microsoft.IO.Redist pro výčet adresářů
- Procesní ukládání do mezipaměti nástroje ToolsetConfigurationSection
- Normalizovat výstupní cesty RAR
Změna vln, které se už nestřídá
16.8
- Povolit NoWarn
- Zkrátit zprávy protokolu o přeskočených cílech a úlohách na 1024 znaků
- Nerozšiřovat globs na celý disk s podmínkou 'false'
16.10
- Chyba, pokud rozšíření vlastnosti v podmínce obsahuje prázdné znaky
- Povolit vlastní umístění CopyToOutputDirectory s TargetPath
- Povolit uživatelům, kteří mají v uživatelském jménu určité speciální znaky, úspěšně provést build při použití příkazu exec
- neúspěšné operace obnovení v případech, kdy je sada SDK nedostupná
- Optimalizace vyhodnocení globu
FAQ
Proč cílit na každou druhou verzi pro vyřazení vln změn?
Věříme, že je to dostatek času na to, abychom mohli diskutovat s těmi, kdo byli ovlivněni, a pomoci s adaptací na změny.
Proč proměnná prostředí a ne vlastnost projektu?
Existují scénáře, kdy chceme umístit funkci pod vlnu změn, než MSBuild načte projekt. Z tohoto důvodu fáze změn vyžadují použití proměnných prostředí.
Proč zvolit odmítnutí před přihlášením?
Varianta opt-out je pro nás lepší přístup; jinak bychom pravděpodobně získali omezenou zpětnou vazbu, pokud nějaká funkce ovlivní zákaznické buildy.