Changer le répertoire de sortie de build

Vous pouvez spécifier l’emplacement de sortie généré par votre projet en fonction de la configuration (pour Debug, Release ou les deux). Avec les paramètres par défaut, les dossiers de sortie varient selon le type de projet et le kit de développement logiciel (SDK), certains projets utilisant des sous-dossiers spécifiques à la plateforme ou au cadre.

Visual Studio fournit des propriétés qui vous permettent de placer les sorties intermédiaires et finales dans des dossiers personnalisés, soit en spécifiant les chemins d’accès relatifs au dossier du projet, soit un chemin d’accès absolu n’importe où dans le système de fichiers. Outre les paramètres spécifiés dans les propriétés du projet Visual Studio, vous pouvez également personnaliser davantage la sortie en modifiant le fichier projet et en utilisant les capacités de MSBuild et du kit de développement logiciel (SDK) .NET pour un contrôle complet de tous les aspects de la sortie du projet, que ce soit pour des projets individuels ou au niveau de la solution pour de nombreux projets.

Changer le répertoire de sortie de build

  1. Nettoyez le projet ou la solution pour supprimer tous les fichiers de sortie existants (Build>Nettoyer la solution).

  2. Pour ouvrir les pages de propriétés du projet, cliquez avec le bouton droit sur le nœud du projet dans l’Explorateur de solutions, puis sélectionnez Propriétés.

  3. Sélectionnez l’onglet approprié en fonction du type de votre projet :

    • Pour C#, sélectionnez l’onglet Générer.
    • Pour Visual Basic, sélectionnez l’onglet Compiler.
    • Pour C++ ou JavaScript, sélectionnez l’onglet Général.
  4. Dans la liste déroulante de configuration située dans la partie supérieure, choisissez la configuration pour laquelle vous voulez changer l’emplacement du fichier de sortie (Debug, Release ou Toutes les configurations).

  5. Recherchez l’entrée du chemin de sortie dans la page. Elle varie en fonction du type de votre projet :

    • Chemin de sortie pour les projets C# et JavaScript
    • Chemin de sortie de la génération pour les projets Visual Basic
    • Répertoire de sortie pour les projets Visual C++

    Tapez le chemin vers lequel générer la sortie (absolu ou relatif vers le répertoire racine du projet) ou choisissez Parcourir pour accéder à ce dossier.

    Propriété de chemin de sortie pour un projet Visual Studio C#

    Remarque

    Certains projets (.NET et ASP.NET Core) incluent par défaut la version du cadre ou l’identifiant d’exécution dans le chemin d’accès à la build. Pour modifier cela, cliquez avec le bouton droit sur le nœud du projet dans l’Explorateur de solutions, sélectionnez Modifier le fichier projet, puis ajoutez ce qui suit :

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

Conseil

Si la sortie n’est pas générée à l’emplacement que vous avez spécifié, vérifiez que vous créez la configuration correspondante (par exemple, Debug ou Release) en la sélectionnant dans la barre de menus de Visual Studio.

Sélecteur de configuration de build dans Visual Studio 2019.

Créer un répertoire de sortie commun

Par défaut, Visual Studio génère chaque projet dans une solution dans son propre dossier au sein de la solution. Vous pouvez changer les chemins de sortie de build de vos projets pour imposer que toutes les sorties soient placées dans le même dossier.

Pour placer toutes les sorties de solution dans un répertoire commun

  1. Nettoyez la solution pour supprimer tous les fichiers de sortie existants (Build>Nettoyer la solution).

  2. Cliquez sur un projet dans la solution.

  3. Dans le menu Projet , cliquez sur Propriétés.

  4. Dans chaque projet, en fonction de son type, sélectionnez Compiler ou Build, puis spécifiez un dossier à utiliser pour tous les projets de la solution sous Chemin de sortie ou Chemin de sortie de base.

  5. Ouvrez le fichier projet du projet et ajoutez la déclaration de propriété suivante au premier groupe de propriétés.

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

    La définition de UseCommonOutputDirectory sur true indique à Visual Studio et à son moteur de génération sous-jacent (MSBuild) que vous placez plusieurs sorties de projet dans le même dossier. Ainsi, MSBuild omet l’étape de copie qui se produit normalement quand des projets dépendent d’autres projets.

  6. Répétez les étapes 2 à 5 pour tous les projets de la solution. Vous pouvez ignorer exceptionnellement certains projets qui ne doivent pas utiliser le répertoire de sortie commun.

Pour définir le répertoire de sortie intermédiaire pour un projet (projets .NET)

  1. Nettoyez le projet pour supprimer tous les fichiers de sortie existants.

  2. Ouvrez le fichier projet.

  3. Ajoutez la déclaration de propriété suivante au premier groupe de propriétés.

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

    Le chemin est relatif par rapport au fichier projet. Vous pouvez également utiliser un chemin absolu. Si vous souhaitez insérer le nom du projet dans le chemin, vous pouvez le référencer à l’aide des propriétés MSBuild $(MSBuildProjectName)et $(MSBuildProjectDirectory). Pour plus d’informations sur les propriétés que vous pouvez utiliser, consultez Propriétés réservées et connues de MSBuild.

  4. Visual Studio crée toujours le dossier obj sous le dossier du projet quand vous effectuez une génération, mais il est vide. Vous pouvez le supprimer dans le cadre du processus de génération. Pour cela, vous pouvez, par exemple, ajouter un événement post-build pour exécuter la commande suivante :

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

    Consultez Spécifier des événements de build personnalisés.

