Есть ли альтернатива / плагин для менеджера конфигурации Visual Studio? - PullRequest
36 голосов
/ 11 февраля 2011

У меня есть необходимость удалить и переименовать выбранные конфигурации решений / проектов в visual studio, есть ли какой-нибудь инструмент, который поможет с этим?

Я считаю, что встроенный инструмент очень бесполезен. Например, когда я удаляю конфигурацию из решения, она отказывается удалять связанные конфигурации проекта на тот случай, если они нужны где-то еще. Также переименование конфигурации решения не переименует связанные с ней конфигурации.

Должен быть лучший способ сделать это. Есть какие-нибудь альтернативные инструменты?

Ответы [ 6 ]

16 голосов
/ 03 мая 2011

У меня есть необходимость удалить и переименовать выбранные конфигурации решений / проектов в Visual Studio, есть ли инструмент, который поможет с этим?

Краткий ответ: Нет.

Длинный ответ: Сортировка (например, вы собираетесь интегрировать вспомогательные инструменты, которыенеполный и напишите пользовательские сценарии / работы для создания / интеграции в процесс управления конфигурацией).

Ред. коммент .: Отличный вопрос, многие люди пострадали от этого (как отметили «upvotes»)на ваш вопрос), и мы все будем любить хороший ответ.

Я считаю встроенный инструмент очень бесполезным.Например, когда я удаляю конфигурацию из решения, она отказывается удалять связанные конфигурации проекта на тот случай, если они нужны где-то еще.Переименование конфигурации решения также не приведет к переименованию связанных с ним конфигураций.

Согласовано - встроенный инструмент совершенно бесполезен.Очень сложно поддерживать множество проектов и решений с разными конфигурациями и наборами зависимостей, особенно для разных целевых типов / платформ.Он обладает уникальными особенностями, такими как использование нескольких идентификаторов GUID для проектов, наборов файлов и типов проектов, которые хранятся в реестре и доступны из *.sln и *.vcproj.Инструмент попытается «излечить» себя с помощью этих уникальных идентификаторов, отменив изменения и игнорируя некоторые из своих собственных значений, чтобы «восстановить» связи между проектами / решениями.Это приводит к большому «бесполезности» в вашем реестре и файлах конфигурации, ненужным изменениям в файлах, если вы проверяете их в своей системе контроля версий, и к сценариям, когда многие части файла будут «игнорироваться», дажехотя вы (правильно) внесли эти изменения.Некоторые данные, такие как « имя проекта » и « имя конфигурации проекта » и « имя платформы проекта », иногда являются избыточными, а иногда нет.Из-за GUID этот тип «внешнего / ручного обслуживания» позволяет очень просто «отображать» ваш проект / решение, ссылаясь на правильный проект (по имени), но на НЕПРАВИЛЬНЫЙ проект (как однозначно идентифицируется по GUID, который былрешается через ссылку в реестре).Кроме того, существует более чем один способ указать одно и то же в этих файлах, что приводит к путанице (тем более что файловая онтология *.sln / *.vcproj плохо документирована и вряд либыть хорошо задокументированными в будущем).

Короче говоря, MSVS - это довольно хорошая IDE, но она ужасна для сборки и управления / сопровождения проектов. Кажется, ей не хватает сильного центрального дизайна.Я признаю, что это (очень) трудная проблема - люди работали над «сборкой» десятилетиями, и ИМХО современное состояние не очень хорошее.Тем не менее, MSVS - это, безусловно, «проектный комитет», включающий переход от эволюции к основным полевым пересмотрам.

Таким образом, «самый правильный» ответ на ваш вопрос - «нет»: MSVS не предназначен для того, чтобы делать то, что вы хотите (например, для поддержки конфигураций решений / проектов в MSVS).Тем не менее, я уверен, что Microsoft ответит так: «Мы предоставили вам .NET API, чтобы вы могли сами написать свой ответ и написать свои собственные инструменты».Однако после большого исследования этой темы, IMHO, не существует подходящего решения для этих типов инструментов, использующих API этих типов (хотя вы можете подключиться и с большим усилием написать свои собственные инструменты, чтобы упростить это обслуживание.)

MSVS2010 улучшается, но все еще не подходит для управления сборкой и конфигурацией проекта.Новые API полезны, но они сложны, и ИМХО не очень хорошо разработаны.Скорее всего, Microsoft никогда не будет серьезно заниматься этим аспектом среды IDE: это среда IDE, предназначенная для ускоренной итерации разработки и не предназначенная для сопровождения сборки проекта и решения.(Подробнее об этой теме можно узнать, если углубиться в форумы MSDN).

Должен быть лучший способ сделать это.Есть ли альтернативные инструменты?

Да и да: для всех систем сборки проблема заключается в «данных записи», которые вы хотите дляконфигурация: эти файлы, эти определенные макросы, эти аргументы командной строки, этот тип цели и т. д. Из этого (который проверяется вашим исходным кодом) должны быть сгенерированы «фактические» файлы / сценарии сборки.

