Partilhar via


Alterar o diretório de saída do build

Você pode especificar o local de saída gerado pelo seu projeto por configuração (para depuração, versão ou ambas). Com as configurações padrão, as pastas de saída variam de acordo com o tipo de projeto e SDK, e alguns projetos usam subpastas específicas da plataforma ou da estrutura.

O Visual Studio fornece propriedades que permitem colocar a saída intermediária e final em pastas personalizadas, especificando os caminhos relativos à pasta do projeto ou um caminho absoluto em qualquer lugar no sistema de arquivos. Além das configurações especificadas nas propriedades do projeto do Visual Studio, você também pode personalizar ainda mais a saída editando o arquivo de projeto e usando os recursos do MSBuild e do SDK do .NET para ter controle total sobre todos os aspectos da saída do projeto, seja para projetos individuais ou no nível da solução para muitos projetos.

Alterar o diretório de saída do build

  1. Limpe o projeto ou a solução para remover todos os arquivos de saída existentes (Build>Limpar solução).

  2. Para abrir as páginas de propriedades do projeto, clique com o botão direito do mouse no nó do projeto no Gerenciador de Soluções e selecione Propriedades.

  3. Selecione a guia apropriada com base no tipo de projeto:

    • Para C#, selecione a guia Build.
    • Para o Visual Basic, selecione a guia Compilar.
    • Para C++ ou JavaScript, selecione a guia Geral.
  4. Na lista suspensa de configuração na parte superior, escolha a configuração cujo local do arquivo de saída você deseja alterar (Depuração, Versão ou Todas as Configurações).

  5. Localize a entrada do caminho de saída na página. Ela é diferente, dependendo do tipo de projeto:

    • Caminho de saída para projetos C# e JavaScript
    • Caminho de saída de build para projetos Visual Basic
    • Diretório de saída para projetos Visual C++

    Digite o caminho para o qual gerar a saída (absoluto ou relativo para o diretório raiz do projeto), ou escolha Procurar para, em vez disso, navegar até essa pasta.

    Propriedade de caminho de saída para um projeto C# do Visual Studio

    Observação

    Alguns projetos (.NET e ASP.NET Core) incluirão por padrão a versão da estrutura ou o identificador de runtime no caminho do build. Para alterar isso, clique com o botão direito do mouse no nó do projeto no Gerenciador de Soluções, selecione Editar Arquivo de Projeto e adicione o seguinte:

    <PropertyGroup>
      <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
      <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
    </PropertyGroup>
    

Dica

Se a saída não está sendo gerada para o local que especificou, verifique se você está compilando a configuração correspondente (por exemplo, Depuração ou Versão), selecionando-a na barra de menus do Visual Studio.

Seletor de configuração de build do Visual Studio 2019.

Compilar para um diretório de saída em comum

Por padrão, o Visual Studio compila cada projeto de uma solução em sua própria pasta dentro da solução. É possível alterar os caminhos de saída do build dos seus projetos para forçar todas as saídas a serem colocadas na mesma pasta.

Para colocar todas as saídas de solução em um diretório comum

  1. Limpe ou a solução para remover todos os arquivos de saída existentes (Build>Limpar solução).

  2. Clique em um projeto na solução.

  3. No menu Projeto , clique em Propriedades.

  4. Em cada projeto, dependendo do tipo, selecione Compilar ou Build e defina o Caminho de saída ou o Caminho de saída de base como a pasta a ser usada para todos os projetos na solução.

  5. Abra o arquivo de projeto do projeto e adicione a seguinte declaração de propriedade ao primeiro grupo de propriedades.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <UseCommonOutputDirectory>true</UseCommonOutputDirectory>
    </PropertyGroup>
    

    A configuração de UseCommonOutputDirectory como true informa ao Visual Studio e ao mecanismo de build subjacente (MSBuild) que você está colocando várias saídas de projeto na mesma pasta e, portanto, o MSBuild omitirá a etapa de cópia que normalmente acontece quando os projetos dependem de outros projetos.

  6. Repita as etapas de 2 a 5 para todos os projetos na solução. Você poderá ignorar alguns projetos se tiver alguns projetos excepcionais que não devam usar o diretório de saída comum.

Para definir o diretório de saída intermediário em um projeto (projetos .NET)

  1. Limpe o projeto para remover todos os arquivos de saída existentes.

  2. Abra o arquivo de projeto.

  3. Adicione a declaração de propriedade a seguir ao primeiro grupo de propriedades.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <IntermediateOutputPath>path</IntermediateOutputPath>
    </PropertyGroup>
    

    O caminho é relativo ao arquivo de projeto ou você pode usar um caminho absoluto. Se você quiser colocar o nome do projeto no caminho, poderá referenciá-lo usando as propriedades do MSBuild $(MSBuildProjectName) e $(MSBuildProjectDirectory). Para ver mais propriedades que você pode usar, consulte Propriedades reservadas e conhecidas do MSBuild.

  4. O Visual Studio continua criando a pasta obj na pasta do projeto quando você compila, mas ela fica vazia. Você pode excluí-la como parte do processo de build. Uma forma de fazer isso é adicionar um evento pós-build para executar o seguinte comando:

    rd "$(ProjectDir)obj" /s /q
    

    Consulte Especificar eventos de build personalizados.

