Mudar de onda

Uma onda de alterações é um conjunto de alterações de comportamento no MSBuild que pode optar por não utilizar especificando um determinado parâmetro como variável de ambiente. O objetivo disso é alertá-lo sobre mudanças potencialmente perturbadoras para que você tenha flexibilidade na adaptação a essas alterações antes que elas se tornem funcionalidade padrão. Todos os recursos em uma onda de mudança específica só podem ser ativados ou desativados juntos, não individualmente.

Quando atualizas para uma nova versão do MSBuild, as alterações que são potencialmente disruptivas são ativadas por padrão, mas se uma funcionalidade afetar negativamente a tua compilação, podes desativar facilmente essa onda de alterações. Cada onda de alteração é identificada por um número de versão do MSBuild (por exemplo, 16.8), mas definir a onda de alteração controla apenas determinados recursos que têm o potencial de afetar o processo de compilação, não todas as alterações nessa versão do MSBuild. Uma lista dos recursos em cada onda de alteração aparece mais adiante neste artigo. Desativar uma onda de mudança também desativa ondas de mudança de versões superiores.

Excluir-se de funcionalidades da onda de atualizações

Para desativar os recursos em uma onda de alteração, defina a variável de ambiente MSBuildDisableFeaturesFromVersion para a onda de alteração (ou versão do MSBuild) que contém o recurso que você deseja desabilitar . Esta é a versão do MSBuild para a qual os recursos foram desenvolvidos. Veja o mapeamento das ondas de mudança para as seguintes características.

Os processos persistentes do MSBuild mantêm o valor de MSBuildDisableFeaturesFromVersion com que foram iniciados. Depois de mudares a variável de ambiente, desliga os processos de compilação persistentes antes de executares outra compilação. Para compilações executadas com a CLI do .NET, use dotnet build-server shutdown. Para compilações executadas com o Visual Studio ou MSBuild.exe, feche o Visual Studio e encerre quaisquer processos MSBuild.exe restantes. Caso contrário, processos reutilizados podem continuar a usar o valor anterior, e projetos construídos em paralelo podem usar valores diferentes.

Valores de MSBuildDisableFeaturesFromVersion

Você receberá um aviso e/ou será direcionado para uma onda específica se não definir MSBuildDisableFeaturesFromVersion para uma onda de mudança válida. A tabela a seguir mostra as configurações possíveis:

Valor MSBuildDisableFeaturesFromVersion Resultado Receber aviso?
Não definido Habilite todas as ondas de mudança, o que significa que todos os recursos por trás de cada onda de mudança estão habilitados. Não
Qualquer onda de mudança válida e atual (por exemplo, 16.8) Desative todos os recursos por trás do Change wave 16.8e superior. Não
Valor inválido (por exemplo, 16.9 quando as ondas válidas são 16.8 e 16.10) Definir o valor padrão para o valor válido mais próximo (ascendente). Por exemplo, definir 16.9 irá definir por padrão para 16.10. Não
Fora de Rotação (por exemplo, 17.1 quando a onda mais alta é 17.0) Ajustar para o valor válido mais próximo. Por exemplo, 17.1 prende a 17.0, e 16.5 prende a 16.8. Sim
Formato inválido (por exemplo, 16x8, 17_0, garbage) Habilite todas as ondas de mudança, o que significa que todos os recursos por trás de cada onda de mudança estão habilitados. Sim

Alterar ondas e características associadas

Rotação Atual das Ondas de Mudança

18.10

18.9

18.8

18.7

18.6

18.5

18.4

Ondas de alteração que serão removidas na versão que acompanha o .NET 11

18.3

17.14

17.12

17.10

Change Waves já não está em circulação.

16.8

16.10

17.0

17.4

17.6

17.8

FAQ

Por que direcionar todas as outras liberações para a rotação de ondas de mudança?

Acreditamos que este é tempo suficiente para discutir com as pessoas afetadas e ajudar a adaptar-se às mudanças.

Por que uma variável de ambiente e não uma propriedade de projeto?

Há cenários em que queremos colocar uma funcionalidade durante uma fase de alteração antes que o MSBuild carregue o projeto. Por essa razão, as ondas de mudança requerem o uso de variáveis de ambiente.

Porquê escolher optar por não participar em vez de participar?

A exclusão é uma abordagem melhor para nós, caso contrário, provavelmente receberíamos feedback limitado quando um recurso afeta as compilações do cliente.