Конечно, я только что описал CMake (который генерирует "файлы сборки" из исходного файла данных записи) и множество других инструментов.Это ваша лучшая ставка.В этом случае CMake хорошо генерирует файлы *.sln и *.vcproj, но не так много других инструментов (это довольно сложно из-за сложности этих файлов и их в значительной степени плохо документированных деталей).).Еще один инструмент, который неплохо справляется с генерацией *.vcproj - это qmake (который является хорошим инструментом менеджера конфигурации сборки, даже если вы не используете библиотеки Qt).Другая (похожая идея) - это « gyp » от Google (сокращение от «generate-your-projects», которое должно генерировать файлы *.sln / *.vcproj, но я не уверен, что оно готово к «премьер»time ".

Для всех этих инструментов рабочий процесс подразумевает:

  1. Обновление файлов данных записи;
  2. (Повторное) создание*.sln / *.vcproj файлов.
  3. Используйте сгенерированные файлы *.sln / *.vcproj в вашей среде MSVS или сборке из командной строки.

Если вы неЯ не хочу внешнего инструмента, но предпочел бы иметь какой-нибудь «плагин», который изначально работает с вашими *.sln / *.vcproj файлами, я ничего не знаю, чтобы помочь вам (и я посмотрел).Это не новая мысль: существуют некоторые инструменты для работы с этими файлами изначально (например, инструменты «переноса версий», которые некоторые люди пишут и делятся), и некоторые люди говорили о системе сборки, изначально «закрепленной» на этих файлах, какзаписываемые данные, но эти файлы представляют собой беспорядок, недокументированные и движущуюся цель в отношении версий MSVS, иплохо решите централизованный вопрос о централизованных настройках сборки с переопределением локального проекта, так что это действительно сложно сделать.(В настоящее время не существует такой системы сборки, которая "привязана" к собственным файлам MS, кроме MSVS, я не думаю.)

MSVS2010 делает создание такого плагина "более простым"чем предыдущие выпуски MSVS, но я не думаю, что такой плагин еще существует (и при этом я не думаю, что такой обобщенный плагин имеет высокую вероятность успеха, потому что то, что вы запрашиваете, не является приоритетом для MSVS, который является преимущественно IDE, а не менеджером конфигурации).Скорее всего, вам, скорее всего, придется покопаться в .NET API, чтобы написать свой собственный (нетривиальная работа и обслуживание), или попытаться опираться на Свойства проекта Visual Studio (но я не думаю, чтоэто даст вам то, что вы хотите).

Наконец, (не по теме) я пишу такой инструмент, который опирается на эвристику для автоматического создания и автоматического поддержания этих типов зависимостей проекта, и в настоящее время я пишу *.sln/ *.vcproj файлы.Он не готов к работе в «прайм-тайм», но меня будут интересовать ваши проблемы с управлением конфигурацией проекта, и я хочу поделиться этими инструментами, если они окажутся полезными для вас (это личное хобби для разработчиков на C ++, в настоящее время Windows)., но следует без особых усилий портировать на Posix).

6 голосов
/ 28 апреля 2011

Я сомневаюсь, что есть стороннее расширение, которое делает именно то, что вы хотите сделать.Однако Visual Studio 2010 имеет довольно надежный набор интерфейсов автоматизации COM, который позволяет настраивать практически любую часть IDE, включая диспетчер конфигурации, конфигурации, решения, проекты и т. Д. Вы можете использовать практически любой язык, который вы хотите, включаяC #, VB6 и C ++.Вы даже можете написать макрос в VB Script.

Вот графический обзор Объектная модель Visual Studio 2010

В частности, см .:

Интерфейс конфигурации

Интерфейс ConfigurationManager

Интерфейс конфигурации

Интерфейс Solution2

Интерфейс SolutionConfiguration2

Интерфейс SolutionBuild2

3 голосов
/ 09 июня 2016

Поскольку это то, что мне было интересно, и я не вижу каких-либо последних обновлений / ответов на этот вопрос, я хочу связать эти два расширения для Visual Studio 2015. Оба они недавно обновлены на момент написания и кажутся многообещающими.

ProjectConfigurationManager: https://visualstudiogallery.msdn.microsoft.com/cf7efe17-ae87-40fe-a1e2-f2d61907f043?SRC=VSIDE

Лучше Configuration Manager: https://visualstudiogallery.msdn.microsoft.com/d9552425-000f-468e-8b80-1c86447a5fb8

1 голос
/ 03 мая 2011

Файлы sln и vcproj на самом деле являются файлами XML.Я часто нахожу себя редактирующим их вручную в текстовом редакторе, чтобы выполнить различные операции, которые в противном случае казались бы невозможными из пользовательского интерфейса.Пользовательский интерфейс часто выполняет незавершенные операции, например, при переименовании проекта обновляются не все записи.Я обычно предпочитаю делать это самостоятельно.

0 голосов
/ 02 мая 2011

По ссылке Роджера Уиллкокса я наткнулся на блог Карлоса Кинтеро . Кажется, интересно читать. Среди прочего, он упоминает о трудностях, с которыми сталкиваются при очистке конфигураций проекта.

Если посмотреть на документацию Microsoft, похоже, что EnvDTE80 практически не изменился с VS2005.


РЕДАКТИРОВАТЬ: взглянуть на EnvDTE100 ...

0 голосов
/ 28 апреля 2011

Я не должен был делать это сам, но есть несколько примеров того, как сделать это в коде по этому адресу:

http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/5de5439a-5bd1-4a9f-aba4-b4a0e91e518e/

Однако, вам, вероятно, также следует рассмотреть этоинформация: Конфигурации сборки

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

Если вы хотите использовать его какНадстройка, которую вы можете запустить, вам, вероятно, нужно написать свою собственную, я боюсь.

...