Бөлісу құралы:


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

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

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

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

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

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

† Подпапка с названием проекта опущена для путей вывода пакета. Кроме того, сводная подпапка включает только конфигурацию.

Примеры

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

Путь Описание
артефакты\bin\MyApp\debug Выходной путь сборки для простого проекта при запуске dotnet build.
артефакты сборки\obj\MyApp\debug Промежуточный выходной путь для простого проекта при запуске dotnet build.
artifacts\bin\MyApp\debug_net8.0 Выходной путь сборки для net8.0 сборки многоцелевого проекта.
artifacts\publish\MyApp\release_linux-x64 Путь публикации для простого приложения при публикации linux-x64.
артефакты\package\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>
    

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

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

Имя папки "имя проекта" по умолчанию имеет имя проекта MSBuild. Чтобы настроить его для определенного проекта, задайте ArtifactsProjectName свойство MSBuild в файле проекта. Например:

<PropertyGroup>
  <ArtifactsProjectName>CustomProjectName</ArtifactsProjectName>
</PropertyGroup>