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

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

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

В 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 для всех проектов в решении. Можно пропустить некоторые проекты, если у вас есть некоторые исключительные проекты, которые не должны использовать общий выходной каталог.

Совет

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

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

Совет

Если выходные данные не создаются в указанном расположении, убедитесь, что вы создаете соответствующую конфигурацию (например, отладка или выпуск), выбрав ее в строке меню 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 и более поздних версий можно использовать функциональность артефактов, чтобы упорядочить выходные данные в высоко настраиваемый и гибкий способ. См. макет выходных данных артефактов.