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


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

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