Поделиться через


Изменение волн

Волна изменений — это набор изменений в поведении в MSBuild, от которых можно явно отказаться, указав определенный флаг в качестве переменной среды. Это необходимо для того, чтобы предупредить об изменениях, которые могут привести к нарушению работы. Это позволяет обеспечить гибкость при адаптации к этим изменениям, прежде чем они станут стандартными функциями. Все функции в конкретной волне изменений могут быть включены или отключены только вместе, а не по отдельности.

При обновлении до новой версии MSBuild изменения, которые могут привести к нарушению работы, по умолчанию включены. Однако если функция оказывает отрицательное влияние на сборку, можно легко отключить эту волну изменений. Каждая волна изменений идентифицируется номером версии MSBuild (например, 16.8), однако установка волны изменений влияет только на некоторые функции, которые могут повлиять на процесс сборки, а не на все изменения в этой версии MSBuild. Список функций в каждой волне изменений приведен далее в этой статье. При отключении волны изменений также отключаются волны изменений более поздних версий.

Явный отказ от функций волны изменений

Чтобы отключить функции в волне изменений, задайте для переменной среды MSBuildDisableFeaturesFromVersion значение, соответствующее волне изменений (или версии MSBuild), содержащей функцию, которую необходимо отключить. Это версия MSBuild, для которой были разработаны функции. Сведения о соответствии волн изменений и функций приведены ниже.

Значения MSBuildDisableFeaturesFromVersion

Если в качестве значения переменной среды MSBuildDisableFeaturesFromVersion не задана допустимая волна изменений, то будет выдано предупреждение и (или) будет использована конкретная волна изменений по умолчанию. Возможные значения приведены в следующей таблице:

MSBuildDisableFeaturesFromVersion Значение Результат Выдается ли предупреждение
Не задано Включаются все волны изменений, т. е. включаются все функции в каждой волне изменений. No
Любая допустимая и текущая волна изменений (например, 16.8) Отключаются все функции до волны изменений 16.8 и более поздних версий. No
Недопустимое значение (например, 16.9, если допустимыми являются волны изменений 16.8 и 16.10) По умолчанию используется ближайшее допустимое значение (по возрастанию). Например, при указании волны изменений 16.9 по умолчанию будет использоваться волна изменений 16.10. No
Неиспользуемая волна изменений (например, 17.1, когда максимальная волна изменений — 17.0) Используется ближайшее допустимое значение. Например, если указано 17.1, используется 17.0, а при указании 16.5 используется 16.8 Да
Недопустимый формат (например, 16x8, 17_0, garbage) Включаются все волны изменений, т. е. включаются все функции в каждой волне изменений. Да

Волны изменений и связанные функции

17.10

17.8

17.6

17.4

17,0

Изменение волн больше не вращалось

16,8

16,10

Вопросы и ответы

Почему каждый второй выпуск помечается как включающий волны изменений?

Мы считаем, что это позволяет обеспечить достаточное время для того, чтобы обсудить изменения с затронутыми пользователями и помочь им адаптироваться к изменениям.

Почему используются переменные среды, а не свойства проекта?

Существуют сценарии, в которых необходимо поместить функцию в волну изменений перед загрузкой проекта в MSBuild. По этой причине для волн изменений необходимо использовать переменные среды.

Почему используется явный отказ, а не согласие?

Использование отказа является оптимальным для нас. В противном случае реакция, связанная с влиянием функции на сборки клиентов, скорее всего, была бы ограниченной.