Zmienia fale

Fala zmian to zestaw zmian w działaniu programu MSBuild, których można uniknąć, ustawiając odpowiednią flagę jako zmienną środowiskową. Celem tego jest ostrzeżenie przed potencjalnie destrukcyjnymi zmianami, dzięki czemu masz elastyczność dostosowywania się do tych zmian, zanim staną się one standardową funkcjonalnością. Wszystkie funkcje określonej fali zmian można włączać lub wyłączać tylko razem, a nie osobno.

Po aktualizacji do nowszej wersji MSBuild, zmiany mogące powodować problemy z kompatybilnością są domyślnie włączone, ale jeśli funkcja wpłynie negatywnie na budowę, można łatwo wyłączyć tę grupę zmian. Każda fala zmian jest identyfikowana przez numer wersji programu MSBuild (na przykład 16.8), ale ustawienie fali zmian kontroluje tylko niektóre funkcje, które mogą mieć wpływ na proces kompilacji, a nie wszystkie zmiany w tej wersji programu MSBuild. Lista funkcji w każdej fali zmian zostanie wyświetlona w dalszej części tego artykułu. Wyłączenie fali zmian wyłącza również fale zmian w wyższych wersjach.

Zrezygnuj z funkcji fal zmianowych

Aby wyłączyć funkcje w fali zmian, ustaw zmienną środowiskową MSBuildDisableFeaturesFromVersion na falę zmian (lub wersję programu MSBuild), która zawiera funkcję, którą chcesz wyłączone. Jest to wersja programu MSBuild, dla którego zostały opracowane funkcje. Zobacz przypisanie fal zmian do następujących funkcji.

Trwale uruchomione procesy MSBuild zachowują wartość parametru MSBuildDisableFeaturesFromVersion, z którą zostały uruchomione. Po zmianie zmiennej środowiskowej zamknij trwałe procesy kompilacji przed uruchomieniem innej kompilacji. W przypadku kompilacji uruchamianych za pomocą interfejsu wiersza polecenia .NET użyj polecenia dotnet build-server shutdown. W przypadku kompilacji uruchamianych przy użyciu Visual Studio lub MSBuild.exe, zamknij Visual Studio i zakończ wszystkie pozostałe procesy MSBuild.exe. W przeciwnym razie procesy użyte ponownie mogą nadal korzystać z poprzedniej wartości, a projekty kompilowane równolegle mogą używać różnych wartości.

Wartości MSBuildDisableFeaturesFromVersion

Jeśli nie ustawisz MSBuildDisableFeaturesFromVersion na prawidłową falę, zostanie wyświetlone ostrzeżenie i/lub zostaniesz domyślnie przypisany do określonej fali. W poniższej tabeli przedstawiono możliwe ustawienia:

wartość MSBuildDisableFeaturesFromVersion Wynik Otrzymujesz ostrzeżenie?
Nieustawiony Włącz wszystkie fale zmian, co oznacza, że dzięki każdej fali wszystkie funkcje są włączone. Nie
Każda prawidłowa i bieżąca fala zmian (na przykład 16.8) Wyłącz wszystkie funkcje za falą zmian 16.8i nowszych. Nie
Nieprawidłowa wartość (na przykład 16.9, gdy prawidłowe fale są 16.8 i 16.10) Ustawienie domyślne najbliższej prawidłowej wartości (rosnąco). Na przykład ustawienie 16.9 ustawi cię na domyślne 16.10. Nie
Poza rotacją (na przykład 17.1, gdy najwyższa fala jest 17.0) Zaciśnięty do najbliższej prawidłowej wartości. Na przykład 17.1 przymocowuje się do 17.0, a 16.5 przymocowuje się do 16.8 Tak
Nieprawidłowy format (na przykład 16x8, 17_0, garbage) Włącz wszystkie fale zmian, co oznacza, że dzięki każdej fali wszystkie funkcje są włączone. Tak

Zmiana fal i powiązanych cech

Bieżąca rotacja fal zmian

18.10

18.9

18.8

18.7

18.6

18,5

18.4

Fale zmian, które zostaną usunięte w wydaniu towarzyszącym platformie .NET 11

18.3

17.14

17.12

17.10

Zmiana fal nie jest już w rotacji

16.8

16.10

17.0

17.4

17.6

17.8

Często zadawane pytania

Dlaczego celować w każdą alternatywną wersję dla wprowadzania zmian etapami?

Uważamy, że jest to wystarczająco dużo czasu, aby prowadzić dyskusje z tymi, których dotyczy problem, i pomóc w dostosowaniu się do zmian.

Dlaczego zmienna środowiskowa, a nie właściwość projektu?

Istnieją scenariusze, w których chcemy umieścić funkcję na fali zmian, zanim program MSBuild załadował projekt. Z tego powodu fale zmian wymagają użycia zmiennych środowiskowych.

Dlaczego zrezygnować z zgody?

Automatyczna rezygnacja jest dla nas lepszym rozwiązaniem. W przeciwnym razie prawdopodobnie otrzymalibyśmy ograniczoną opinię, gdy funkcjonalność wpłynie na wersje oprogramowania klientów.