Partilhar via


Filtros de solução no MSBuild

Os arquivos de filtro de solução são arquivos JSON com a extensão .slnf que indicam quais projetos construir 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 da 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 a partir 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 criada com a filtragem habilitada, da seguinte maneira:

msbuild [options] solutionFilterFile.slnf

Você também pode acrescentar opções e propriedades extras normalmente. Consulte a referência da linha de comando do MSBuild . Este comando cria os projetos filtrados e quaisquer projetos dos quais eles dependam. Ao criar um filtro de solução a partir da linha de comando, o MSBuild segue automaticamente as dependências. Ele cria um projeto se ele for especificado no filtro ou referenciado por um projeto que é construído.

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 construção. Você também pode carregar todos os projetos dos quais o projeto ou projetos iniciais dependem para ser construído, mas isso não é necessário. Consulte Soluções filtradas.

O filtro da 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 barras traseiras nos caminhos devem ser dobradas, uma vez que escapam.

Observação

No caso em que você estiver usando o formato de arquivo de solução .slnx, suportado 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 por Projeta e ProjectB e, portanto, ClassLibrary1 é listado como uma referência de projeto.

Aqui está o arquivo de filtro de solução que o Visual Studio gera:

{
  "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 MyApplication e Projeta porque eles estão explicitamente listados no arquivo de filtro da solução. Como parte da criação do Projeta, o MSBuild cria o ClassLibrary1 porque o Projeta depende dele. O ProjectB não foi construído. (Esta discussão pressupõe uma construção limpa. Se os projetos foram criados anteriormente, as regras usuais se aplicam para ignorar projetos que já estão up-todata.)

Ver também