Подтвердить что ты не робот

Есть ли альтернативный/плагин для менеджера конфигурации Visual Studio?

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

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

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

4b9b3361

Ответ 1

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

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

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

От редакции: Большой вопрос, многие люди пострадали от этого (как отмечено "upvotes" на ваш вопрос), и всем нам понравится хороший ответ.

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

Согласовано - встроенный инструмент совершенно бесполезен. Очень сложно поддерживать множество проектов и решений с различными конфигурациями и наборами зависимостей, особенно для разных целевых типов/платформ. Он имеет идиосинкразии, такие как использование нескольких GUID для проектов, наборов файлов и типов проектов, которые хранятся в реестре и доступны из *.sln и *.vcproj. Инструмент попытается "исцелить" себя этими уникальными идентификаторами, не выполняя ваши изменения и игнорируя некоторые из своих собственных значений, чтобы "восстановить" соединения между проектами/решениями. Это приводит к большому количеству "рывок" в вашем реестре и файлах конфигурации, ненужным изменениям в файлах, если вы проверяете их в своей системе контроля версий и сценариях, где многие части файла будут "проигнорированы", даже хотя вы (правильно) внесли эти изменения. Некоторые данные, такие как "имя проекта" и "имя конфигурации проекта" и "название платформы проекта", иногда являются избыточными, а иногда и нет. Из-за GUID этот тип "внешнего/ручного обслуживания" очень упрощает для вашего проекта/решения "показывать" ссылку на правильный проект (по имени), но проект WRONG (как однозначно идентифицированный GUID, который был разрешен путем ссылки в реестре). И есть более чем один способ указать одно и то же в этих файлах, что приведет к путанице (тем более, что онтология файла *.sln/*.vcproj не является хорошо документированной и вряд ли будет хорошо документирована в будущем).

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

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

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

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

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

Интерфейс ConfigurationManager

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

Интерфейс Solution2

Интерфейс SolutionConfiguration2

Интерфейс SolutionBuild2

Ответ 3

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

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

Улучшенный менеджер конфигурации: https://visualstudiogallery.msdn.microsoft.com/d9552425-000f-468e-8b80-1c86447a5fb8

Ответ 4

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

Ответ 5

Мне не приходилось делать это самостоятельно, но есть примеры сделать это в коде по этому URL-адресу:

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

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

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

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

Ответ 6

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

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


EDIT: взгляните на EnvDTE100...