Поделиться через


Изменение каталога выходных данных сборки

Можно указать расположение выходных данных, генерируемых вашим проектом, для каждой конфигурации (для отладки, релиза или обоих). При использовании параметров по умолчанию выходные папки варьируются в зависимости от типа проекта и пакета SDK, при этом некоторые проекты используют вложенные папки, специфичные для платформы или фреймворка.

Visual Studio предоставляет свойства, позволяющие размещать промежуточные и конечные выходные данные в пользовательских папках, указывая пути относительно папки проекта или абсолютный путь в любом месте файловой системы. Помимо параметров, указанных в свойствах проекта Visual Studio, можно также настроить выходные данные, изменив файл проекта и используя возможности MSBuild и пакета SDK для .NET для полного контроля над всеми аспектами выходных данных проекта либо для отдельных проектов, либо на уровне решения для многих проектов.

Изменение каталога выходных данных сборки

  1. Очистите проект или решение, чтобы удалить все существующие выходные файлы (сборка>Clean solution).

  2. Чтобы открыть страницы свойств проекта, щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите Свойства.

  3. Выберите соответствующую вкладку на основе типа проекта:

    • Для C# выберите вкладку Сборка.
    • Для Visual Basic выберите вкладку Компиляция.
    • Для C++ или JavaScript выберите вкладку «Общие».
  4. В раскрывающемся списке конфигурации в верхней части выберите конфигурацию, расположение выходного файла которого необходимо изменить (отладка, выпускили все конфигурации).

  5. Найдите запись выходного пути на странице— она отличается в зависимости от типа проекта:

    • Путь вывода для проектов C# и JavaScript
    • Путь вывода сборки для проектов на Visual Basic
    • каталог выходных данных для проектов Visual C++

    Введите путь для вывода (абсолютный или относительно корневого каталога проекта), или выберите Обзор, чтобы открыть эту папку.

    свойство пути вывода для проекта Visual Studio C#

    Заметка

    Некоторые проекты (.NET и ASP.NET Core) по умолчанию включают версию платформы или идентификатор среды выполнения в путь сборки. Чтобы изменить это, щелкните правой кнопкой мыши узел проекта в обозревателе решений, выберите изменить файл проектаи добавьте следующее:

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

Совет

Если выходные данные не создаются в указанном расположении, убедитесь, что вы создаете соответствующую конфигурацию (например, отладка или выпуск), выбрав ее в строке меню Visual Studio.

средство выбора конфигурации сборки в Visual Studio 2019.

Сборка в общий выходной каталог

По умолчанию Visual Studio создает каждый проект в решении в своей папке внутри решения. Вы можете изменить пути вывода сборки для проектов, чтобы принудительно поместить все выходные данные в одну папку.

Размещение всех выходных данных решения в общем каталоге

  1. Очистите решение для удаления существующих выходных файлов (Сборка>Чистое решение).

  2. Щелкните на одном из проектов в решении.

  3. В меню проекта щелкните Свойства.

  4. В каждом проекте, в зависимости от его типа, выберите Скомпилировать или Построитьи задайте путь вывода или базовый выходной путь в папку, используемую для всех проектов в решении.

  5. Откройте файл проекта и добавьте следующее определение свойства в первую группу свойств.

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

    Установка UseCommonOutputDirectory на true сообщает Visual Studio и его базовому обработчику сборки (MSBuild), что вы помещаете несколько выходных данных проекта в одну папку, поэтому MSBuild пропускает шаг копирования, который обычно происходит, когда проекты зависят от других проектов.

  6. Повторите шаги 2–5 для всех проектов в решении. Можно пропустить некоторые проекты, если у вас есть некоторые исключительные проекты, которые не должны использовать общий выходной каталог.

Установка промежуточного выходного каталога для проекта (проекты .NET)

  1. Очистите проект, чтобы удалить все существующие выходные файлы.

  2. Откройте файл проекта.

  3. Добавьте следующее объявление свойства в первую группу свойств.

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

    Путь относится к файлу проекта или можно использовать абсолютный путь. Если вы хотите поместить имя проекта в путь, вы можете ссылаться на него с помощью свойств MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). Дополнительные свойства, которые вы можете использовать, см. в зарезервированных и известных свойствах MSBuild.

  4. Visual Studio по-прежнему создает папку obj под папкой проекта при сборке, но она пуста. Его можно удалить как часть процесса сборки. Один из способов сделать это — добавить событие после сборки для выполнения следующей команды:

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

    См. раздел Указание событий пользовательской сборки.

В Visual Studio 2022 существуют разные пользовательские интерфейсы конструктора проектов в зависимости от типа проекта. Проекты .NET Framework используют устаревший конструктор проектов .NET, но проекты .NET Core (и .NET 5 и более поздних версий) используют текущий конструктор проектов .NET. Проекты C++ используют собственный пользовательский интерфейс страниц свойств. Действия, описанные в этом разделе, зависят от используемого конструктора проектов.

