Alterar ondas

Uma onda de alterações é um conjunto de alterações de comportamento no MSBuild que você pode recusar especificando um sinalizador específico como uma variável de ambiente. A finalidade disso é avisar você sobre alterações potencialmente disruptivas para que você tenha flexibilidade na adaptação a essas alterações antes que elas se tornem funcionalidades padrão. Todos os recursos em uma onda de alterações específica só podem ser habilitados ou desabilitados juntos, não individualmente.

Quando você atualiza para uma nova versão do MSBuild, as alterações que são potencialmente problemáticas são habilitadas por padrão, mas se alguma funcionalidade afetar negativamente sua compilação, você poderá desabilitar 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 a configuração da onda de alterações controla apenas determinados recursos que têm o potencial de afetar o processo de build, não todas as alterações nessa versão do MSBuild. Uma lista dos recursos em cada onda de alterações será exibida posteriormente neste artigo. Desabilitar uma onda de alterações também desabilita as ondas de alterações de versões superiores.

Recusar recursos da onda de alterações

Para desabilitar os recursos em uma onda de alterações, defina a variável de ambiente MSBuildDisableFeaturesFromVersion para a onda de alterações (ou versão do MSBuild) que contém o recurso que você deseja desabilitado. Esta é a versão do MSBuild para a qual os recursos foram desenvolvidos. Consulte o mapeamento entre as ondas de mudança e as funcionalidades a seguir.

Os processos persistentes do MSBuild mantêm o valor de MSBuildDisableFeaturesFromVersion com o qual foram iniciados. Depois de alterar a variável de ambiente, desligue os processos de build persistentes antes de executar outro build. Para compilações executadas com a CLI do .NET, use dotnet build-server shutdown. Para builds executadas com o Visual Studio ou MSBuild.exe, feche o Visual Studio e encerre todos os processos MSBuild.exe restantes. Caso contrário, os processos reutilizados poderão continuar a usar o valor anterior e projetos criados em paralelo podem usar valores diferentes.

Valores MSBuildDisableFeaturesFromVersion

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

MSBuildDisableFeaturesFromVersion Value Resultado Receber Aviso?
Desconfigurado Habilite todas as ondas de alteração, o que significa que todos os recursos por trás de cada onda de alteração estão habilitados. Não
Qualquer onda de alterações válida e atual (por exemplo, 16.8) Desabilite todos os recursos por trás da onda de alterações 16.8e superiores. Não
Valor inválido (por exemplo, 16.9 quando ondas válidas são 16.8 e 16.10) Definir para o valor válido mais próximo (crescente). Por exemplo, a configuração 16.9 usará como padrão para você o 16.10. Não
Fora de rotação (por exemplo, 17.1 quando a onda mais alta é 17.0) Fixe ao valor válido mais próximo. Por exemplo, 17.1 é fixado a 17.0 e 16.5 é fixado a 16.8 Yes
Formato inválido (por exemplo, 16x8, 17_0, garbage) Habilite todas as ondas de alteração, o que significa que todos os recursos por trás de cada onda de alteração estão habilitados. Yes

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

Alterar ondas que serão removidas na versão que acompanha o .NET 11

18.3

17.14

17.12

17.10

Alterar ondas que não estão mais em rotação

16.8

16.10

17.0

17.4

17.6

17.8

perguntas frequentes

Por que direcionar uma versão sim, uma versão não para ondas de mudança rotativas?

Acreditamos que este é o tempo suficiente para discutir com os afetados e ajudar na adaptação às mudanças.

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

Há cenários em que queremos colocar um recurso em uma onda de alterações antes que o MSBuild carregue o projeto. Por esse motivo, as ondas de alteração exigem o uso de variáveis de ambiente.

Por que escolher a não participação em vez da participação ativa?

A desativação automática é uma abordagem melhor para nós; caso contrário, provavelmente receberíamos poucos comentários quando um recurso afetasse as configurações do cliente.