Ответ 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 с небольшим усилием).