Изменение каталога выходных данных сборки

Эта процедура применяется к проектам в Visual Studio 2022, предназначенных для .NET Core или .NET 5 и более поздних версий.

  1. Очистите проект или решение, чтобы удалить все существующие выходные файлы (сборка>Clean solution).

  2. Щелкните правой кнопкой по узлу проекта в обозревателе решений и выберите Свойства.

  3. Для проектов C# разверните раздел сборки и прокрутите вниз до подраздела Output. В Visual Basic разверните раздел Компилятор, затем посмотрите в разделе Общие.

  4. Найдите базовый путь выводаи введите путь, по которому будут создаваться выходные данные (абсолютный или относительно корневого каталога проекта) или выберите Просмотр, чтобы перейти в эту папку. Обратите внимание, что имя конфигурации добавляется к базовому выходному пути для создания фактического выходного пути.

    C#:

    снимок экрана, показывающий свойство пути вывода для проекта C# .NET Core.

    Visual Basic:

    Снимок экрана, который показывает свойство пути вывода для проекта Visual Basic на платформе .NET Core.

    Заметка

    Некоторые проекты (.NET и ASP.NET Core) по умолчанию включают версию платформы или идентификатор среды выполнения в конечный выходной путь. Чтобы изменить это, щелкните правой кнопкой мыши узел проекта в Обозревателе Решений, выберите Изменить Файл Проектаи добавьте следующее:

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

Сборка в общий выходной каталог

По умолчанию Visual Studio создает каждый проект в решении в своей папке внутри решения. Вы можете изменить пути вывода сборки для проектов, чтобы принудительно поместить все выходные данные в одну папку.

  1. Очистите решение для удаления существующих выходных файлов (Сборка>Чистое решение).

  2. Щелкните один проект в составе решения.

  3. В меню проекта щелкните Свойства.

  4. В каждом проекте, в зависимости от его типа, выберите Компиляцию или Сборкуи задайте путь вывода или базовый выходной путь в папку, которая будет использоваться для всех проектов в решении.

  5. Откройте файл проекта и добавьте следующее объявление свойства в первую группу свойств.

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

    Установка UseCommonOutputDirectory на true сообщает Visual Studio и его базовому обработчику сборки (MSBuild), что вы помещаете несколько выходных данных проекта в одну папку, поэтому MSBuild пропускает шаг копирования, который обычно происходит, когда проекты зависят от других проектов.

  6. Повторите шаги 2–5 для всех проектов в решении. Можно пропустить некоторые проекты, если у вас есть некоторые исключительные проекты, которые не должны использовать общий выходной каталог.

Совет

Если выходные данные не создаются в указанном расположении, убедитесь, что вы создаете соответствующую конфигурацию (например, Debug или Release), выбрав ее в меню Visual Studio.

снимок экрана средства выбора конфигурации сборки в Visual Studio 2022.

Установка промежуточного выходного каталога для проекта

Эта процедура применяется к проектам в Visual Studio 2022, предназначенных для .NET Core или .NET 5 и более поздних версий.

  1. Очистите проект, чтобы удалить все существующие выходные файлы.

  2. Откройте файл проекта.

  3. Добавьте следующее объявление свойства в первую группу свойств.

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

    Путь относится к файлу проекта или можно использовать абсолютный путь. Если вы хотите поместить имя проекта в путь, вы можете ссылаться на него с помощью свойств MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). Чтобы узнать больше о свойствах, которые можно использовать, см. зарезервированные и известные свойства MSBuild.

  4. Visual Studio по-прежнему создает папку obj под папкой проекта при сборке, но она пуста. Его можно удалить как часть процесса сборки. Один из способов сделать это — добавить событие после сборки для выполнения следующей команды:

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

    См. раздел Настройка пользовательских событий сборки.

Использование Directory.Build.props для задания выходного каталога

Если у вас есть большое количество проектов, и вы хотите изменить выходную папку для всех них, это будет емким и подверженным ошибкам, чтобы изменить каждую из них с помощью методов, описанных ранее в этой статье. В таких случаях можно создать файл в папке решения, Directory.Build.props, чтобы задать соответствующие свойства MSBuild в одном месте, чтобы применить все проекты в решении. Поместив файл с указанным именем в родительскую папку всех проектов, которые вы хотите затронуть, вы можете легко поддерживать настройки в одном месте и упростить изменение значений. См. Настройка сборки по папкам.

Использование артефактов для упорядочивания выходных данных сборки

Для проектов .NET 8 можно использовать функциональные возможности артефактов, чтобы упорядочить выходные данные в строго настраиваемом и гибком способе. См. макет выходных данных артефактов.