Макет выходных данных артефактов

В .NET 8 и более поздних версиях существует возможность упростить выходной путь и структуру папок для выходных данных сборки. Все выходные данные сборки всех проектов собираются в общее расположение, разделенное проектом. Общее расположение упрощает инструментирование для прогнозирования того, где найти выходные данные.

По умолчанию общее расположение — это каталог с именем артефактов рядом с файлом Directory.build.props . Структура папок в папке корневых артефактов выглядит следующим образом:

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

В следующей таблице показаны значения по умолчанию для каждого уровня в структуре папок. Можно переопределить значения, а также расположение по умолчанию, используя свойства в файле Directory.build.props .

Уровень папки Description Примеры
Тип выходных данных Категории выходных данных сборки, такие как двоичные файлы, промежуточные или созданные файлы, опубликованные приложения и пакеты NuGet. bin, , objpublishpackage
Имя проекта Разделяет выходные данные по каждому проекту. MyApp
Pivot Различает сборки проекта для различных конфигураций, целевых платформ и идентификаторов среды выполнения. Если требуется несколько элементов, они объединяются символом подчеркивания (_). Можно настроить с помощью ArtifactsPivots свойства MSBuild. debug, , debug_net8.0releaserelease_linux-x64

Примеры

В следующей таблице показаны примеры путей, которые могут быть созданы.

Путь Description
артефакты\bin\MyApp\debug Выходной путь сборки для простого проекта при запуске dotnet build.
артефакты\obj\MyApp\debug Промежуточный выходной путь для простого проекта при запуске dotnet build.
артефакты\bin\MyApp\debug_net8.0 Выходной путь сборки для net8.0 сборки многоцелого проекта.
артефакты\publish\MyApp\release_linux-x64 Путь публикации для простого приложения при публикации linux-x64.
артефакты\package\MyApp\release Папка, в которой создается выпуск NUPKG для проекта.

Порядок настройки

Чтобы выбрать формат централизованного выходного пути, добавьте одно из следующих свойств MSBuild в файл Directory.Build.props :

  • Чтобы использовать расположение выходных данных по умолчанию, задайте UseArtifactsOutput для свойства значение true.

    <PropertyGroup>
      <UseArtifactsOutput>true</UseArtifactsOutput>
    </PropertyGroup>
    
  • Чтобы задать пользовательское расположение выходных данных, добавьте ArtifactsPath свойство со значением $(MSBuildThisFileDirectory)artifacts (или независимо от того, где должна быть папка). Если у вас еще нет файла Directory.Build.props , можно выполнить следующую команду, чтобы автоматически создать файл, содержащий ArtifactsPath свойство:

    dotnet new buildprops --use-artifacts
    

    Созданный файл выглядит примерно так:

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

Имя папки "сводная" по умолчанию используется для сочетания моникера целевой платформы (TFM), конфигурации и идентификатора среды выполнения (RID). Все, которые отсутствуют, опущены. Чтобы настроить имя папки сводной таблицы, задайте ArtifactsPivots для свойства MSBuild нужную строку. Например:

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