Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
-
Resolver os caminhos relativos do projeto em relação ao diretório atual lógico do Unix a partir de
PWD, para que compilações em diretórios com links simbólicos produzam caminhos completos do projeto estáveis e caminhos de saída relacionados. -
A operação de restauração passa
ExcludeRestorePackageImports=truecomo propriedade global, assim a restauração do NuGet não aciona mais uma segunda avaliação de cada projeto. -
-getProperty/-getItem(sem um alvo) interrompe a avaliação após a etapa que produz os dados solicitados, em vez de executar uma avaliação completa, evitando etapas posteriores, como o registro do alvo.
18.9
- GenerateResource: entradas de dados/metadados ResX digitadas em arquivos Mark-of-the-Web agora são tratadas como não confiáveis e bloqueadas com MSB3821; desbloqueie o arquivo (ou defina MSBUILDDISABLEFEATURESFROMVERSION=18.9) para restaurar o comportamento anterior. As entradas ResXFileRef são sempre bloqueadas independentemente dessa onda.
- Os buffers de pipe nomeado TaskHost passam a ter 1 MB por padrão (antes eram 128 KB), reduzindo a contrapressão no envio de pacotes TaskHostConfiguration grandes. Configurável por meio de MSBUILDNODECONNECTIONBUFFERSIZE
18.8
- Tarefa RAR: em várias propriedades de entrada, resolva caminhos relativos em relação ao diretório do projeto (não ao diretório atual do processo)
- Os registradores de console, de console paralelo e de terminal imprimem os caminhos dos arquivos de log gravados por registradores registrados (por exemplo, registrador de arquivo e registrador binário) como parte do resumo final da compilação.
18.7
- A tarefa de cópia tenta novamente em caso de erro ERROR_ACCESS_DENIED em plataformas não Windows para lidar com conflitos de bloqueio transitórios (por exemplo, sistemas de arquivos CoW do macOS)
- Corrigir projetos WebSite ASP.NET para resolver dependências do netstandard2.0 — Passe TargetFrameworkVersion para a tarefa RAR e copie a fachada netstandard.dll para projetos web do .NET Framework 4.7.1+.
18.6
- Otimização de AbsolutePath.GetCanonicalForm - evitar chamadas dispendiosas a Path.GetFullPath quando os caminhos não precisarem ser canonizados
- TaskHostTask encaminha propriedades globais de nível de requisição (por exemplo, MSBuildRestoreSessionId) para TaskHost fora do processo no modo -mt
- Corrigido ShouldTreatWarningAsError em TaskHost OOP verificando a coleção errada (WarningsAsMessages em vez de WarningsAsErrors)
- Fix ToolTask hang when tool spawns grandchild processes that inherit stdout/stderr pipe handlesCorrigido travamento de ToolTask quando a ferramenta gera processos netos que herdam os identificadores de pipe stdout/stderr
18,5
- As tarefas FindUnderPath e AssignTargetPath não geram mais erros em caracteres de caminho inválidos ao usar TaskEnvironment.GetAbsolutePath
- AssignTargetPath no Linux respeita a diferenciação entre maiúsculas e minúsculas do sistema de arquivos em vez de sempre ignorá-las
18.4
Alterar ondas que serão removidas na versão que acompanha o .NET 11
18.3
17.14
- ~ Suporte a .SLNX — usar o novo analisador para .sln e .slnx~ revertido após problemas de compatibilidade descobertos
-
Dar suporte à cultura personalizada no RAR– consulte 11607 para obter detalhes - VS Telemetry
17.12
- Log TaskParameterEvent para parâmetros escalares
- Convert.ToString durante a avaliação de uma propriedade usa o InvariantCulture para todos os tipos
- Corrigir o compartilhamento excessivo de resultados de build no ResultsCache
- Adicionar ParameterName e PropertyName em TaskParameterEventArgs
- Emitir propriedades de avaliação se solicitado por qualquer coletor
- Carregar Microsoft.DotNet.MSBuildSdkResolver no contexto de carregamento padrão (somente MSBuild.exe)
17.10
-
A configuração do AppDomain é serializada sem usar o BinFmt - o recurso só pode ser desabilitado se BinaryFormatter for permitido em tempo de execução por meio da edição de
MSBuild.runtimeconfig.json. Observe que qualquer uso de BinaryFormatter não é seguro. - Aviso padrão sobre eventos personalizados de serialização no .NET Framework
- Dados do resolvedor do SDK de cache em todo o processo
- Os parâmetros de destino não serão citados, o que significa que o símbolo ';' no nome de destino do parâmetro sempre será tratado como separador
- Adicionar metadados de link a recursos no destino AssignLinkMetadata
- Alterar a saída do seletor de versão para terminar com uma nova linha
- Carregar NuGet.Frameworks no AppDomain secundário (somente MSBuild.exe)
- Atualizar características quando o ambiente tiver sido alterado
- A tarefa Exec não remove os espaços em branco iniciais de ConsoleOutput
- Adicionar sobrecargas de [MSBuild]::StableStringHash
- Manter a codificação do erro de saída padrão & consistente com a página de código do console para ToolTask
Alterar ondas que não estão mais em rotação
16.8
- Habilitar NoWarn
- Truncar mensagens de log de destino/tarefa ignoradas para 1024 caracteres
- Não expandir padrões glob de unidade inteira com condição falsa
16.10
- Erro quando uma expansão de propriedade em uma condição contém espaços em branco
- Permitir local personalizado de CopyToOutputDirectory com TargetPath
- Permitir que os usuários que têm determinados caracteres especiais em seu nome de usuário consigam compilar com sucesso ao usar
- Falhar operações de restauração quando um SDK não puder ser resolvido
- Otimizar avaliação de padrões glob
17.0
- O agendador deve respeitar BuildParameters.DisableInprocNode
- Não compilar expressões regulares glob no .NET Framework
- Padrão para copiar itens de conteúdo transitivamente
-
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 opção global MSBuildDebugEngine; Injetar logger binário do BuildManager; Imprimir gráfico estático como arquivo .dot
- Corrigir impasse entre BuildManager e LoggingService
- Otimizar o nível de diagnóstico para o logger de arquivo e o logger de console
- Otimizar as verificações de atualização de arquivos imutáveis
- Adicionar Microsoft.IO.Redist para enumeração de diretórios
- Cache em todo o processo de ToolsetConfigurationSection
- Normalizar caminhos de saída RAR
17.4
- Respeitar deps.json ao carregar assemblies
-
Considerar
Platformcomo padrão durante a Negociação da Plataforma - Adicionar padrão de correspondência de nome de SDK aceito aos manifestos do SDK
- Emissão de aviso indicando tipos de projeto inválidos
- Servidor MSBuild
17.6
- Analisar propriedade inválida em target
- Eliminar cache de strings do projeto
- Registrar um erro quando nenhum caminho de pesquisa for fornecido para uma importação existe
- Carregamentos de montagem de log
- AnyHaveMetadataValue retorna false quando passada uma lista vazia
- Autoexpansão de 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
- Migração de SHA1 para SHA256 para tarefa de Hash
-
Descontinuação de BuildEventArgs derivados personalizados — o recurso pode ser desativado somente se BinaryFormatter for permitido em tempo de execução, editando
MSBuild.runtimeconfig.json
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.