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


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

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

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

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

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

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

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

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

  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 существуют разные пользовательские интерфейсы конструктора проектов в зависимости от типа проекта. C# платформа .NET Framework и все проекты Visual Basic используют устаревший конструктор проектов .NET, но проекты C# .NET Core (и .NET 5 и более поздних версий) используют текущий конструктор проектов .NET. Проекты C++ используют собственный пользовательский интерфейс страниц свойств. Действия, описанные в этом разделе, зависят от используемого конструктора проектов.

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

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

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

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

  3. Разверните раздел "Сборка" и прокрутите вниз до подраздела "Вывод".

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

    Снимок экрана: свойство выходного пути для проекта C# .NET Core.

    Примечание.

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

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

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

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

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

  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 2022.

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

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