Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
-
Resolva os caminhos relativos do projeto tendo como referência o diretório atual lógico do Unix a partir de
PWD, para que as compilações em diretórios com ligações simbólicas produzam caminhos completos e estáveis do projeto e os respetivos caminhos de saída. -
O processo de restauro passa
ExcludeRestorePackageImports=truecomo propriedade global, pelo que o restauro do NuGet deixa de desencadear uma segunda avaliação de cada projeto. -
-getProperty/-getItem(sem destino) interrompa a avaliação após a passagem que produz os dados solicitados, em vez de executar uma avaliação completa, evitando passagens posteriores, como o registo do destino.
18.9
- GenerateResource: entradas de dados/metadados ResX digitados em ficheiros Mark-of-the-Web são agora tratados como não confiáveis e bloqueados com MSB3821; desbloqueie o ficheiro (ou defina MSBUILDDISABLEFEATURESFROMVERSION=18.9) para restaurar o comportamento anterior. As entradas do ResXFileRef são sempre bloqueadas independentemente desta onda.
- Os buffers named-pipe do TaskHost têm por defeito 1 MB (antes 128 KB), reduzindo a contrapressão de envio para pacotes grandes do TaskHostConfiguration. Ajustável através de MSBUILDNODECONNECTIONBUFFERSIZE
18.8
- Tarefa RAR: através de múltiplas propriedades de entrada, resolver caminhos relativos em relação ao diretório do projeto (não ao diretório atual do processo)
- Os registadores da consola, da consola paralela e do terminal imprimem os caminhos dos ficheiros de registo gerados pelos registadores registados (por exemplo, registador de ficheiros e registador binário) como parte do resumo final da compilação.
18.7
- Novas tentativas da tarefa de cópia em caso de ERROR_ACCESS_DENIED em plataformas não Windows, para lidar com conflitos transitórios de bloqueio (por exemplo, sistemas de ficheiros CoW do macOS)
- Corrigir projetos WebSite do ASP.NET para resolver dependências do netstandard2.0 - Passar TargetFrameworkVersion para a tarefa RAR e copiar a assembly de fachada netstandard.dll para projetos Web do .NET Framework 4.7.1+.
18.6
- Otimização de AbsolutePath.GetCanonicalForm - evitando chamadas dispendiosas a Path.GetFullPath quando os caminhos não precisam de canonicalização
- O TaskHostTask encaminha propriedades globais da solicitação (por exemplo, MSBuildRestoreSessionId) para o TaskHost externo ao processo no modo -mt
- Corrigir ShouldTreatWarningAsError no TaskHost OOP, que verificava a coleção errada (WarningsAsMessages em vez de WarningsAsErrors)
- Corrigir o bloqueio do ToolTask quando a ferramenta gera processos netos que herdam os identificadores do pipe de stdout/stderr
18.5
- As tarefas FindUnderPath e AssignTargetPath já não colocam caracteres de caminho inválidos ao usar TaskEnvironment.GetAbsolutePath
- O AssignTargetPath no Linux respeita a sensibilidade a maiúsculas minúsculas do sistema de ficheiros em vez de ignorar sempre maiúsculas minúsculas
18.4
Ondas de alteração que serão removidas na versão que acompanha o .NET 11
18.3
17.14
- ~ . Suporte SLNX - usar o novo analisador para .sln e .slnx~ revertido após deteção de problemas de compatibilidade
-
Apoiar a cultura personalizada no RAR- veja 11607 para mais detalhes - VS Telemetria
17.12
- Log TaskParameterEvent para parâmetros escalares
- Convert.ToString durante uma avaliação de propriedade utiliza o InvariantCulture para todos os tipos
- Corrigir o excesso de partilha dos resultados de compilação no ResultsCache
- Adicionar ParameterName e PropertyName ao TaskParameterEventArgs
- Emitir props de eval se solicitado por qualquer sink
- Carregar Microsoft.DotNet.MSBuildSdkResolver para o contexto de carregamento predefinido (apenas MSBuild.exe)
17.10
-
A configuração do AppDomain é serializada sem utilizar o BinFmt – esta funcionalidade só pode ser desativada se BinaryFormatter for permitido em tempo de execução, editando
MSBuild.runtimeconfig.json. Por favor, note que qualquer utilização do BinaryFormatter é insegura. - Aviso sobre eventos personalizados de serialização por predefinição na .NET Framework
- Armazenar em cache os dados do resolvedor do SDK em todo o processo
- Os parâmetros do alvo estarão sem aspas, o que significa que o símbolo ';' no nome do parâmetro será sempre tratado como separador
- Adicionar metadados de Link aos Recursos no destino AssignLinkMetadata
- Mudar Versão, mudar a saída para terminar com uma nova linha
- Carregar o NuGet.Frameworks no AppDomain secundário (MSBuild.exe apenas)
- Atualizar Traços quando o ambiente foi alterado
- A tarefa Exec não remove os espaços em branco no início em ConsoleOutput
- Introduzir sobrecargas de [MSBuild]::StableStringHash
- Mantenha a codificação da saída padrão e do erro consistente com a página de código da consola para o ToolTask
Change Waves já não está em circulação.
16.8
- Ativar NoWarn
- Truncar mensagens de log de Tarefa/Destino ignorada para 1024 caracteres
- Não expanda globs de unidade completa com condição falsa
16.10
- Erro quando uma expansão de propriedade numa condição tem espaços em branco
- Permitir um local personalizado para CopyToOutputDirectory com TargetPath
- Permitir que os usuários que têm determinados caracteres especiais em seu nome de usuário criem com êxito ao usar o exec
- Falha nas operações de restauração quando um SDK não pode ser resolvido
- Otimizar a avaliação de glob
17.0
- Scheduler deve honrar BuildParameters.DisableInprocNode
- Não compile regexes de globbing no .NET Framework
- Definir como padrão a cópia transitiva de itens de conteúdo
-
Os assemblies de referência agora não são mais colocados no diretório
binpor padrão (revertido aqui e trazido de volta aqui) - Melhorar a experiência de depuração: adicionar switch global MSBuildDebugEngine; Injete o registrador binário do BuildManager; Imprimir gráfico estático como arquivo .dot
- Corrigir impasse no BuildManager contra o LoggingService
- Otimize o nível de diag para o registrador de arquivos e o registrador de console
- Arquivos imutáveis otimizados, verificações atualizadas
- Adicionar Microsoft.IO.Redist para enumeração de diretório
- Cache do processo inteiro de ToolsetConfigurationSection
- Normalizar caminhos de saída RAR
17.4
- Respeitar deps.json ao carregar conjuntos
-
Considere
Platformcomo padrão durante a negociação da plataforma - Adicionando o padrão de correspondência de nome do SDK aceito aos manifestos do SDK
- Emitir aviso indicando tipos de projeto inválidos
- servidor MSBuild
17.6
- Analisar propriedade inválida no contexto de de destino
- Elimine o cache de cadeia de caracteres do projeto
- Registrar um erro quando não existir um caminho de pesquisa fornecido para uma importação
- Log de montagem carrega
- AnyHaveMetadataValue retorna falso quando recebe uma lista vazia
- Expansão automática do item de log
17.8
- [RAR] Não faça E/S em referências fornecidas pelo SDK
- Excluir arquivo de destino antes de copiar
- Transição do SHA1 para SHA256 na tarefa de hash
-
Tornando o recurso BuildEventArgs derivado personalizado obsoleto - o recurso só pode ser excluído se BinaryFormatter for permitido em tempo de execução, editando
MSBuild.runtimeconfig.json
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.