Compartilhar via


Filtros de solução no MSBuild

Arquivos de filtro de solução são arquivos JSON com a extensão .slnf que indicam quais projetos criar ou carregar de todos os projetos em uma solução. A partir do MSBuild 16.7, você pode invocar o MSBuild no arquivo de filtro de solução para criar a solução com a filtragem habilitada.

Observação

O arquivo de filtro de solução reduz o conjunto de projetos que são carregados ou criados e simplifica o formato. O arquivo de solução ainda é necessário.

Criar um filtro de solução a partir da linha de comando

A criação de um arquivo de filtro de solução da linha de comando usa exatamente a mesma sintaxe que a criação de um arquivo de solução. Especifique o arquivo de filtro da solução em vez da solução a ser compilada com a filtragem habilitada, da seguinte maneira:

msbuild [options] solutionFilterFile.slnf

Você também pode acrescentar opções e propriedades extras normalmente. Confira Referência de linha de comando do MSBuild. Esse comando cria os projetos filtrados e todos os projetos dos quais eles dependem. Ao criar um filtro de solução da linha de comando, o MSBuild segue automaticamente as dependências. Ele criará um projeto se ele for especificado no filtro ou referenciado por um projeto criado.

Arquivos de filtro de solução

Você pode usar o Visual Studio para trabalhar com arquivos de filtro de solução. Abrir um filtro de solução no Visual Studio exibe os projetos descarregados, bem como os projetos carregados e oferece a opção de carregar mais projetos para selecioná-los para criação. Você pode carregar todos os projetos dos quais o projeto ou os projetos iniciais dependem para criar também, mas ele não é necessário. Consulte soluções filtradas.

O filtro de solução não precisa estar na mesma pasta que a solução. O caminho para o arquivo de solução é relativo ao local do arquivo de filtro de solução, mas os caminhos para cada projeto são relativos ao próprio arquivo de solução e devem corresponder aos caminhos do projeto no arquivo de solução. O exemplo a seguir demonstra o uso de caminhos relativos:

{
  "solution": {
    "path": "..\\..\\Documents\\GitHub\\msbuild\\MSBuild.sln",
    "projects": [
      "src\\Build.OM.UnitTests\\Microsoft.Build.Engine.OM.UnitTests.csproj"
    ]
  }
}

As chicotadas nos caminhos devem ser dobradas, já que escapam.

Observação

No caso em que você estiver usando o formato de arquivo de solução .slnx, com suporte no MSBuild 17.12 e posterior, o arquivo .slnx terá prioridade sobre o arquivo .slnf.

Exemplo

Aqui está um exemplo de uma solução filtrada no Visual Studio:

Captura de tela da solução filtrada no Visual Studio

Nesta solução, ClassLibrary1 é usado pelo ProjectA e pelo ProjectB e, portanto, ClassLibrary1 é listado como uma referência de projeto.

Este é o arquivo de filtro de solução gerado pelo Visual Studio:

{
  "solution": {
    "path": "MyApplication.sln",
    "projects": [
      "MyApplication\\MyApplication.csproj",
      "ProjectA\\ProjectA.csproj"
    ]
  }
}

Neste exemplo, quando você cria com a filtragem habilitada (usando o comando MSBuild [options] MyFilter.slnf), o MSBuild cria o MyApplication e o ProjectA porque eles estão explicitamente listados no arquivo de filtro de solução. Como parte da criação do ProjectA, o MSBuild cria o ClassLibrary1 porque o ProjectA depende dele. O ProjectB não foi criado. (Esta discussão pressupõe uma compilação limpa. Se os projetos foram criados anteriormente, as regras usuais se aplicam a ignorar projetos que já estão up-to-date.)

Consulte também

  • soluções filtradas
  • referência da linha de comando MSBuild