Share via


Uitvoerindeling artefacten

In .NET 8 en latere versies is er een optie om het uitvoerpad en de mapstructuur voor build-uitvoer te vereenvoudigen. Alle build-uitvoer van alle projecten wordt verzameld op een gemeenschappelijke locatie, gescheiden door project. Een veelvoorkomende locatie maakt het eenvoudig om te anticiperen op waar de uitvoer moet worden gevonden.

De algemene locatie is standaard een map met de naam artefacten naast het bestand Directory.build.props . De mapstructuur onder de map hoofdartefacten is als volgt:

πŸ“ artifacts
    β””β”€β”€πŸ“‚ <Type of output>
        β””β”€β”€πŸ“‚ <Project name>
            β””β”€β”€πŸ“‚ <Pivot>

In de volgende tabel ziet u de standaardwaarden voor elk niveau in de mapstructuur. U kunt de waarden en de standaardlocatie overschrijven met behulp van eigenschappen in het bestand Directory.build.props .

Mapniveau Beschrijving Voorbeelden
Type uitvoer CategorieΓ«n build-uitvoer, zoals binaire bestanden, tussenliggende/gegenereerde bestanden, gepubliceerde toepassingen en NuGet-pakketten. bin, , , objpublishpackage
Projectnaam De uitvoer wordt gescheiden door elk project. MyApp
Pivot Onderscheid tussen builds van een project voor verschillende configuraties, doelframeworks en runtime-id's. Als er meerdere elementen nodig zijn, worden ze samengevoegd met een onderstrepingsteken (_). Kan worden aangepast met behulp van de ArtifactsPivots eigenschap MSBuild. debug, , , debug_net8.0releaserelease_linux-x64

Voorbeelden

In de volgende tabel ziet u voorbeelden van paden die kunnen worden gemaakt.

Pad Beschrijving
artifacts\bin\MyApp\debug Het uitvoerpad van de build voor een eenvoudig project wanneer u uitvoert dotnet build.
artifacts\obj\MyApp\debug Het tussenliggende uitvoerpad voor een eenvoudig project wanneer u uitvoert dotnet build.
artefacten\bin\MyApp\debug_net8.0 Het uitvoerpad voor de build voor de net8.0 build van een project met meerdere doelgroepen.
artefacten\publish\MyApp\release_linux-x64 Het publicatiepad voor een eenvoudige app bij het publiceren voor linux-x64.
artifacts\package\MyApp\release De map waarin de release .nupkg wordt gemaakt voor een project.

Configureren

Als u wilt kiezen voor de gecentraliseerde indeling van het uitvoerpad, voegt u een van de volgende MSBuild-eigenschappen toe aan het bestand Directory.Build.props :

  • Als u de standaarduitvoerlocatie wilt gebruiken, stelt u de UseArtifactsOutput eigenschap in op true.

    <PropertyGroup>
      <UseArtifactsOutput>true</UseArtifactsOutput>
    </PropertyGroup>
    
  • Als u een aangepaste uitvoerlocatie wilt instellen, voegt u een ArtifactsPath eigenschap toe met een waarde van $(MSBuildThisFileDirectory)artifacts (of wat u wilt dat de maplocatie is). Als u nog geen bestand Directory.Build.props hebt, kunt u de volgende opdracht uitvoeren om automatisch een bestand te genereren dat de ArtifactsPath eigenschap bevat:

    dotnet new buildprops --use-artifacts
    

    Het gegenereerde bestand ziet er ongeveer als volgt uit:

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

De mapnaam 'pivot' is standaard ingesteld op een combinatie van target framework moniker (TFM), configuratie en runtime-id (RID). Alle aanwezigen worden weggelaten. Als u wilt aanpassen hoe de map pivot heet, stelt u de ArtifactsPivots eigenschap MSBuild in op de gewenste tekenreeks. Voorbeeld:

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