Как бороться с беспорядком зависимости внутри решения VS? - PullRequest
0 голосов
/ 09 сентября 2010

У меня есть решение с ~ 70 проектами, с множеством зависимостей между ними (я на самом деле сделал график, у него было ~ 300 ребер).Я знаю, что некоторые зависимости не нужны.Мне бы хотелось, чтобы при сборке использовалось несколько ядер, и я полагаю, что эти ненужные зависимости могут повлиять на то, насколько параллельной может стать сборка.

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

Проекты - C ++, C ++ / CLI и C #.Некоторые зависимости задаются вручную (с помощью окна Project Dependencies в VS), некоторые - как ссылки на управляемые сборки (что может быть необязательным), некоторые - как статически / динамически связанные библиотеки (что также может быть необязательным).

1 Ответ

1 голос
/ 09 сентября 2010

Для проектов C # вы можете использовать Ildasm.exe. Посмотрите на манифест для директив .assembly. Компилятор C # автоматически удаляет те, которые не используются. Если вы видите ссылку в узле «Ссылки» проекта, которая не имеет соответствующей директивы .assembly, вы можете удалить ее.

Не уверен, что компилятор C ++ / CLI также делает это. Попробуйте.

C ++ намного сложнее, потому что инструменты сборки могут генерировать файлы за пределами .lib. Как библиотека типов, созданная из IDL и используемая управляемым кодом. Или файл .h из IDL. Или файл .res из файла .rc. Также вероятно, что есть зависимость, которую еще никто не нашел. Тип, который нарушает сборку, когда вы используете машину с большим количеством ядер.

Вы можете узнать, используется ли static или import .lib, проанализировав выходные данные компоновщика с параметром / VERBOSE. В (большом) выводе будет строка, когда она использует символ из .lib. Удалите отсутствующие зависимости проектов, изменив порядок проектов в файле .sln и выполнив чистую сборку, заставив использовать только один ЦП.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...