Как я удаляю ненужные ресурсы из своего проекта?

Это может быть полезным, также: Асинхронное должностное лицо оболочки в PHP

14
задан Peter Mortensen 2 August 2010 в 18:18
поделиться

9 ответов

Я бы написал специальный инструмент для поиска в вашем исходном коде.

Если вы удалите идентификатор ресурса из файла заголовка (т. Е., Возможно, с именем resource.h), а затем перекомпилируете и не получите никаких предупреждений: это хорошо.

Вот как я бы написал приложение. Возьмите в качестве входных данных файл ресурсов (resource.h), который вы хотите изучить. Откройте файл заголовка (* .h) и проанализируйте все константы ресурсов (или, по крайней мере, те, которые вас интересуют). Сохраните их в хеш-таблице для быстрого поиска позже. Для каждого файла кода в вашем проекте найдите в тексте экземпляры каждого идентификатора вашего ресурса. Когда используется идентификатор ресурса, увеличивайте значение в хеш-таблице, в противном случае оставьте его равным нулю. В конце выгрузите все идентификаторы ресурсов, которые обнуляются в файле журнала или что-то в этом роде. Затем проверьте, действительно ли вы можете безопасно удалить указанные идентификаторы ресурса. Как только вы это сделаете, напишите другой инструмент, который удаляет указанные идентификаторы ресурса с учетом результатов вашего файла журнала.

Вы можете написать такой инструмент на perl, и он будет выполняться примерно за 0,3 секунды: но на отладку уйдет несколько дней. :) Или вы можете написать это в .NET, и это будет выполняться немного медленнее, но вам потребуется час на отладку. :)

4
ответ дан 1 December 2019 в 15:12
поделиться

Вы можете использовать сторонний плагин для Visual Studio как ReSharper . Эта надстройка проанализирует ваш код C # и укажет на неиспользуемые ресурсы. Но работает только с C #.

1
ответ дан 1 December 2019 в 15:12
поделиться

Для проектов C ++ ознакомьтесь с ResOrg от Riverblade.

«Организатор идентификатора ресурса (сокращенно ResOrg) - это надстройка для Visual C ++, разработанная для помочь преодолеть одну из самых раздражающих (и ненужных) рутинных работ по разработке / обслуживанию приложений Windows - поддержание значений идентификаторов символов ресурсов »

http://www.riverblade.co.uk/products/resorg/index.html

1
ответ дан 1 December 2019 в 15:12
поделиться

If your code contains dynamic loading of resources (e.g. via strings) at runtime, then there is no way to automatically determine which resources can be safely removed from the source. A dynamic loading statement could load any resource.

Your best bet is to start with your trimmed down version of the app, run it, and identify which resources are missing when you test it. Then add them back in and retest.

1
ответ дан 1 December 2019 в 15:12
поделиться

У меня никогда не было такого плохого. Мой метод в скомпилированных программах - использовать сценарий REXX, который имитирует GREP, ища ссылки на источник, который, как я подозреваю, не используется, удалить их из программы и посмотреть, что сломается. Я использую сценарий REXX, потому что могу предварительно отфильтровать список файлов, которые хочу найти. Это позволяет мне выполнять поиск по папкам и компьютерам.

1
ответ дан 1 December 2019 в 15:12
поделиться

Возможно, вы захотите взглянуть на инструмент Reflector (бесплатно), не путать с ReSharper (дорого). Он может показать вам, какие библиотеки DLL зависят от другой. Затем, если вы хотите, вы можете удалить DLL, на которую не ссылается что-либо еще. Будьте осторожны, если вы используете инъекцию зависимостей или отражение, которые могут нарушить ваш код без вашего ведома.

Отражатель: http://www.red-gate.com/products/reflector/ .

Эта надстройка рисует графы зависимостей сборок и графики IL: http://reflectoraddins.codeplex.com/Wiki/View.aspx?title=Graph .

1
ответ дан 1 December 2019 в 15:12
поделиться

Maybe Find Unused Resources in a .NET Solution helps here? Basically, you'll have to check which resources are used (e.g. by comprehensive code coverage checks) and remove the unused ones.

And probably you should not be afraid by using the trail-and-error approach to cleaning up.

0
ответ дан 1 December 2019 в 15:12
поделиться

В обозревателе решений щелкните правой кнопкой мыши Ссылку и выберите пункт меню Найти зависимый код .

Если он не может найти какой-либо зависимый код, вы можете удалить эту ссылку из проекта. (Операция Удалить также находится в меню, вызываемом правой кнопкой мыши.)

РЕДАКТИРОВАТЬ: Для большого проекта операция поиска зависимого кода займет времени. Так как у вас есть 2000 ресурсов и, скорее всего, значение ваше время, вероятно, не жизнеспособный вариант ....

0
ответ дан 1 December 2019 в 15:12
поделиться

Для ресурсов C ++ вы пытались щелкнуть правой кнопкой мыши проект в «Представлении ресурсов», а затем удалить те, у которых нет галочки рядом с ними? Небезопасно удалять неиспользуемые ресурсы диалогового окна, поскольку в коде они упоминаются как "перечисления" (как показано ниже).

enum { IDD = IDD_ABOUTBOX };

... однако для всех остальных это должно быть безопасно.

0
ответ дан 1 December 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: