Создать решение с зависимостями для построения VS 2010 с сотнями проектов - PullRequest
3 голосов
/ 11 мая 2011

У нас есть несколько сотен файлов Visual Studio Project, которые мне нужно собрать в решение для сборки. В настоящее время для этого у нас есть собственный скрипт ruby, который использует rake. Но он хрупок и пропускает только несколько визуальных студийных макросов ($ (TargetDir), $ (TargetName) и т. Д.), И в остальных случаях терпит неудачу. Плюс ко всему грамматика Ruby натирает меня как Perl: Неправильный путь.

Так что мой вопрос в том, что, учитывая каталог, есть ли инструмент, который будет рекурсивно находить все файлы .vcxproj и .csproj и генерировать файл решения с зависимостями? Когда я говорю «с зависимостями», это означает, что некоторые проекты нужно строить раньше других. Я нашел здесь несколько других сообщений о переполнении стека, которые указывают на инструмент, который генерирует файлы решения: но он не генерирует зависимости. Поэтому без зависимостей любой инструмент создания решения совершенно бесполезен. Кто-нибудь знает что-нибудь, что сделает это?

Если это не файл решения, знает ли кто-нибудь что-то, что просто выдаст список зависимостей?

P.S. И прежде, чем кто-либо спросит: создание файла решения вручную полностью исключено. У нас просто слишком много файлов проекта.

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Так что мой вопрос, учитывая каталог есть ли инструмент, который будет рекурсивно найти все .vcxproj и .csproj файлы и создать файл решения с зависимостями?

номер

То, что вы просите, очень разумно; Ваш подход к проблеме довольно рациональный. К сожалению, инструменты не поспевают за вами. (У нас была такая же проблема.)

Вам придется написать это самостоятельно или настроить инструменты. Это то, что мы сделали. Успешные подходы, которые я видел, включают:

  1. Генерация *.vcproj/*.sln из «определения эталонного проекта», используя такие инструменты, как CMake, QMake, Scons или Gyp. Наша основная система в настоящее время сидит на Scons, с нашим собственным Python код для навигации по этим зависимостям, генерировать решения на основе проектов (паутинные зависимости). От по умолчанию мы генерируем «завершено» решение для каждого проекта (в том числе все необходимые вспомогательные проекты), плюс «Мастер всех проектов» решение. Это работает очень хорошо. Но, это была обычная работа, которая потребовала усилий, и мы расширили Scons несколько опишите наши проекты (но мы просто положиться на Scons поколение *.sln и *.vcproj).

  2. Напишите пользовательский инструмент, чтобы "найти" эти зависимости парсинг всех файлов *.vcproj в ваше рабочее пространство. Это работа, но можно сделать. Эти файлы могут быть «хитрыми» для навигации, но вам может пригодиться «достаточно хорошее» решение, которое использует GUID в качестве хеш-ключей для генерации этих зависимостей.

Я полностью согласен с вами: этот тип вещей (зависимости от проектов) очень сложно поддерживать вручную, когда вы выходите за рамки «простого» (например, многие десятки проектов, да, у нас также есть сотни).

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

Поскольку я забочусь о вашем здравомыслии и вашей вечной душе, пожалуйста, ПОЖАЛУЙСТА, не пытайтесь написать ваше собственное решение в MSBuild.

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

С другой стороны, наличие сотен проектов VS - плохая идея, это убьет производительность VS, см. две книги :

...