Layout de sortie d’artefacts

Dans .NET 8 et versions ultérieures, il existe une option permettant de simplifier le chemin de sortie et la structure de dossiers pour les sorties de build. Toutes les sorties de build de tous les projets sont collectées dans un emplacement commun, séparés par projet. Un emplacement courant facilite l’utilisation d’outils pour anticiper où trouver les sorties.

Par défaut, l’emplacement commun est un répertoire nommé artefacts à côté de fichier Directory.build.props. La structure de dossiers sous le dossier d’artefacts racine est la suivante :

📁 artifacts
    └──📂 <Type of output>
        └──📂 <Project name>
            └──📂 <Pivot>

Le tableau suivant montre les valeurs par défaut pour chaque niveau de la structure de dossiers. Vous pouvez remplacer les valeurs, ainsi que l’emplacement par défaut, à l’aide de propriétés dans le fichier Directory.build.props.

Niveau dossier Description Exemples
Type de sortie Catégories de sorties de build, telles que les fichiers binaires, les fichiers intermédiaires/générés, les applications publiées et les packages NuGet. bin, obj, publish, package
Nom du projet Sépare la sortie par chaque projet. MyApp
Tableau croisé dynamique Fait la distinction entre les builds d’un projet pour différentes configurations, frameworks cibles et identificateurs d’exécution. Si plusieurs éléments sont nécessaires, ils sont joints par un trait de soulignement (_). Peut être personnalisé à l’aide de la propriété MSBuild ArtifactsPivots. debug, debug_net8.0, release, release_linux-x64

Exemples

Le tableau suivant présente des exemples de chemins d’accès qui peuvent être créés.

Path Description
artifacts\bin\MyApp\debug Le chemin de sortie de build pour un projet simple lorsque vous exécutez dotnet build.
artifacts\obj\MyApp\debug Le chemin de sortie intermédiaire d’un projet simple lorsque vous exécutez dotnet build.
artifacts\bin\MyApp\debug_net8.0 Le chemin de sortie de build pour la génération net8.0 d’un projet multi-ciblé.
artifacts\publish\MyApp\release_linux-x64 Le chemin de publication d’une application simple lors de la publication pour linux-x64.
artifacts\package\MyApp\release Dossier dans lequel le fichier .nupkg release est créé pour un projet.

Comment configurer

Pour choisir le format de chemin de sortie centralisé, ajoutez l’une des propriétés MSBuild suivantes à votre fichier Directory.Build.props :

  • Pour utiliser l’emplacement de sortie par défaut, définissez la propriété UseArtifactsOutput sur true.

    <PropertyGroup>
      <UseArtifactsOutput>true</UseArtifactsOutput>
    </PropertyGroup>
    
  • Pour définir un emplacement de sortie personnalisé, ajoutez une propriété ArtifactsPath avec une valeur $(MSBuildThisFileDirectory)artifacts (ou tout ce que vous souhaitez que l’emplacement du dossier soit). Si vous n’avez pas encore de fichier Directory.Build.props, vous pouvez exécuter la commande suivante pour générer automatiquement un fichier qui contient la propriété ArtifactsPath :

    dotnet new buildprops --use-artifacts
    

    Le fichier généré ressemble à ceci :

    <Project>
      <PropertyGroup>
        <ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath>
      </PropertyGroup>
    </Project>
    

Le nom du dossier « pivot » est défini par défaut sur une combinaison de moniker de framework cible (TFM), de configuration et d’identificateur d’exécution (RID). Tout ce qui n’est pas présent n’est pas omis. Pour personnaliser le nom du dossier « pivot », définissez la propriété MSBuild ArtifactsPivots sur votre chaîne souhaitée. Par exemple :

<PropertyGroup>
  ...
  <ArtifactsPivots>$(ArtifactsPivots)_MyCustomPivot</ArtifactsPivots>
</PropertyGroup>