次の方法で共有


ウェーブを変更する

変更ウェーブ は、特定のフラグを環境変数として指定することでオプトアウトできる MSBuild の動作変更のセットです。 この目的は、変更が標準的な機能になる前に、これらの変更に柔軟に適応できるように、破壊的変更の可能性があることを警告することです。 特定の変更ウェーブ内のすべての機能は、個別に有効または無効にすることはできません。

新しいバージョンの MSBuild にアップグレードすると、破損する可能性がある変更は既定で有効になりますが、機能がビルドに悪影響を及ぼす場合は、その変更のウェーブを簡単に無効にすることができます。 各変更ウェーブは MSBuild のバージョン番号 (16.8 など) で識別されますが、変更ウェーブを設定すると、その MSBuild バージョンのすべての変更ではなく、ビルド プロセスに影響する可能性がある特定の機能のみが制御されます。 各変更ウェーブの機能の一覧は、この記事 の後半表示されます。 変更ウェーブを無効にすると、上位バージョンの変更ウェーブも無効になります。

変更ウェーブ機能のオプトアウト

変更ウェーブに含まれる機能を無効にするには、環境変数 MSBuildDisableFeaturesFromVersion を、無効にしたい機能が含まれている変更ウェーブ (または MSBuild バージョン) に設定します。 これは、機能が開発された MSBuild のバージョンです。 以下の機能への変更ウェーブのマッピングを参照してください。

MSBuildDisableFeaturesFromVersion の値

有効な変更ウェーブに MSBuildDisableFeaturesFromVersion を設定しない場合、警告を受け、既定の特定のウェーブに自動的に移行されます。 次の表に、使用可能な設定を示します。

MSBuildDisableFeaturesFromVersion 結果 警告を受信しますか?
未設定 すべての変更ウェーブを有効にします。つまり、各変更ウェーブの背後にあるすべての機能が有効になります。 いいえ
任意の有効かつ現在の変更ウェーブ (たとえば、16.8) 変更ウェーブ 16.8 およびそれ以降のすべての機能が無効になります。 いいえ
無効な値 (たとえば、16.9 は有効なウェーブ 16.8 および 16.10に対して無効です) 既定値は、最も近い有効な値 (昇順) です。 たとえば、16.9 を設定すると、既定で 16.10になります。 いいえ
ローテーションから外れる(たとえば、最も高いウェーブが 17.0の場合の 17.1 最も近い有効な値にクランプします。 17.117.0に固定し、16.516.8 に固定します。 はい
無効な形式 (たとえば、16x817_0garbage) すべての変更ウェーブを有効にします。つまり、各変更ウェーブの背後にあるすべての機能が有効になります。 はい

ウェーブと関連するフィーチャを変更する

17.10

17.8

17.6

17.4

17.0

ローテーションから外れた変更ウェーブ

16.8

16.10

FAQ

変更ウェーブをローテーションから外す場合に他のすべてのリリースを対象とするのはなぜですか?

私たちは、影響を受けた人々と話し合い、変化に適応するのに十分な時間だと信じています。

プロジェクト プロパティではなく環境変数が必要な理由

MSBuild がプロジェクトを読み込む前に、変更ウェーブの下に機能を配置するシナリオがあります。 そのため、変更ウェーブでは環境変数を使用する必要があります。

オプトインではなくオプトアウトする理由はなんですか?

オプトアウトは Microsoft にとってより優れたアプローチです。それ以外の場合は、機能が顧客のビルドに影響を与えたときに限られたフィードバックを受け取る可能性があります。