Visual studio настройка конфигурации
При создании нового проекта в Visual Studio по умолчанию вы получаете две конфигурации сборки: Debug и Release. И для большинства мелких проектов этого вполне достаточно. Но с ростом проекта может возникнуть потребность добавить дополнительные конфигурации. И хорошо, если нужно добавить одну-две новые конфигурации, а если их добрый десяток? А если при этом в солюшене находится штук 20 проектов, для каждого из которых эти конфигурации нужно настроить? В данном случае управлять параметрами сборки и модифицировать их становится достаточно сложно.
В этом посте будет рассмотрен способ, с помощью которого вы сможете немного упростить себе жизнь, существенно сократив описание конфигураций сборок.
Откройте csproj-файл одного из ваших проектов, вы найдёте в нём строчки такого вида:
Первая проблема, которая стоит перед нами, состоит в том, что эти строчки дублируются (или практически дублируются) во всех проектах. К счастью, csproj-файлы поддерживают импорт конфигураций, так что создадим в корне солюшена файл Configurations.targets следующего содержания:
После этого вы сможете заменить соответствующие строчки в исходном csproj-файле на
Отлично, теперь дублирование описаний конфигураций ушло, можно сосредоточиться на редактировании единственного файла. Можно заметить, что в Debug и Release конфигурациях некоторые строчки всё ещё дублируются. Предполагается, что разработчик захочет настроить все эти параметры индивидуально для каждой конфигурации. Если такой потребности нет, то можно вынести дублирующиеся строчки в общую PropertyGroup :
Можно ли ещё что-нибудь улучшить? Давайте подумаем. Глаз сразу цепляется за OutputPath , который можно «вычислить» из названия конфигурации. При наличии двух конфигураций можно оставить для каждой индивидуальную настройку, но вот если конфигураций будет очень много, то здорово было бы сделать так, чтобы OutputPath выводился из названия конфигурации. Тут нам на помощь приходит переменная $(Configuration) , с помощью которой это самое название можно узнать:
Замечательно, дублирование ушло. От чего ещё можно избавиться? Как правило, выставляемые свойства зависят только от конфигурации, изменение платформы ни на что не влияет. Давайте уберём лишнее условие:
Теперь добавим новых конфигураций. Положим, мы хотим ввести в наше приложение Demo-режим, в котором будут доступны не все функции. Demo-режим также может потребоваться отладить, поэтому разумно создать конфигурации DebugDemo и ReleaseDemo . А ещё, к примеру, мы хотим ввести режим сборки, при котором от пользователя будет требоваться лицензия. Demo-версию также может понадобится лицензировать, так что мы имеем ещё 4 конфигурации: DebugLicense , ReleaseLicense , DebugDemoLicense , ReleaseDemoLicense (данная ситуация приведена только для примера, в вашем проекте может быть всё иначе). Demo и License будут добавлять новые переменные в DefineConstatns . Казалось бы, для 8 конфигураций нужно сделать 8 отдельных PropertyGroup , но что-то внутри сознания сразу начинает протестовать. К счастью, в Condition можно разместить более сложное условие, нежели простое сравнение. В данном примере будем искать заданную подстроку в названии конфигурации:
Выглядит вполне неплохо. Но только образовалась проблема: Visual Studio теперь «не видит» список доступных конфигураций. Эту проблему можно решить, добавив пустых PropertyGroup c таким же Condition , как были вначале. При этом можно добавлять не все возможные конфигурации, а только те, которые вы реально будете использовать при работе. Например, мы не хотим отлаживать Demo и License конфигурации, тогда можно написать так:
Если у вас есть врождённая ненависть к дублированию чего угодно, то в получившийся файл можно также вынести дополнительные свойства, которые дублируются во всех проектах. Например так:
Теперь точно всё дублирование ушло, а настраивать конфигурации стало легко и просто. Хочется отметить, что совершенно не обязательно данный подход подойдёт именно вам, многие проекты отлично пишутся и без правки конфигураций. А иногда каждую конфигурацию для каждого проекта и каждой платформы приходится настраивать вручную — в этом случае не особо получится сэкономить на удалении дублирования. Но если всё-таки возникла проблема с настройкой большого количества конфигураций для большого количество проектов, то, возможно, этот способ вам пригодится. Также будет полезно почитать справочные сведения о сборке в MSDN:
Проекты Visual Studio имеют отдельные конфигурации выпуска и отладки для вашей программы. Производится построение отладочной версии для отладки и версии выпуска для окончательного выпуска программы.
Отладочная конфигурация программы компилируется с полной символической отладочной информацией и без оптимизации. Оптимизация усложняет отладку, поскольку усложняется связь между исходным кодом и сгенерированными инструкциями.
Конфигурация выпуска для программы полностью оптимизируется и не содержит символической отладочной информации. Для управляемого кода и кода C++ отладочная информация может быть создана в виде PDB-файлов в зависимости от используемых параметров компилятора. Создание PDB-файлов может оказаться полезным, если позднее возникнет необходимость в отладке версии выпуска.
Дополнительные сведения о конфигурациях сборки см. в статье Общие сведения о конфигурациях сборки.
Изменение конфигурации сборки
Для изменения конфигурации сборки сделайте следующее.
На панели инструментов выберите либо Отладка, либо Выпуск из списка Конфигурации решения.
В меню Сборка щелкните Диспетчер конфигураций, а затем выберите Отладка или Выпуск.
Можно выбрать создание файлов символов (PDB) и отладочные данные, которые необходимо включить. Для большинства типов проектов компилятор создает файлы символов по умолчанию для отладочных и окончательных сборок, в то время как другие параметры по умолчанию отличаются по типу проекта и версии Visual Studio.
Отладчик загружает PDB-файл для исполняемого файла, только если он точно соответствует PDB-файлу, который был создан при сборке исполняемого файла (то есть это должен быть либо оригинальный PDB-файл, либо его копия). Дополнительные сведения см. в статье Почему Visual Studio требует, чтобы файлы символов отладчика точно соответствовали двоичным файлам, с которыми они были собраны?
Каждый тип проекта может иметь свой способ установки этих параметров.
В обозревателе решений щелкните правой кнопкой мыши проект и выберите пункт Свойства.
В боковой области выберите Сборка > Общие.
В разделе Оптимизация кода выберите Отладка или Выпуск.
В списке Отладочные символы выберите PDB-файл, текущая платформа, PDB-файл, переносимый или Внедренный.
Компилятор создает файлы символов в той же папке, что и исполняемый файл или основной выходной файл.
В обозревателе решений щелкните правой кнопкой мыши проект и выберите пункт Свойства.
В боковой области выберите Сборка (или Компилировать в Visual Basic).
В списке Конфигурация в верхней части выберите Отладка или Выпуск.
В списке Сведения об отладке (или Создать сведения об отладке в Visual Basic) выберите Полные, Только для PDB или Переносимые.
Компилятор создает файлы символов в той же папке, что и исполняемый файл или основной выходной файл.
Создание файлов символов для проекта C++
В обозревателе решений щелкните правой кнопкой мыши проект и выберите пункт Свойства.
В списке Конфигурация выберите Отладка или Выпуск.
В боковой области выберите Компоновщик > Отладка, а затем выберите параметры в разделе Создать сведения об отладке.
В большинстве проектов C++ используется значение по умолчанию Создать отладочную информацию (/DEBUG) .
Дополнительные сведения о параметрах проекта для конфигурации отладки C++ см. в разделе Параметры проекта для конфигурации отладки C++.
Настройте параметры для раздела Создание файлов базы данных программы.
В большинстве проектов C++ значением по умолчанию является $(OutDir)$(TargetName).pdb , которое создает PDB-файлы в выходной папке.
Компилятор создает файлы символов в той же папке, что и исполняемый файл или основной выходной файл.
Вы можете создать несколько конфигураций сборки для решения. Например, можно настроить отладочную сборку, которую ваши тест-инженеры могут использовать для поиска и устранения неполадок, или настроить разные типы сборок, которые можно передавать разным клиентам.
Этот раздел относится к Visual Studio в Windows. Информацию о Visual Studio для Mac см. в статье Создание и изменение конфигураций в Visual Studio для Mac.
Создание конфигураций сборки
Диалоговое окно Диспетчер конфигураций служит для выбора или изменения существующих конфигураций сборки, а также для создания новых.
Чтобы открыть диалоговое окно Диспетчер конфигураций, в обозревателе решений откройте контекстное меню для решения и выберите пункт Диспетчер конфигураций.
Если пункт Диспетчер конфигураций не отображается в контекстном меню, он должен отображаться в меню Сборка в строке меню. Если его нет в обоих меню, в строке меню выберите Сервис > Параметры, а затем в левой области диалогового окна Параметры разверните узел Проекты и решения > Общие и в области справа установите флажок Показывать дополнительные конфигурации построения.
В диалоговом окне Диспетчер конфигураций в раскрывающемся списке Активная конфигурация решения можно выбрать конфигурацию сборки для всего решения, изменить существующую или создать новую конфигурацию. Раскрывающийся список Активная платформа решения можно использовать для выбора платформы, для которой предназначена конфигурация, или для добавления новой платформы. В области Конфигурации проектов перечислены все проекты в решении. Для каждого проекта можно выбрать конфигурацию и платформу проекта, изменить уже существующую или создать новую конфигурацию или добавить новую платформу. Кроме того, можно установить флажки, которые указывают, включается ли конкретный проект при использовании конфигурации на уровне решения для сборки или развертывания решения.
После настройки необходимых конфигураций можно задать свойства проекта, которые подходят для этих конфигураций.
Задание свойств на основе конфигураций
Чтобы задать свойства на основе конфигураций, в обозревателе решений откройте контекстное меню для проекта и выберите пункт Свойства. Можно задать свойства для конфигураций. Например, для конфигурации выпуска можно задать оптимизацию кода при сборке решения, а для конфигурации отладки — указать, что включен символ условной компиляции DEBUG .
Дополнительные сведения о параметрах страницы свойств см. в статье Управление свойствами проекта и решения.
Создание конфигурации проекта
Откройте диалоговое окно Диспетчер конфигураций.
Выберите проект в столбце Проект.
В раскрывающемся списке Конфигурация для этого проекта выберите Создать.
Откроется диалоговое окно Создание конфигурации проекта.
В поле Имя введите имя новой конфигурации.
Чтобы использовать значения свойств из существующей конфигурации проекта, в раскрывающемся списке Копировать параметры из выберите конфигурацию.
Чтобы одновременно создать конфигурацию на уровне решения, установите флажок Создать новую конфигурацию решения.
Переименование конфигурации проекта
Откройте диалоговое окно Диспетчер конфигураций.
В столбце Проект выберите проект, который содержит нужную конфигурацию проекта.
В раскрывающемся списке Конфигурация для этого проекта выберите Изменить.
Откроется диалоговое окно Изменение конфигураций проекта.
Выберите имя конфигурации проекта, которую требуется изменить.
Выберите Переименовать, а затем введите новое имя.
Создание и изменение конфигураций сборки на уровне решения
Создание конфигурации сборки на уровне решения
Откройте диалоговое окно Диспетчер конфигураций.
В раскрывающемся списке Активная конфигурация решения выберите Создать.
Откроется диалоговое окно Создание конфигурации решения.
В текстовом поле Имя введите имя новой конфигурации.
Чтобы использовать параметры из существующей конфигурации решения, в раскрывающемся списке Копировать параметры из выберите конфигурацию.
Если вы хотите одновременно создать конфигурации проекта, установите флажок Создать новые конфигурации проекта.
Переименование конфигурации сборки на уровне решения
Откройте диалоговое окно Диспетчер конфигураций.
В раскрывающемся списке Активная конфигурация решения выберите Изменить.
Откроется диалоговое окно Изменение конфигураций решения.
Выберите имя конфигурации решения, которую требуется изменить.
Выберите Переименовать, а затем введите новое имя.
Изменение конфигурации сборки на уровне решения
Откройте диалоговое окно Диспетчер конфигураций.
В раскрывающемся списке Активная конфигурация решения выберите нужную конфигурацию.
В области Конфигурации проектов для каждого проекта выберите нужную конфигурацию и платформу, а также выберите, требуется ли выполнять его сборку и развертывание.
Конфигурации сборок требуются для создания проектов с разными параметрами. Например, Debug и Release — это конфигурации, и при их создании используются разные параметры компилятора. Одна конфигурация является активной и отображается на панели команд в верхней части интегрированной среды разработки.
Этот раздел относится к Visual Studio в Windows. Информацию о Visual Studio для Mac см. в статье Конфигурации сборки в Visual Studio для Mac.
Параметры "Конфигурация" и "Платформа" позволяют определить, где будут храниться выходные файлы сборки. Как правило, когда в Visual Studio выполняется сборка проекта, выходные данные помещаются во вложенную папку проекта с именем активной конфигурации (например, bin/debug/x86). Но это можно изменить.
Вы можете создавать свои конфигурации сборки на уровне решения и проекта. Конфигурация решения определяет, какие проекты включаются в сборку, когда эта конфигурация активна. В сборку будут включены только проекты, указанные в активной конфигурации решения. Если в Configuration Manager выбрано несколько целевых платформ, будут построены все проекты, которые применяются к этой платформе. Конфигурация проекта определяет, какие параметры сборки и компилятора используются при сборке проекта.
Чтобы создать, выбрать, изменить или удалить конфигурацию, можно использовать Configuration Manager. Чтобы открыть его, выберите в строке меню Сборка > Configuration Manager или просто введите Configuration в поле поиска. Можно также использовать список Конфигурации решения на панели инструментов Стандартные, чтобы выбрать конфигурацию или открыть Configuration Manager.
Если вы не можете найти параметры конфигурации решения на панели инструментов и не можете получить доступ к Configuration Manager, это может быть связано с использованием параметров разработки Visual Basic. Дополнительные сведения см. в разделе Практическое руководство. Управление конфигурациями с применением параметров разработчика Visual Basic.
По умолчанию конфигурации Debug и Release включены в проекты, которые создаются с использованием шаблонов Visual Studio. Конфигурация Debug поддерживает отладку приложения, а конфигурация Release создает версию приложения, которое можно развернуть. Дополнительные сведения см. в разделе Практическое руководство. Настройка конфигураций отладки и выпуска. Можно также создать пользовательские конфигурации решений и проектов. Дополнительные сведения см. в разделе Практическое руководство. создавать и изменять конфигурации.
Конфигурации решения
Конфигурация решения указывает, как следует создавать и развертывать проекты в решении. Чтобы изменить конфигурацию решения или определить новую конфигурацию в Configuration Manager, в меню Активная конфигурация решения щелкните Изменить или Создать.
Каждая запись в поле Контексты проекта в конфигурации решений представляет проект в решении. Для каждой комбинации Активная конфигурация решения и Активная платформа решения можно задать способ использования каждого проекта. (Дополнительные сведения о платформах решений см. в разделе Общие сведения о сборках платформ.)
При определении новой конфигурации решения и установке флажка Создать новые конфигурации проектовVisual Studio автоматически назначает новую конфигурацию всем проектам. Аналогичным образом, при определении новой платформы решения и установке флажка Создать новые платформы проектовVisual Studio автоматически назначает новую платформу всем проектам. Кроме того, если вы добавите проект, предназначенный для новой платформы, Visual Studio добавит эту платформу в список платформ решений и назначит ее всем проектам. Вы по-прежнему можете изменять параметры для каждого проекта.
Активная конфигурация решения также предоставляет контекст для IDE. Например, если вы работаете над проектом и конфигурация указывает, что он будет создан для мобильного устройства, на панели инструментов отобразятся только элементы, которые можно использовать в проекте мобильного устройства.
Конфигурации проекта
Параметры сборки и компилятора, используемых при сборке проекта определяют конфигурация и целевая платформа. В проекте могут быть разные параметры для каждой комбинации конфигурации и платформы. Чтобы изменить свойства проекта, откройте контекстное меню проекта в обозревателе решений и щелкните Свойства. В верхней части вкладки Сборка конструктора проектов выберите активную конфигурацию, чтобы изменить параметры сборки.
Сборка нескольких конфигураций
При построении решения с помощью команды Сборка > Собрать решение, Visual Studio выполняет сборку только активной конфигурации. Все проекты, указанные в этой конфигурации решения, будут построены, и единственной конфигурацией проекта будет только одна из них, указанная в активной конфигурации решения и активной платформе решения, которая отображается на панели инструментов в Visual Studio. Например, Отладка и x86. Другие определенные конфигурации и платформы не создаются.
Если требуется создать несколько конфигураций и платформ в одном действии, можно использовать параметр Сборка > Пакетная сборка в Visual Studio. Для получения доступа к этой функции, нажмите Ctrl+Q, чтобы открыть поле поиска, и введите Batch build . Пакетная сборка доступна не для всех типов проектов. См. практическое руководство по сборке с использованием нескольких конфигураций.
Назначение конфигураций проектов Visual Studio
Если вы определяете конфигурацию нового решения и не копируете параметры из существующего, Visual Studio использует следующие критерии для назначения конфигурации проектов по умолчанию. Критерии оцениваются в следующем порядке.
Если проект имеет имя конфигурации ( ), которое точно совпадает с именем новой конфигурации решения, назначается эта конфигурация. В именах конфигураций не учитывается регистр.
Если проект имеет имя конфигурации, в котором часть имени конфигурации совпадает с новой конфигурацией решения, назначается эта конфигурация (независимо от того, совпадает ли часть имени платформы или нет).
Если совпадений все равно нет, назначается первая конфигурация, указанная в проекте.
Назначение конфигураций решений Visual Studio
При создании конфигурации проекта (в Configuration Manager путем выбора пункта Создать в раскрывающемся меню столбца Конфигурация для этого проекта) и установке флажка Создать новые конфигурации решений Visual Studio ищет конфигурацию решения с таким же именем, чтобы создать проект на каждой поддерживаемой платформе. В некоторых случаях Visual Studio переименовывает существующие конфигурации решения или определяет новые.
Visual Studio использует следующие критерии для назначения конфигураций решения.
Если конфигурация проекта не указывает платформу или указывает только одну платформу, будет найдена или добавлена конфигурация решения, имя которой совпадает с именем новой конфигурации проекта. Имя по умолчанию конфигурации решения не включает имя платформы; оно имеет формат .
Если проект поддерживает несколько платформ, для каждой поддерживаемой платформы будет найдена или добавлена конфигурация решения. Имя каждой конфигурации решения включает как имя конфигурации проекта, так и имя платформы, и имеет формат .
В Visual Studio 2017 Update 15.9 мы добавили возможность экспорта и импорта рабочей нагрузки и выбора компонентов в файл конфигурации установки Visual Studio. Разработчики могут импортировать эти файлы в новые или существующие установки. Проверка этих файлов в ваших исходных репозиториях позволяет легко ими делиться. Однако разработчикам все еще нужно импортировать их, чтобы получить необходимые функции.
В Visual Studio 2019 была добавлена автоматическая установка недостающих компонентов. Подробности под катом!
Автоматическая установка недостающих компонентов
Новинка в Visual Studio 2019: вы можете сохранить эти файлы как файлы .vsconfig в корневом каталоге решения, и когда решение (или директория решения) будет открыто, Visual Studio автоматически определит, какие компоненты отсутствуют, и предложит вам установить их.
Вы можете найти пример этого в репозитории vswhere на GitHub. Когда вы нажимаете на Install, вам предлагается установить все недостающие компоненты. Вы можете щелкнуть View full installation details, если хотите выбрать дополнительные компоненты.
Экспорт вашей конфигурации
В Visual Studio 2019 вы можете создать файл .vsconfig прямо из Solution Explorer:
- Щелкните правой кнопкой мыши на вашем решении.
- Нажмите Add > Installation Configuration File.
- Подтвердите место, в котором вы хотите сохранить файл .vsconfig (по умолчанию это корневая директория вашего решения).
- Нажмите Review details.
- Выберите или отмените любые изменения, которые вы хотите сделать, и нажмите Export
Фидбэк
Мы будем рады увидеть ваши отзывы! Вы можете сообщить о проблеме или внести предложения по этой или любой другой фиче Visual Studio на нашем сайте Developer Community.
Читайте также: