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.
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 que as ferramentas antecipem onde encontrar os resultados.
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, , publishpackage |
| Nome do projeto† | Separa a saída por cada projeto. O padrão é o nome do projeto do MSBuild. Pode ser personalizado usando a ArtifactsProjectName propriedade MSBuild. |
MyApp |
| Pivô† | 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 ArtifactsPivots propriedade MSBuild. |
debug, debug_net8.0, , releaserelease_linux-x64 |
† A subpasta de nome do projeto é omitida para caminhos de saída do pacote. Além disso, a subpasta dinâmica inclui apenas a configuração.
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 compilação para um projeto simples quando o dotnet build é executado. |
| 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 resultado de compilação para a compilação net8.0 de um projeto com 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\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
UseArtifactsOutputcomotrue.<PropertyGroup> <UseArtifactsOutput>true</UseArtifactsOutput> </PropertyGroup>Para definir um local de saída personalizado, adicione uma propriedade
ArtifactsPathcom 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 propriedadeArtifactsPath:dotnet new buildprops --use-artifactsO arquivo gerado é semelhante a este:
<Project> <PropertyGroup> <ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath> </PropertyGroup> </Project>
O nome da pasta "pivot" é, por padrão, uma combinação de Moniker da Estrutura de Destino (TFM), configuração e identificador de tempo de execução (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>
O nome da pasta "nome do projeto" usa como padrão o nome do projeto MSBuild. Para personalizá-lo para um projeto específico, defina a ArtifactsProjectName propriedade MSBuild no arquivo de projeto. Por exemplo:
<PropertyGroup>
<ArtifactsProjectName>CustomProjectName</ArtifactsProjectName>
</PropertyGroup>