No Visual Studio 2022, há diferentes interfaces do usuário do Designer de Projeto, dependendo do tipo de projeto. O .NET Framework do C# e todos os projetos do Visual Basic usam o Designer de Projeto do .NET herdado, mas os projetos .NET Core do C# (e .NET 5 e posteriores) usam o Designer de Projeto do .NET atual. Os projetos de C++ usam a própria interface do usuário de páginas de propriedades. As etapas nesta seção dependem do Designer de Projeto que você está usando.

Alterar o diretório de saída do build

Este procedimento é aplicável a projetos C# no Visual Studio 2022 visando o .NET Core ou o .NET 5 e posterior.

  1. Limpe o projeto ou a solução para remover todos os arquivos de saída existentes (Build>Limpar solução).

  2. Clique com o botão direito do mouse no nó do projeto no Gerenciador de Soluções e selecione Propriedades.

  3. Expanda a seção Compilar e role até a subseção Saída.

  4. Encontre o Caminho de saída de base do C# e digite o caminho para o qual gerar a saída (absoluto ou relativo ao diretório raiz do projeto), ou escolha Procurar para navegar até essa pasta. Observe que o nome da configuração é acrescentado ao caminho de saída de base para gerar o caminho de saída real.

    Captura de tela mostrando a propriedade de caminho de saída de um projeto em C# do .NET Core.

    Observação

    Alguns projetos (.NET e ASP.NET Core) incluirão por padrão a versão da estrutura ou o identificador de runtime no caminho de saída final. Para alterar isso, clique com o botão direito do mouse no nó do projeto no Gerenciador de Soluções, selecione Editar Arquivo de Projeto e adicione o seguinte:

    <PropertyGroup>
      <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
      <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
    </PropertyGroup>
    

Compilar para um diretório de saída em comum

Por padrão, o Visual Studio compila cada projeto de uma solução em sua própria pasta dentro da solução. É possível alterar os caminhos de saída do build dos seus projetos para forçar todas as saídas a serem colocadas na mesma pasta.

  1. Limpe ou a solução para remover todos os arquivos de saída existentes (Build>Limpar solução).

  2. Clique em um projeto na solução.

  3. No menu Projeto , clique em Propriedades.

  4. Em cada projeto, dependendo do tipo, selecione Compilar ou Build e defina o Caminho de saída ou o Caminho de saída de base como a pasta a ser usada para todos os projetos na solução.

  5. Abra o arquivo de projeto do projeto e adicione a seguinte declaração de propriedade ao primeiro grupo de propriedades.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <UseCommonOutputDirectory>true</UseCommonOutputDirectory>
    </PropertyGroup>
    

    A configuração de UseCommonOutputDirectory como true informa ao Visual Studio e ao mecanismo de build subjacente (MSBuild) que você está colocando várias saídas de projeto na mesma pasta e, portanto, o MSBuild omitirá a etapa de cópia que normalmente acontece quando os projetos dependem de outros projetos.

  6. Repita as etapas de 2 a 5 para todos os projetos na solução. Você poderá ignorar alguns projetos se tiver alguns projetos excepcionais que não devam usar o diretório de saída comum.

Dica

Se a saída não está sendo gerada para o local que especificou, verifique se você está compilando a configuração correspondente (por exemplo, Depuração ou Versão), selecionando-a na barra de menus do Visual Studio.

Captura de tela do seletor de Configuração da compilação no Visual Studio 2022.

Definir o diretório de saída intermediário para um projeto

Este procedimento é aplicável a projetos C# no Visual Studio 2022 visando o .NET Core ou o .NET 5 e posterior.

  1. Limpe o projeto para remover todos os arquivos de saída existentes.

  2. Abra o arquivo de projeto.

  3. Adicione a declaração de propriedade a seguir ao primeiro grupo de propriedades.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <IntermediateOutputPath>path</IntermediateOutputPath>
    </PropertyGroup>
    

    O caminho é relativo ao arquivo de projeto ou você pode usar um caminho absoluto. Se você quiser colocar o nome do projeto no caminho, poderá referenciá-lo usando as propriedades do MSBuild $(MSBuildProjectName) e $(MSBuildProjectDirectory). Para ver mais propriedades que você pode usar, consulte Propriedades reservadas e conhecidas do MSBuild.

  4. O Visual Studio continua criando a pasta obj na pasta do projeto quando você compila, mas ela fica vazia. Você pode excluí-la como parte do processo de build. Uma forma de fazer isso é adicionar um evento pós-build para executar o seguinte comando:

    rd "$(ProjectDir)obj" /s /q
    

    Consulte Especificar eventos de build personalizados.

Use Directory.Build.props para definir o diretório de saída

Se houvesse um grande número de projetos e você quisesse alterar a pasta de saída de todos eles, seria tedioso e propenso a erros alterar cada um usando os métodos descritos anteriormente neste artigo. Nesses casos, é possível criar um arquivo na pasta da solução, Directory.Build.props, para definir as propriedades apropriadas do MSBuild em um só lugar para aplicação a todos os projetos na solução. Ao colocar um arquivo com esse nome específico na pasta pai de todos os projetos que você deseja afetar, é simples manter personalizações em um único lugar e facilitar a alteração dos valores. Consulte Personalizar o build por pasta.

Usar artefatos para organizar a saída do build

Em projetos .NET 8, você pode usar a funcionalidade de artefatos para organizar a saída de uma maneira altamente personalizável e flexível. Consulte Layout da saída de artefatos.