變更波浪

變更波 是 MSBuild 中的一組行為變更,您可以藉由將特定旗標設置為環境變數來選擇不參與。 其目的是要警告您潛在的干擾性變更,讓您在變更成為標準功能之前,能夠彈性地適應這些變更。 特定變更波中的所有功能只能一起啟用或停用,而不是個別啟用。

當您升級至新版本的 MSBuild 時,預設會啟用可能造成中斷的變更功能,但如果某個功能對您的組建造成負面影響,您可以輕鬆地停用這一系列的變更。 每個變更波都是由 MSBuild 版本號碼來識別(例如 16.8),但設定變更波只會控制可能會影響建置程式的特定功能,而不是該 MSBuild 版本中的所有變更。 本文稍後會 顯示每個變更波中的功能清單。 停用某個變更波也會停用該變更波之較高版本的變更波。

選擇不使用功能更新波

若要停用變更波中的功能,請將環境變數 MSBuildDisableFeaturesFromVersion 設定為變更波(或 MSBuild 版本),其中包含您想要 停用的功能。 這是針對這些功能開發的 MSBuild 版本。 請參閱變更波次與下列功能的對應關係。

持續存在的 MSBuild 程序會保留它們最初使用的價值 MSBuildDisableFeaturesFromVersion 。 在更改環境變數後,先關閉持久建置程序,再執行下一個建置。 對於使用 .NET CLI 執行的建置,請使用 dotnet build-server shutdown. 對於使用 Visual Studio 或 MSBuild.exe 執行的建置,請關閉 Visual Studio,並結束任何剩餘的 MSBuild.exe 處理程序。 否則,重複使用的流程可能會繼續使用先前的值,而平行建置的專案則可能使用不同的值。

MSBuildDisableFeaturesFromVersion 值

如果您未將 MSBuildDisableFeaturesFromVersion 設定為有效的變更波,您將會收到警告和/或預設為特定波。 下表顯示可能的設定:

MSBuildDisableFeaturesFromVersion 值 結果 收到警告嗎?
未設定 啟用所有變更波,這表示啟用每個變更波背後的所有功能。 不
任何當前有效的變更波(例如,16.8) 停用變更波後方的所有功能 16.8和更高。 不
無效值(例如,16.9 當有效波為 16.8 和 16.10時) 預設為最接近的有效值 (遞增)。 例如,將 16.9 設定會預設為您 16.10。 不
不在輪替序列中(例如,當最高波為 17.1時的 17.0) 限制到最接近的有效值。 例如,將 17.1 夾住 17.0,並將 16.5 夾住 16.8 是的
無效的格式(例如,16x8、17_0、garbage) 啟用所有變更波,這表示啟用每個變更波背後的所有功能。 是的

變更波浪和相關聯的功能

變更波次的當前輪替

18.12

18.11

18.10

18.9

18.8

18.7

18.6

18.5

18.4

不再輪播的變更波次

16.8

16.10

17.0

17.4

17.6

17.8

17.10

17.12

17.14

18.3

FAQ

為什麼以其他每個版本為目標來旋轉變化波出?

我們認為,這足以與受影響的人進行討論,並協助適應這些變化。

為什麼環境變數而非項目屬性?

在某些情況下,我們想要在 MSBuild 載入專案之前,將功能放在變更波下。 因此,變更波需要使用環境變數。

為何選擇退出而非選擇加入?

選擇退出對我們來說是更好的方法,否則當功能影響客戶的構建時,我們可能會得到有限的回饋。