Modificare la directory di output della compilazione

Il percorso dell'output generato dal progetto può essere specificato a livello di singole configurazioni (per debug e/o rilascio). Con le impostazioni predefinite, le cartelle di output variano in base al tipo di progetto e all'SDK, con alcuni progetti che usano sottocartelle specifiche della piattaforma o specifiche del framework.

Visual Studio fornisce proprietà che consentono di inserire l'output intermedio e finale nelle cartelle personalizzate specificando i percorsi relativi alla cartella del progetto o un percorso assoluto in qualsiasi punto del file system. Oltre alle impostazioni specificate nelle proprietà del progetto di Visual Studio, è anche possibile personalizzare ulteriormente l'output modificando il file di progetto e usando le funzionalità di MSBuild e .NET SDK per il controllo completo su tutti gli aspetti dell'output del progetto, per singoli progetti o a livello di soluzione per molti progetti.

Modificare la directory di output della compilazione

  1. Pulire il progetto o la soluzione per rimuovere eventuali file di output esistenti (compila>soluzione pulita).

  2. Per aprire le pagine delle proprietà del progetto fare clic con il pulsante destro del mouse sul nodo del progetto in Esplora soluzioni e scegliere Proprietà.

  3. Selezionare la scheda appropriata in base al tipo di progetto:

    • Per C#, selezionare la scheda Compila.
    • Per Visual Basic, selezionare la scheda Compilazione.
    • Per C++ o JavaScript, selezionare la scheda Generale.
  4. Nell'elenco a discesa della configurazione nella parte superiore scegliere la configurazione per cui si vuole modificare il percorso di output (Debug, Rilascio o Tutte le configurazioni).

  5. Trovare la voce del percorso di output nella pagina, che varia a seconda del tipo di progetto:

    • Percorso di output per i progetti C# e JavaScript
    • Percorso dell'output di compilazione per i progetti Visual Basic
    • Directory di output per i progetti Visual C++

    Digitare il percorso in cui generare l'output (assoluto o relativo alla directory del progetto radice) oppure scegliere Sfoglia per passare a tale cartella.

    Proprietà Percorso di output per un progetto Visual Studio C#

    Nota

    Alcuni progetti (.NET e ASP.NET Core) includeranno per impostazione predefinita la versione del framework o l'identificatore di runtime nel percorso di compilazione. Per modificare questa operazione, fare clic con il pulsante destro del mouse sul nodo del progetto in Esplora soluzioni, scegliere Modifica file di progetto e aggiungere quanto segue:

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

Suggerimento

Se l'output non viene generato nel percorso specificato, assicurarsi di compilare la configurazione corrispondente, ad esempio Debug o Rilascio, selezionandola nella barra dei menu di Visual Studio.

Selezione configurazione build in Visual Studio 2019.

Compilare in una directory di output comune

Per impostazione predefinita, Visual Studio compila ogni progetto in una soluzione nella propria cartella all'interno della soluzione. È possibile modificare i percorsi di output di compilazione dei progetti per inserire tutti gli output nella stessa cartella.

Per inserire tutti gli output della soluzione in una directory comune

  1. Pulire la soluzione per rimuovere tutti i file di output esistenti (Compila>soluzione pulita).

  2. Fare clic su un progetto nella soluzione.

  3. Scegliere Proprietà dal menu Progetto.

  4. In ogni progetto, a seconda del tipo, selezionare Compila o Compila e impostare il percorso di output o Il percorso di output di base su una cartella da usare per tutti i progetti della soluzione.

  5. Aprire il file di progetto per il progetto e aggiungere la dichiarazione di proprietà seguente al primo gruppo di proprietà.

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

    L'impostazione UseCommonOutputDirectory su indica a true Visual Studio e al relativo motore di compilazione sottostante (MSBuild) di inserire più output di progetto nella stessa cartella e quindi MSBuild omette il passaggio di copia che normalmente si verifica quando i progetti dipendono da altri progetti.

  6. Ripetere i passaggi da 2 a 5 per tutti i progetti nella soluzione. È possibile ignorare alcuni progetti se si dispone di alcuni progetti eccezionali che non devono usare la directory di output comune.

Per impostare la directory di output intermedia per un progetto (progetti.NET)

  1. Pulire il progetto per rimuovere eventuali file di output esistenti.

  2. Aprire il file del progetto .

  3. Aggiungere la dichiarazione di proprietà seguente al primo gruppo di proprietà.

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

    Il percorso è relativo al file di progetto oppure è possibile usare un percorso assoluto. Se si vuole inserire il nome del progetto nel percorso, è possibile farvi riferimento usando le proprietà $(MSBuildProjectName)MSBuild , $(MSBuildProjectDirectory). Per altre proprietà che è possibile usare, vedere Proprietà riservate e note di MSBuild.

  4. Visual Studio crea ancora la cartella obj nella cartella del progetto durante la compilazione, ma è vuota. È possibile eliminarlo come parte del processo di compilazione. Un modo per eseguire questa operazione consiste nell'aggiungere un evento di post-compilazione per eseguire il comando seguente:

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

    Vedere Specificare eventi di compilazione personalizzati.

