Layout da saída de artefatos

No .NET 8 e versões posteriores, há uma opção para simplificar o caminho de saída e a estrutura de pastas para saídas de build. Todas as saídas de build de todos os projetos são coletadas em um local comum, separadas por projeto. Um local comum facilita a criação de ferramentas para prever onde encontrar as saídas.

Por padrão, o local comum é um diretório chamado artefatos ao lado do arquivo Directory.build.props. A estrutura de pastas na pasta de artefatos raiz é a seguinte:

📁 artifacts
    └──📂 <Type of output>
        └──📂 <Project name>
            └──📂 <Pivot>

A tabela a seguir mostra os valores padrão para cada nível na estrutura de pastas. Você pode substituir os valores, bem como o local padrão, usando propriedades no arquivo Directory.build.props.

Nível da pasta Descrição Exemplos
Tipo de saída Categorias de saídas de build, como binários, arquivos intermediários/gerados, aplicativos publicados e pacotes NuGet. bin, obj, publish, package
Nome do projeto Separa a saída por cada projeto. MyApp
Dinâmico Diferencia entre os builds de um projeto para diferentes configurações, estruturas de destino e identificadores de runtime. Se vários elementos forem necessários, eles serão unidos por um sublinhado (_). Pode ser personalizado usando a propriedade ArtifactsPivots do MSBuild. debug, debug_net8.0, release, release_linux-x64

Exemplos

A tabela a seguir mostra exemplos de caminhos que podem ser criados.

Caminho Descrição
artifacts\bin\MyApp\debug O caminho de saída de build para um projeto simples quando você executa dotnet build.
artifacts\obj\MyApp\debug O caminho de saída intermediário para um projeto simples quando você executa dotnet build.
artifacts\bin\MyApp\debug_net8.0 O caminho de saída de build para o build net8.0 de um projeto de vários destinos.
artifacts\publish\MyApp\release_linux-x64 O caminho de publicação de um aplicativo simples ao publicar para linux-x64.
artifacts\package\MyApp\release A pasta em que a versão .nupkg é criada para um projeto.

Como configurar

Para aceitar o formato de caminho de saída centralizado, adicione uma das seguintes propriedades do MSBuild ao arquivo Directory.Build.props:

  • Para usar o local de saída padrão, defina a propriedade UseArtifactsOutput como true.

    <PropertyGroup>
      <UseArtifactsOutput>true</UseArtifactsOutput>
    </PropertyGroup>
    
  • Para definir um local de saída personalizado, adicione uma propriedade ArtifactsPath com um valor de $(MSBuildThisFileDirectory)artifacts (ou o que você quiser que o local da pasta seja). Se você ainda não tiver um arquivo Directory.Build.props, poderá executar o seguinte comando para gerar automaticamente um arquivo que contém a propriedade ArtifactsPath:

    dotnet new buildprops --use-artifacts
    

    O arquivo gerado é semelhante a este:

    <Project>
      <PropertyGroup>
        <ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath>
      </PropertyGroup>
    </Project>
    

O nome da pasta "pivot" usa como padrão uma combinação de Moniker da Estrutura de Destino (TFM), configuração e identificador de runtime (RID). Qualquer um que não esteja presente é omitido. Para personalizar como a pasta "pivot" é nomeada, defina a propriedade ArtifactsPivots do MSBuild como a cadeia de caracteres desejada. Por exemplo:

<PropertyGroup>
  ...
  <ArtifactsPivots>$(ArtifactsPivots)_MyCustomPivot</ArtifactsPivots>
</PropertyGroup>