2009-07-25 2 views
4

Я пытаюсь использовать PDF-библиотеку ITextSharp в моем проекте. У ITextSharp есть так много функций, я не использую даже 5% от него. Мне просто интересно, почему я должен отправить полный DLL-файл, когда я использую только 5% его.. Библиотека библиотеки (dll)

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

+0

Я ищу автоматизированный способ. Я ожидаю, что компилятор/инструмент должен автоматически удалить функцию «foo», поскольку она не упоминается нигде в проекте. (позволяет предположить, что выбор не используется). – Palani

+0

Вы пытаетесь оптимизировать производительность, память или просто размер установки? Удаление кода, который вы не вызываете, не поможет первым двум. – JohnFx

ответ

1

Без изменения исходного кода и создания собственного .dll нет никакого способа не отправлять всю вещь. Кроме того, если вы хотите возглавить маршрут создания собственной измененной DLL, помните о любых возможных проблемах с лицензированием (я не знаю, есть ли они, но это, безусловно, то, о чем вы должны знать). И, наконец, я бы добавил, я не знаю, насколько велика iTextSharp .dll, но действительно спросите себя, не имеет ли в то время большого количества занимаемого места.

2
  1. Нет никакой пользы от статической связи с .NET dll.
  2. Нелегко судить, что вы используете только 5% библиотеки, библиотека может использовать в себе столько внутреннего кода, чтобы делать много мелких мелочей, которые не могут быть замечены невооруженным глазом.
  3. Однако iTextSharp является открытым исходным кодом, вы можете создать полосатую версию iTextSharp для отправки с вашим проектом.
  4. Кстати iTextSharp меньше по сравнению с предыдущими dll, необходимыми для не .net дней.
+0

Я прошу различить по пункту 1, поскольку один файл имеет ряд преимуществ. – BCS

0

В этом случае лучший выбор - это сайт, на котором вы загрузили код.

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

Я лично не буду перекомпилировать источник, если нет ошибки, которая должна быть исправлена, и вы не можете дождаться новой версии. Время, затрачиваемое на изменения, теряется в вашем основном проекте (тот, за который вам платят).

1

Если вы хотите уменьшить размер, у вас есть два варианта: обфускатор или компрессор сборки.

Я не использовал какой-либо obfuscator для .Net только для Java, поэтому я не могу рекомендовать вас, но они делают то, что вы притворяетесь: удалите неиспользуемые методы и классы.

Или вы можете создать один сжатый исполняемый файл со всеми необходимыми ассемблерами, которые автоматически распаковываются при запуске, как популярные Aspack и UPX для оконных исполняемых файлов http://en.wikipedia.org/wiki/Executable_compression. Я пробовал .NetZ и был доволен результатами.

3

Отказ от ответственности: Я работаю в компании, чей продукт я собираюсь упомянуть. Я знаю, что другие инструменты могут это сделать, но у меня есть только прямой опыт работы с этим.

Нет необходимости изменять какой-либо источник ITextSharp или выполнять свою собственную сборку. Вы можете достичь всего, что вам нужно, только с помощью сборок в каталоге bin.

Вы можете использовать Dotfuscator (опция удаления) для выполнения статического анализа всего вашего приложения и вывода сборки, содержащей только код, который фактически используется в вашем приложении. Кроме того, вы можете использовать функцию связывания, чтобы связать DLL с вашим exe, чтобы вы отправляли только один файл клиенту.Это может привести к значительно меньшему охвату приложений. Вы можете воспользоваться всеми этими функциями, даже если вы решите не использовать функции обфускации, которые усложняют работу приложения и реверсируют его.

Dotfuscator может быть добавлен в ваш процесс сборки несколькими способами, мы интегрируем непосредственно в Visual Studio (версии с 2002 по 2010 год), чтобы вы могли просто создать свое решение, также есть задача MSBuild для использования в команде Создайте сервер (если вы не хотите, чтобы сервер сборки создавал ваше решение), а также версию командной строки для любой другой системы сборки.

Dotfuscator будет работать над любым типом сборки .NET, включая сборки Silverlight.

Эти функции доступны только в Pro версии Dotfuscator, если вы обратитесь в PreEmptive Solutions, мы можем настроить вас с бесплатной оценкой по времени, чтобы вы могли видеть, как продукт работает на вас.

Если вы просто хотите выполнить компоновку сборок, есть также утилита ILMerge от Microsoft Research, которая свяжет несколько сборок .NET в одну сборку.

+0

+1 для соответствующего и всестороннего ответа, несмотря на возможность конфликта интересов. –

+0

Потому что он указал на это, я не думаю, что есть конфликт интересов. Или многое из того, с чем можно столкнуться. – BCS

Смежные вопросы