Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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. Bekijk de koppeling van wijzigingsgolven aan de volgende functionaliteiten.
Permanente MSBuild-processen behouden de waarde waarmee MSBuildDisableFeaturesFromVersion ze zijn gestart. Nadat u de omgevingsvariabele hebt gewijzigd, sluit u permanente buildprocessen af voordat u een andere build uitvoert. Gebruik voor builds die met de .NET CLI worden uitgevoerd dotnet build-server shutdown. Voor builds die met Visual Studio of MSBuild.exe worden uitgevoerd, sluit u Visual Studio en sluit u alle resterende MSBuild.exe-processen af. Anders kunnen hergebruikte processen de vorige waarde blijven gebruiken, en projecten die parallel zijn gebouwd, kunnen verschillende waarden gebruiken.
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.8en 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.0is) |
Klem op de dichtstbijzijnde geldige waarde. Bijvoorbeeld 17.1 klemmen aan 17.0en 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
Huidige draaiing van wijzigingsgolven
18.10
-
Los relatieve projectpaden op ten opzichte van de logische huidige map in Unix vanuit
PWD, zodat builds in mappen met symbolische koppelingen stabiele volledige projectpaden en gerelateerde uitvoerpaden opleveren. -
Restore wordt doorgegeven
ExcludeRestorePackageImports=trueals een globale eigenschap, zodat de herstelbewerking van NuGet geen tweede evaluatie meer activeert van elk project. -
-getProperty/-getItem(zonder een doel) stop de evaluatie na de fase die de gevraagde gegevens oplevert in plaats van een volledige evaluatie uit te voeren, zodat latere fasen zoals registratie van het doel worden vermeden.
18,9
- GenerateResource: getypte ResX-gegevens/metagegevensvermeldingen in Mark-of-the-Web-bestanden worden nu behandeld als niet-vertrouwd en geblokkeerd met MSB3821; Deblokker het bestand (of stel MSBUILDDISABLEFEATURESFROMVERSION=18.9) in om eerder gedrag te herstellen. ResXFileRef-vermeldingen worden altijd geblokkeerd, ongeacht deze wave.
- TaskHost named-pipebuffers zijn standaard ingesteld op 1 MB (was 128 KB), waardoor de verzendbackpressure voor grote TaskHostConfiguration-pakketten vermindert. Instelbaar via MSBUILDNODECONNECTIONBUFFERSIZE
18.8
- RAR-taak: tussen meerdere invoereigenschappen kunt u relatieve paden omzetten op basis van de projectmap (niet de huidige procesmap)
- Console-, parallelle console- en terminalloggers geven de paden weer van logbestanden die door geregistreerde loggers zijn weggeschreven (bijvoorbeeld een bestandslogger en een binaire logger) als onderdeel van het eindoverzicht van de build.
18.7
- Kopieertaken opnieuw proberen bij ERROR_ACCESS_DENIED op niet-Windows-platforms om tijdelijke vergrendelingsconflicten op te vangen (bijv. macOS CoW-bestandssystemen)
- Los ASP.NET WebSite-projecten op om netstandard2.0-afhankelijkheden op te lossen - Geef TargetFrameworkVersion door aan de RAR-taak en kopieer de netstandard.dll-facade voor .NET Framework 4.7.1+-webprojecten.
18.6
- AbsolutePath.GetCanonicalForm optimization - vermijd dure Path.GetFullPath-aanroepen wanneer paden geen canonicalisatie nodig hebben
- TaskHostTask stuurt globale eigenschappen op aanvraagniveau (bijvoorbeeld MSBuildRestoreSessionId) door naar out-of-proc TaskHost in -mt-modus
- Fix ShouldTreatWarningAsError in OOP TaskHost controleren verkeerde verzameling (WarningsAsMessages in plaats van WarningsAsErrors)
- Los ToolTask-vastlopen op wanneer het hulpprogramma kleinkindprocessen start die stdout/stderr-pipe-handles erven
18,5
- FindUnderPath- en AssignTargetPath-taken geven niet langer een fout bij ongeldige tekens in het pad wanneer u TaskEnvironment.GetAbsolutePath gebruikt
- AssignTargetPath in Linux respecteert hoofdlettergevoeligheid van het bestandssysteem in plaats van altijd hoofdletters te negeren
18.4
Wijzigingsgolven die zullen worden verwijderd in de release die gepaard gaat met .NET 11
18.3
17.14
- ~ . SLNX-ondersteuning: gebruik de nieuwe parser voor .sln en .slnx~ teruggezet nadat compatibiliteitsproblemen zijn gedetecteerd
-
Ondersteuning voor aangepaste cultuur in RAR- zie 11607 voor meer informatie - VS-telemetrie
17.12
- Log TaskParameterEvent voor scalaire parameters
- Convert.ToString tijdens een eigenschapsevaluatie maakt gebruik van de InvariantCulture voor alle typen
- Het te veel delen van buildresultaten in ResultsCache oplossen
- ParameterName en PropertyName toevoegen aan TaskParameterEventArgs
- Eval props verzenden indien aangevraagd door een sink
- Laad Microsoft.DotNet.MSBuildSdkResolver in de standaard laadcontext (alleen MSBuild.exe)
17.10
-
AppDomain-configuratie wordt geserialiseerd zonder BinFmt - voor deze functie kan alleen een opt-out worden ingesteld als BinaryFormatter tijdens runtime is toegestaan door
MSBuild.runtimeconfig.jsonte bewerken. Houd er rekening mee dat het gebruik van BinaryFormatter onveilig is. - Standaard waarschuwing voor aangepaste serialisatiegebeurtenissen in .NET Framework
- Cache SDK-resolver voor gegevens in het gehele proces
- Doelparameters worden nietquoteerd, wat betekent dat het symbool ';' in de parameterdoelnaam altijd wordt behandeld als scheidingsteken
- Metagegevens van koppelingen toevoegen aan resources in assignLinkMetadata-doel
- De uitvoer van de versieschakelaar wijzigen om te voltooien met een nieuwe regel
- Laad NuGet.Frameworks in een secundair AppDomain (alleen MSBuild.exe)
- Eigenschappen bijwerken wanneer de omgeving is gewijzigd
- De exec-taak trimt geen voorloopspaties voor ConsoleOutput
- Voeg [MSBuild]::StableStringHash-overbelastingen toe
- De codering van de standaarduitvoer en -fout consistent houden met de consolecodepagina voor ToolTask
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
17.0
- Scheduler moet BuildParameters.DisableInprocNode respecteren
- Compileer geen globbing-regexen op de .NET Framework
- Standaard om inhoudsitems transitief te kopiëren
-
Referentieassemblies worden nu niet meer standaard in de
bindirectory 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
17.4
- Respecteer deps.json bij het laden van assemblies
-
Overweeg
Platformals standaard tijdens platformonderhandelingen - Geaccepteerde SDK-naam patroon toevoegen aan SDK-manifesten
- Waarschuwing geven die ongeldige projecttypen aangeeft
- MSBuild-server
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.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.jsonte bewerken.
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.