Wellen ändern

Eine Änderungswelle besteht aus mehreren Behavior Changes in MSBuild, die Sie deaktivieren können, indem Sie ein bestimmtes Flag als Umgebungsvariable angeben. Dies dient dazu, Sie vor potenziell störenden Änderungen zu warnen, damit Sie flexibilität haben, sich an diese Änderungen anzupassen, bevor sie zu Standardfunktionen werden. Alle Features in einer bestimmten Änderungswelle können nur gemeinsam aktiviert oder deaktiviert werden, nicht einzeln.

Wenn Sie ein Upgrade zu einer neuen MSBuild-Version durchführen, sind Änderungen, die möglicherweise Breaking Changes sind, standardmäßig aktiviert. Wenn sich ein Feature jedoch negativ auf Ihr Build auswirkt, können Sie die entsprechende Änderungswelle problemlos deaktivieren. Jede Änderungswelle wird durch eine MSBuild-Versionsnummer (z. B. 16.8) identifiziert, das Festlegen der Änderungswelle steuert jedoch nur bestimmte Features, die das Potenzial haben, den Buildprozess zu beeinflussen, nicht alle Änderungen in dieser MSBuild-Version. Eine Liste der Features der verschiedenen Änderungswellen finden Sie im Abschnitt Änderungswellen und dazugehörige Features in diesem Artikel. Durch deaktivieren einer Änderungswelle werden auch Änderungswellen höherer Versionen deaktiviert.

Deaktivieren der Features von Änderungswellen

Wenn Sie die Features einer Änderungswelle deaktivieren möchten, legen Sie die Umgebungsvariable MSBuildDisableFeaturesFromVersion auf die Änderungswelle (oder die MSBuild-Version) fest, die die Features enthält, die Sie deaktivieren möchten. Dies ist die Version von MSBuild, für die die Features entwickelt wurden. Sehen Sie sich die Zuordnung von Änderungswellen zu den folgenden Features an.

Beständige MSBuild-Prozesse behalten den Wert MSBuildDisableFeaturesFromVersion , mit dem sie begonnen haben. Nachdem Sie die Umgebungsvariable geändert haben, beenden Sie persistente Buildprozesse, bevor Sie einen anderen Build ausführen. Verwenden Sie dotnet build-server shutdownfür Builds, die mit der .NET CLI ausgeführt werden. Für Builds mit Visual Studio oder MSBuild.exeschließen Sie Visual Studio, und beenden Sie alle verbleibenden MSBuild.exe Prozesse. Andernfalls verwenden wiederverwendete Prozesse möglicherweise weiterhin den vorherigen Wert, und projekte, die parallel erstellt wurden, verwenden möglicherweise unterschiedliche Werte.

MSBuildDisableFeaturesFromVersion-Werte

Wenn Sie MSBuildDisableFeaturesFromVersion nicht auf eine gültige Änderungswelle festlegen, erhalten Sie eine Warnung und/oder Sie werden standardmäßig auf eine bestimmte Welle zurückgesetzt. In der folgenden Tabelle sind die möglichen Einstellungen aufgeführt:

MSBuildDisableFeaturesFromVersion Value Ergebnis Warnung erhalten?
Nicht festgelegt Aktivieren Sie alle Änderungswellen, d. h., alle Features hinter jeder Änderungswelle sind aktiviert. Nein
Eine beliebige gültige und aktuelle Änderungswelle (z. B. 16.8) Hierbei werden alle Features der Änderungswelle 16.8und höher deaktiviert. Nein
Ungültiger Wert (z. B. 16.9, wenn nur 16.8 und 16.10 gültige Wellen sind) Standardeinstellung für den nächstgelegenen gültigen Wert (aufsteigend). Wenn beispielsweise 16.9 festgelegt wird, wird standardmäßig 16.10 verwendet. Nein
Außerhalb der Rotation (z. B. 17.1, wenn die höchste Welle 17.0 ist) Hierbei wird ein Übergang zum nächstgelegenen gültigen Wert durchgeführt. Für 17.1 wird beispielsweise 17.0 verwendet, für 16.5 wird 16.8 verwendet. Ja
Ungültiges Format (z. B. 16x8, 17_0, garbage) Aktivieren Sie alle Änderungswellen, d. h., alle Features hinter jeder Änderungswelle sind aktiviert. Ja

Änderungswellen und dazugehörige Features

Aktuelle Abfolge der Änderungswellen

18.10

18.9

18.8

18,7

18.6

18,5

18.4

Änderungswellen, die im Release zusammen mit .NET 11 entfernt werden

18.3

17.14

17.12

17.10

Änderungswellen außerhalb der Rotation

16.8

16.10

17.0

17.4

17.6

17.8

Häufig gestellte Fragen

Warum sollten andere Releases als Ziel verwendet werden, wenn Änderungswellen aussortiert werden?

Wir glauben, dass dies ausreichend Zeit ist, um gespräche mit den betroffenen Personen zu führen und sich an die Änderungen anzupassen.

Warum eine Umgebungsvariable und keine Projekteigenschaft?

Es gibt Szenarien, in denen wir ein Feature unter einer Änderungswelle platzieren möchten, bevor MSBuild das Projekt geladen hat. Aus diesem Grund erfordern Änderungswellen die Verwendung von Umgebungsvariablen.

Warum Opt-out statt Opt-in?

Dieser Ansatz eignet sich besser für uns, da wir andernfalls nur eingeschränkt Feedback erhalten würden, wenn ein Feature Builds von Kunden beeinträchtigt.