In Visual Studio 2022 sono disponibili diverse interfacce utente di Progettazione progetti, a seconda del tipo di progetto. .NET Framework C# e tutti i progetti Visual Basic usano la finestra di progettazione progetti .NET legacy, ma i progetti C# .NET Core (e .NET 5 e versioni successive) usano la finestra di progettazione progetti .NET corrente. I progetti C++ usano la propria interfaccia utente delle pagine delle proprietà. I passaggi descritti in questa sezione dipendono da progettazione progetti in uso.

Modificare la directory di output della compilazione

Questa procedura si applica ai progetti C# in Visual Studio 2022 destinati a .NET Core o .NET 5 e versioni successive.

  1. Pulire il progetto o la soluzione per rimuovere eventuali file di output esistenti (compila>soluzione pulita).

  2. Fare clic con il pulsante destro del mouse sul nodo del progetto in Esplora soluzioni e scegliere Proprietà.

  3. Espandere la sezione Compila e scorrere verso il basso fino alla sottosezione Output .

  4. Trovare il percorso di output di base per C# e digitare il percorso in cui generare l'output (assoluto o relativo alla directory del progetto radice) oppure scegliere Sfoglia per passare a tale cartella. Si noti che il nome della configurazione viene aggiunto al percorso di output di base per generare il percorso di output effettivo.

    Screenshot che mostra la proprietà Percorso di output per un progetto C# .NET Core.

    Nota

    Alcuni progetti (.NET e ASP.NET Core) includeranno per impostazione predefinita la versione del framework o l'identificatore di runtime nel percorso di output finale. Per modificare questa operazione, fare clic con il pulsante destro del mouse sul nodo del progetto in Esplora soluzioni, scegliere Modifica file di progetto e aggiungere quanto segue:

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

Compilare in una directory di output comune

Per impostazione predefinita, Visual Studio compila ogni progetto in una soluzione nella propria cartella all'interno della soluzione. È possibile modificare i percorsi di output di compilazione dei progetti per inserire tutti gli output nella stessa cartella.

  1. Pulire la soluzione per rimuovere tutti i file di output esistenti (Compila>soluzione pulita).

  2. Fare clic su un progetto nella soluzione.

  3. Scegliere Proprietà dal menu Progetto.

  4. In ogni progetto, a seconda del tipo, selezionare Compila o Compila e impostare il percorso di output o Il percorso di output di base su una cartella da usare per tutti i progetti della soluzione.

  5. Aprire il file di progetto per il progetto e aggiungere la dichiarazione di proprietà seguente al primo gruppo di proprietà.

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

    L'impostazione UseCommonOutputDirectory su indica a true Visual Studio e al relativo motore di compilazione sottostante (MSBuild) di inserire più output di progetto nella stessa cartella e quindi MSBuild omette il passaggio di copia che normalmente si verifica quando i progetti dipendono da altri progetti.

  6. Ripetere i passaggi da 2 a 5 per tutti i progetti nella soluzione. È possibile ignorare alcuni progetti se si dispone di alcuni progetti eccezionali che non devono usare la directory di output comune.

Suggerimento

Se l'output non viene generato nel percorso specificato, assicurarsi di compilare la configurazione corrispondente, ad esempio Debug o Rilascio, selezionandola nella barra dei menu di Visual Studio.

Screenshot della selezione della configurazione di compilazione in Visual Studio 2022.

Impostare la directory di output intermedia per un progetto

Questa procedura si applica ai progetti C# in Visual Studio 2022 destinati a .NET Core o .NET 5 e versioni successive.

  1. Pulire il progetto per rimuovere eventuali file di output esistenti.

  2. Aprire il file del progetto .

  3. Aggiungere la dichiarazione di proprietà seguente al primo gruppo di proprietà.

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

    Il percorso è relativo al file di progetto oppure è possibile usare un percorso assoluto. Se si vuole inserire il nome del progetto nel percorso, è possibile farvi riferimento usando le proprietà $(MSBuildProjectName)MSBuild , $(MSBuildProjectDirectory). Per altre proprietà che è possibile usare, vedere Proprietà riservate e note di MSBuild.

  4. Visual Studio crea ancora la cartella obj nella cartella del progetto durante la compilazione, ma è vuota. È possibile eliminarlo come parte del processo di compilazione. Un modo per eseguire questa operazione consiste nell'aggiungere un evento di post-compilazione per eseguire il comando seguente:

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

    Vedere Specificare eventi di compilazione personalizzati.

Usare Directory.Build.props per impostare la directory di output

Se si dispone di un numero elevato di progetti e si vuole modificare la cartella di output per tutti questi progetti, sarebbe noioso e soggetto a errori modificare ognuno usando i metodi descritti in precedenza in questo articolo. In questi casi, è possibile creare un file nella cartella della soluzione, Directory.Build.props, per impostare le proprietà MSBuild appropriate in un'unica posizione, da applicare a tutti i progetti nella soluzione. Inserendo un file con questo nome specifico nella cartella padre di tutti i progetti che si desidera influire, è possibile mantenere facilmente le personalizzazioni in un'unica posizione e semplificare la modifica dei valori. Vedere Personalizzare la compilazione per cartella.

Usare gli artefatti per organizzare l'output di compilazione

Per i progetti .NET 8, è possibile usare la funzionalità degli artefatti per disporre l'output in modo altamente personalizzabile e flessibile. Vedere Layout di output degli artefatti.