Visual Studio 2022 propose différentes interfaces utilisateur du Concepteur de projet selon le type de votre projet. Les projets C# .NET Framework et tous les projets Visual Basic utilisent le Concepteur de projet .NET hérité, mais les projets C# .NET Core et .NET 5 (ou version ultérieure) utilisent le Concepteur de projet .NET actuel. Les projets C++ utilisent leur propre interface utilisateur de pages de propriétés. Les étapes décrites dans cette section dépendent du Concepteur de projet que vous utilisez.

Changer le répertoire de sortie de build

Cette procédure s’applique aux projets C# dans Visual Studio 2022 ciblant .NET Core ou .NET 5 et versions ultérieures.

  1. Nettoyez le projet ou la solution pour supprimer tous les fichiers de sortie existants (Build>Nettoyer la solution).

  2. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nœud de projet, puis sélectionnez Propriétés.

  3. Développez la section Build, puis défilez vers le bas la sous-section Sortie.

  4. Recherchez la section Chemin de sortie de base pour C# et tapez le chemin vers lequel générer la sortie (absolu ou relatif par rapport au répertoire racine du projet) ou choisissez Parcourir pour accéder à ce dossier. Notez que le nom de la configuration est ajouté au chemin de sortie de base pour générer le chemin de sortie réel.

    Capture d’écran montrant la propriété de chemin d’accès de sortie pour un projet C# .NET Core.

    Remarque

    Certains projets (.NET et ASP.NET Core) incluent par défaut la version du cadre ou l’identifiant d’exécution dans le chemin de sortie final. Pour modifier cela, cliquez avec le bouton droit sur le nœud du projet dans l’Explorateur de solutions, sélectionnez Modifier le fichier projet, puis ajoutez ce qui suit :

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

Créer un répertoire de sortie commun

Par défaut, Visual Studio génère chaque projet dans une solution dans son propre dossier au sein de la solution. Vous pouvez changer les chemins de sortie de build de vos projets pour imposer que toutes les sorties soient placées dans le même dossier.

  1. Nettoyez la solution pour supprimer tous les fichiers de sortie existants (Build>Nettoyer la solution).

  2. Cliquez sur un projet dans la solution.

  3. Dans le menu Projet , cliquez sur Propriétés.

  4. Dans chaque projet, en fonction de son type, sélectionnez Compiler ou Build, puis spécifiez un dossier à utiliser pour tous les projets de la solution sous Chemin de sortie ou Chemin de sortie de base.

  5. Ouvrez le fichier projet du projet et ajoutez la déclaration de propriété suivante au premier groupe de propriétés.

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

    La définition de UseCommonOutputDirectory sur true indique à Visual Studio et à son moteur de génération sous-jacent (MSBuild) que vous placez plusieurs sorties de projet dans le même dossier. Ainsi, MSBuild omet l’étape de copie qui se produit normalement quand des projets dépendent d’autres projets.

  6. Répétez les étapes 2 à 5 pour tous les projets de la solution. Vous pouvez ignorer exceptionnellement certains projets qui ne doivent pas utiliser le répertoire de sortie commun.

Conseil

Si la sortie n’est pas générée à l’emplacement que vous avez spécifié, vérifiez que vous créez la configuration correspondante (par exemple, Debug ou Release) en la sélectionnant dans la barre de menus de Visual Studio.

Capture d’écran du sélecteur de configuration de build dans Visual Studio 2022.

Définir le répertoire de sortie intermédiaire pour un projet

Cette procédure s’applique aux projets C# dans Visual Studio 2022 ciblant .NET Core ou .NET 5 et versions ultérieures.

  1. Nettoyez le projet pour supprimer tous les fichiers de sortie existants.

  2. Ouvrez le fichier projet.

  3. Ajoutez la déclaration de propriété suivante au premier groupe de propriétés.

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

    Le chemin est relatif par rapport au fichier projet. Vous pouvez également utiliser un chemin absolu. Si vous souhaitez insérer le nom du projet dans le chemin, vous pouvez le référencer à l’aide des propriétés MSBuild $(MSBuildProjectName)et $(MSBuildProjectDirectory). Pour plus d’informations sur les propriétés que vous pouvez utiliser, consultez Propriétés réservées et connues de MSBuild.

  4. Visual Studio crée toujours le dossier obj sous le dossier du projet quand vous effectuez une génération, mais il est vide. Vous pouvez le supprimer dans le cadre du processus de génération. Pour cela, vous pouvez, par exemple, ajouter un événement post-build pour exécuter la commande suivante :

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

    Consultez Spécifier des événements de build personnalisés.

Utiliser Directory.Build.props pour définir le répertoire de sortie

Si vous avez un grand nombre de projets et que vous souhaitez modifier le dossier de sortie pour chacun d’entre eux, il serait fastidieux et sujet aux erreurs de modifier chacun d’entre eux en utilisant les méthodes décrites plus haut dans cet article. Dans ce cas, vous pouvez créer un fichier dans le dossier solution, Directory.Build.props, pour définir les propriétés MSBuild appropriées en un emplacement unique, à appliquer à tous les projets de la solution. En plaçant un fichier portant ce nom particulier dans le dossier parent de tous les projets que vous souhaitez affecter, vous pouvez facilement conserver les personnalisations en un emplacement unique et faciliter la modification des valeurs. Consultez Personnaliser la build par dossier.

Utiliser des artefacts pour organiser les sorties de build

Pour les projets .NET 8, vous pouvez utiliser la fonctionnalité des artefacts pour organiser la sortie d’une manière hautement personnalisable et flexible. Consultez Layout de sortie d’artefacts.