Você pode especificar o local da saída gerada pelo seu projeto por configuração (para depuração, liberação ou ambas). Com as configurações padrão, as pastas de saída variam de acordo com o tipo de projeto e SDK, com alguns projetos usando 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 do 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 controle completo sobre todos os aspetos da saída do projeto, seja para projetos individuais ou no nível da solução para muitos projetos.
No Visual Studio 2022, há diferentes interfaces de usuário do Project Designer, dependendo do seu tipo de projeto. Os projetos do .NET Framework usam o .NET Project Designer herdado, mas os projetos .NET Core (e .NET 5 e posterior) usam o .NET Project Designer atual. Projetos C++ usam sua própria interface de usuário de páginas de propriedades. As etapas nesta seção dependem do Project Designer que você está usando.
Alterar o diretório de saída da compilação
Este procedimento se aplica a projetos no Visual Studio 2022 destinados ao .NET Core ou .NET 5 e posterior.
Limpe o projeto ou a solução para remover quaisquer arquivos de saída existentes (Build>Clean solution).
Clique com o botão direito no nó do projeto no Gerenciador de Soluções e selecione Propriedades.
Para projetos C#, expanda a seção Compilação e role para baixo até a subseção Saída. Para Visual Basic, expanda a seção Compile e procure em Geral.
Encontre o caminho de saída Base e digite o caminho para gerar a saída (absoluto ou relativo ao diretório raiz do projeto) ou escolha Procurar para aceder a essa pasta. Observe que o nome da configuração é anexado ao caminho de saída base para gerar o caminho de saída real.
C#:
Visual Basic:
Observação
Alguns projetos (.NET e ASP.NET Core) incluirão, por padrão, a versão da estrutura ou o identificador de tempo de execução 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 Projetoe adicione o seguinte:
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
Compilar para um diretório de saída comum
Por padrão, o Visual Studio cria cada projeto em uma solução em sua própria pasta dentro da solução. Você pode alterar os caminhos de saída de build dos seus projetos para forçar todas as saídas a serem colocadas na mesma pasta.
Limpe a solução para remover todos os arquivos de saída existentes (Build>Clean solution).
Clique em um projeto na solução.
No menu Projeto, clique em Propriedades.
Em cada projeto, dependendo do seu tipo, selecione Compile ou Builde defina o caminho de saída ou o caminho base de saída para uma pasta a ser usada para todos os projetos na solução.
Abra o arquivo de projeto para o projeto e adicione a seguinte declaração de propriedade ao primeiro grupo de propriedades.
<PropertyGroup>
<!-- existing property declarations are here -->
<UseCommonOutputDirectory>true</UseCommonOutputDirectory>
</PropertyGroup>
Definir UseCommonOutputDirectory como true informa ao Visual Studio e seu mecanismo de compilação subjacente (MSBuild) que você está colocando várias saídas de projeto na mesma pasta e, portanto, o MSBuild omite a etapa de cópia que normalmente acontece quando os projetos dependem de outros projetos.
Repita as etapas 2 a 5 para todos os projetos na solução. Você pode ignorar alguns projetos se tiver alguns projetos excecionais que não devem usar o diretório de saída comum.
Dica
Se a saída não estiver sendo gerada para o local que você especificou, verifique se você está criando a configuração correspondente (por exemplo, Debug ou Release) selecionando-a na barra de menus do Visual Studio.
Este procedimento se aplica a projetos do .NET Framework.
Limpe o projeto ou a solução para remover quaisquer arquivos de saída existentes (Build>Clean solution).
Clique com o botão direito no nó do projeto no Gerenciador de Soluções e selecione Propriedades.
Selecione a guia apropriada com base no seu tipo de projeto:
- Para C#, selecione a guia Build.
- Para Visual Basic, selecione a guia Compile.
Na lista suspensa de configuração na parte superior, escolha a configuração cujo local do arquivo de saída você deseja alterar (Debug, Releaseou All Configurations).
Encontre a entrada do caminho de saída na página — ela difere dependendo do seu tipo de projeto:
-
Caminho de saída para os projetos C# e JavaScript
-
Construir caminho de saída para projetos Visual Basic
Digite o caminho para gerar a saída (absoluta ou relativa ao diretório raiz do projeto) ou escolha Procurar para navegar até essa pasta.
Compilar para um diretório de saída comum
Por padrão, o Visual Studio cria cada projeto em uma solução em sua própria pasta dentro da solução. Você pode alterar os caminhos de saída de build dos seus projetos para forçar todas as saídas a serem colocadas na mesma pasta.
Limpe a solução para remover todos os arquivos de saída existentes (Build>Clean solution).
Clique em um projeto na solução.
No menu Projeto, clique em Propriedades.
Em cada projeto, dependendo do seu tipo, selecione Compile ou Builde defina o caminho de saída ou o caminho base de saída para uma pasta a ser usada para todos os projetos na solução.
Abra o arquivo de projeto para o projeto e adicione a seguinte declaração de propriedade ao primeiro grupo de propriedades.
<PropertyGroup>
<!-- existing property declarations are here -->
<UseCommonOutputDirectory>true</UseCommonOutputDirectory>
</PropertyGroup>
Definir UseCommonOutputDirectory como true informa ao Visual Studio e seu mecanismo de compilação subjacente (MSBuild) que você está colocando várias saídas de projeto na mesma pasta e, portanto, o MSBuild omite a etapa de cópia que normalmente acontece quando os projetos dependem de outros projetos.
Repita as etapas 2 a 5 para todos os projetos na solução. Você pode ignorar alguns projetos se tiver alguns projetos excecionais que não devem usar o diretório de saída comum.
Dica
Se a saída não estiver sendo gerada para o local que você especificou, verifique se você está criando a configuração correspondente (por exemplo, Debug ou Release) selecionando-a na barra de menus do Visual Studio.
Para alterar o diretório de saída de compilação para um único projeto C++:
Limpe o projeto para remover todos os arquivos de saída existentes (Build>Clean solution).
Clique com o botão direito no nó do projeto no Gerenciador de Soluções e selecione Propriedades.
Selecione a guia Geral.
Na lista suspensa de configuração na parte superior, escolha a configuração cujo local do arquivo de saída você deseja alterar (Debug, Releaseou All Configurations).
Se você estiver visualizando Todas as configurações ou Todas as plataformas, poderá ver <different options> para algumas das propriedades. Os valores de propriedade podem ser diferentes para cada combinação de configuração e plataforma. Embora você possa defini-los individualmente, as configurações padrão usam a mesma expressão para todas as combinações, mas usam as macros $(Configuration) e $(Platform) para produzir um caminho de saída exclusivo para cada combinação.
Encontre o caminho de saída no diretório Output. A lista suspensa oferece opções para editar a expressão, navegar até um caminho ou (se relevante) herdar do padrão do pai ou padrão do projeto <>.
Digite o caminho para gerar a saída (absoluta ou relativa ao diretório raiz do projeto) ou escolha Procurar para navegar até essa pasta.
Para expressões que dependem de valores de macro, clique em >> Macros para visualizar as macros disponíveis e seus valores. O diálogo também mostra o valor final expandido da propriedade com os valores de macro atuais.
Todas as variáveis de ambiente são expostas no MSBuild como propriedades, portanto, se você precisar fazer referência a uma variável de ambiente, poderá fazer referência a ela usando a sintaxe $(VAR) para a variável de ambiente VAR. Ao criar um caminho usando macros e variáveis de ambiente, tenha cuidado para considerar se uma barra invertida é necessária ou não.
Este procedimento define uma propriedade OutDir no arquivo de projeto (.vcxproj). Se você exibir o arquivo de projeto depois de definir essa propriedade, verá que um código semelhante ao seguinte foi adicionado:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>C:\MyOutputFolder</OutDir>
</PropertyGroup>
Para obter mais informações, consulte página geral de propriedades e, para ter certeza de que você está familiarizado com como trabalhar com páginas de propriedades C++ para entender como os valores de propriedade podem depender de configurações e plataformas, consulte Trabalhando com propriedades de projeto.
Este procedimento se aplica a projetos no Visual Studio 2022 destinados ao .NET Core ou .NET 5 e posterior.
Limpe o projeto para remover todos os arquivos de saída existentes.
Abra o arquivo de projeto.
Adicione a seguinte declaração de propriedade 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, você pode fazer referência a ele usando as propriedades do MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). Para obter mais propriedades utilizáveis, consulte propriedades reservadas e bem conhecidas do MSBuild.
O Visual Studio ainda cria a pasta obj na pasta do projeto quando você compila, mas ela está vazia. Você pode excluí-lo como parte do processo de compilação. Uma maneira de fazer isso é adicionar um evento pós-compilação para executar o seguinte comando:
rd "$(ProjectDir)obj" /s /q
Consulte Especificar eventos de compilação personalizados.
Este procedimento se aplica a projetos do .NET Framework.
Limpe o projeto para remover todos os arquivos de saída existentes.
Abra o arquivo de projeto.
Adicione a seguinte declaração de propriedade 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, você pode fazer referência a ele usando as propriedades do MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). Para obter mais propriedades utilizáveis, consulte propriedades reservadas e bem conhecidas do MSBuild.
O Visual Studio ainda cria a pasta obj na pasta do projeto quando você compila, mas ela está vazia. Você pode excluí-lo como parte do processo de compilação. Uma maneira de fazer isso é adicionar um evento pós-compilação para executar o seguinte comando:
rd "$(ProjectDir)obj" /s /q
Consulte Especificar eventos de compilação personalizados.
Use a propriedade Intermediate Directory para definir o diretório para saída intermediária, como arquivos .obj.
No arquivo de projeto, a propriedade é IntDir. Para definir os caminhos para a saída intermediária e final no arquivo de projeto, adicione um grupo de propriedades como o seguinte:
<PropertyGroup>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)int\$(MSBuildProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
Use Directory.Build.props para definir o diretório de saída
Se você tiver um grande número de projetos e quiser alterar a pasta de saída para todos eles, seria tedioso e propenso a erros alterar cada um usando os métodos descritos anteriormente neste artigo. Nesses casos, você pode criar um arquivo na pasta da solução, Directory.Build.props, para definir as propriedades apropriadas do MSBuild em um só lugar, para aplicar 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 que sejam afetados, você pode facilmente manter as personalizações em um único lugar e facilitar a alteração dos valores. Consulte Personalizar a compilação por pasta.
Se você tiver um grande número de projetos e quiser alterar a pasta de saída para todos eles, seria tedioso e propenso a erros alterar cada um usando os métodos descritos anteriormente neste artigo. Nesses casos, você pode criar um arquivo na pasta da solução, Directory.Build.props, para definir as propriedades apropriadas do MSBuild em um só lugar, para aplicar 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 que sejam afetados, você pode facilmente manter as personalizações em um único lugar e facilitar a alteração dos valores. Consulte Personalizar a compilação por pasta.
Se você tiver um grande número de projetos e quiser alterar a pasta de saída para todos eles, seria tedioso e propenso a erros alterar cada um usando os métodos descritos anteriormente neste artigo. Nesses casos, você pode criar um arquivo na pasta da solução, Directory.Build.props, para definir as propriedades apropriadas do MSBuild em um só lugar, para aplicar 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 que sejam afetados, você pode facilmente manter as personalizações em um único lugar e facilitar a alteração dos valores. Consulte Personalizar compilações C++.
Para definir os caminhos de saída intermediário e final em Directory.build.props, é melhor usar $(MSBuildThisFileDirectory) em vez de $(SolutionDir) para dar suporte a compilações de projeto de linha de comando, onde $(SolutionDir) não está definido. O código a seguir define ambos de uma maneira que funciona para compilações do Visual Studio e compilações de linha de comando de projetos individuais:
<Project>
<PropertyGroup>
<SolutionDir Condition="'$(SolutionDir)' == ''">$(MSBuildThisFileDirectory)</SolutionDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(SolutionDir)int\$(MSBuildProjectName)\$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
</Project>
Usar artefatos para organizar o resultado da construção
Para 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 a estrutura de saída dos artefactos.
Conteúdo relacionado