Golven veranderen
Een wijzigingsgolf is een reeks gedragswijzigingen in MSBuild die u kunt uitschakelen door een bepaalde vlag op te geven als een omgevingsvariabele. Het doel hiervan is om u te waarschuwen voor potentieel verstorende wijzigingen, zodat u flexibiliteit hebt bij het aanpassen aan deze wijzigingen voordat ze standaardfunctionaliteit worden. Alle functies in een specifieke wijzigingsgolf kunnen alleen worden ingeschakeld of uitgeschakeld, niet afzonderlijk.
Wanneer u een upgrade uitvoert naar een nieuwe versie van MSBuild, worden wijzigingen die mogelijk fouten veroorzaken standaard ingeschakeld, maar als een functie negatief van invloed is op uw build, kunt u deze golf van wijzigingen eenvoudig uitschakelen. Elke wijzigingsgolf wordt geïdentificeerd door een MSBuild-versienummer (bijvoorbeeld 16.8), maar het instellen van de wijzigingsgolf bepaalt alleen bepaalde functies die het buildproces kunnen beïnvloeden, niet alle wijzigingen in die MSBuild-versie. Een lijst met de functies in elke wijzigingsgolf wordt verderop in dit artikelweergegeven. Als u een wijzigingsgolf uitschakelt, worden ook wijzigingsgolven van hogere versies uitgeschakeld.
Afmelden voor wijzigingsgolffuncties
Als u de functies in een wijzigingsgolf wilt uitschakelen, stelt u de omgevingsvariabele MSBuildDisableFeaturesFromVersion
in op de wijzigingsgolf (of MSBuild-versie) die de functie bevat die u wilt uitgeschakeld. Dit is de versie van MSBuild waarvoor de functies zijn ontwikkeld. Zie hieronder de koppeling van wijzigingsgolven aan functies.
De waarden van MSBuildDisableFeaturesFromVersion
U ontvangt een waarschuwing en/of wordt automatisch toegewezen aan een specifieke golf als u MSBuildDisableFeaturesFromVersion
niet instelt op een geldige wijzigingsgolf. In de volgende tabel ziet u de mogelijke instellingen:
MSBuildDisableFeaturesFromVersion waarde |
Resultaat | Waarschuwing ontvangen? |
---|---|---|
Ongedefinieerd | Schakel alle wijzigingsgolven in, wat betekent dat alle functies achter elke wijzigingsgolf zijn ingeschakeld. | Nee |
Elke geldige en huidige wijzigingsgolf (bijvoorbeeld 16.8 ) |
Schakel alle functies achter wijzigingsgolven 16.8 en hogeruit. |
Nee |
Ongeldige waarde (bijvoorbeeld 16.9 wanneer geldige golven zijn 16.8 en 16.10 ) |
Standaard ingesteld op de dichtstbijzijnde geldige waarde (oplopend). Als u bijvoorbeeld 16.9 instelt, wordt u standaard 16.10 . |
Nee |
Uit de volgorde (bijvoorbeeld 17.1 , wanneer de hoogste golf 17.0 is) |
Klem op de dichtstbijzijnde geldige waarde. Bijvoorbeeld 17.1 klemmen aan 17.0 en 16.5 klemmen aan 16.8 |
Ja |
Ongeldige indeling (bijvoorbeeld 16x8 , 17_0 , garbage ) |
Schakel alle wijzigingsgolven in, wat betekent dat alle functies achter elke wijzigingsgolf zijn ingeschakeld. | Ja |
Golven en bijbehorende functies wijzigen
17.10
-
AppDomain-configuratie wordt zonder gebruik van BinFmt- geserialiseerd. De functie kan alleen worden uitgeschakeld als BinaryFormatter- bij runtime is toegestaan door
MSBuild.runtimeconfig.json
te bewerken. - Cache SDK-resolver voor gegevens in het gehele proces
17.8
- [RAR] I/O niet uitvoeren op door de SDK verstrekte verwijzingen
- doelbestand verwijderen voordat u kopieert
- van SHA1 naar SHA256 verplaatsen voor hash-taak
-
Aangepaste afgeleide BuildEventArgs- worden afgeschaft. De functie kan alleen worden uitgeschakeld als BinaryFormatter- tijdens runtime is toegestaan door
MSBuild.runtimeconfig.json
te bewerken.
17.6
- ongeldig eigenschap onder doel parseer
- cache van projectreeksen elimineren
- Registreer een fout wanneer er geen opgegeven zoekpad voor een import bestaat
- Assembly-belasting loggen
- AnyHaveMetadataValue retourneert onwaar wanneer een lege lijst wordt doorgegeven
- zelfuitbreiding van logboekitem
17.4
- Respecteer deps.json bij het laden van assemblies
-
Overweeg
Platform
als standaard tijdens platformonderhandelingen - Geaccepteerde SDK-naam patroon toevoegen aan SDK-manifesten
- Waarschuwing geven die ongeldige projecttypen aangeeft
- MSBuild-server
- nieuwe CultureInfo-API aanroepen bij het valideren van culturen (alleen.NET Core)
17.0
- Scheduler moet de buildParameters.DisableInprocNode-
- Compileer geen globbing-regexen op de .NET Framework
- Standaard om inhoudsitems transitief te kopiëren
-
Referentieassemblies worden nu niet meer standaard in de
bin
directory geplaatst (hier teruggezet en hier) - De foutopsporingservaring verbeteren: globale switch MSBuildDebugEngine toevoegen; Binaire logboekregistratie van BuildManager injecteren; statische grafiek afdrukken als .dot-bestand
- impasse oplossen in BuildManager versus LoggingService
- Het diag-niveau voor bestandslogger en consolelogger optimaliseren
- Geoptimaliseerde onveranderbare bestanden worden bijgewerkt
- Microsoft.IO.Redist toevoegen voor opsomming van mappen
- procesbrede caching van ToolsetConfigurationSection-
- RAR-uitvoerpaden normaliseren
Wijzigingsgolven niet meer in omloop
16.8
- NoWarn- inschakelen
- afgekapt doel/taak heeft logboekberichten overgeslagen naar 1024 tekens
- Vouw geen volledige schijfglobs uit bij een valse conditie
16.10
- Fout wanneer een eigenschapsuitbreiding in een voorwaarde witruimte heeft
- nl-NL: Aangepaste CopyToOutputDirectory-locatie met TargetPath- toestaan
- Sta gebruikers met bepaalde speciale tekens in hun gebruikersnaam toe om succesvol te bouwen wanneer ze exec gebruiken.
- Mislukken hersteloperaties wanneer een SDK niet kan worden opgelost
- Glob-evaluatie optimaliseren
FAQ
Waarom richt u zich op elke tweede release om veranderingsgolven af te wisselen?
We zijn van mening dat dit voldoende tijd is om gesprekken te voeren met de getroffen personen en om ons aan te passen aan de wijzigingen.
Waarom een omgevingsvariabele en geen projecteigenschap?
Er zijn scenario's waarin we een functie onder een wijzigingsgolf willen plaatsen voordat MSBuild het project heeft geladen. Daarom vereisen wijzigingsgolven het gebruik van omgevingsvariabelen.
Waarom afmelden bij opt-in?
Opt-out is een betere benadering voor ons, anders krijgen we waarschijnlijk beperkte feedback wanneer een functie van invloed is op de builds van klanten.