2009-05-12 2 views
3

У меня есть библиотека управления в моем приложении, которая немного больше подходит для типа приложения, которое я разрабатываю. В библиотеке больше 2 Мб, и я почти не использую ее функциональность, я бы сказал, что я использую от 5% до 10% всей ее функциональности.Можно ли удалить неиспользуемые коды/сборки в .NET?

Есть ли способ удалить код, который мое приложение никогда не использует из библиотеки?

P.S: Библиотека не разработана мной, и она не является открытым исходным кодом (вы можете купить код, хотя).

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

+0

Просьба считать https://github.com/glueckkanja/ILStrip – quetzalcoatl

ответ

0

2Mb не большой.

Если вы чувствуете, что это слишком много, и поскольку это ваш код, вы должны рассмотреть возможность его реорганизации в отдельные сборки, все еще используя те же пространства имен. Таким образом, ваш код может ссылаться только на необходимые ему сборки.

+0

Слишком много, когда в приложении должно быть всего несколько килобайт, а еще 2 МБ дополнительного кода. И код библиотеки не мой. –

+0

2Mb не большой на любом современном компьютере с объемом памяти не менее 256 МБ, учитывая, что это _virtual_ memory. Это не займет места, если вы его не трогаете. –

0

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

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

+0

Это не open-source (см. Первое сообщение), и даже если бы это было так, это было бы слишком много работы ... –

+0

К сожалению, ILMerge делает абсолютно противоположное (чтобы сборки имели больше кода ...) –

0

Вы можете сделать это, но вам нужно некоторое программирование. посмотрите проект mono cecil, вы можете открыть сборку, удалить ненужные типы и сохранить ее. программирование связано с определением того, какие типы не используются (тип A использует тип B, поэтому, если вы используете тип A, вы должны сохранить тип B) ...

+0

Слишком много работы, Я искал что-то автоматическое ... –

1

Мой босс работал с продуктом обфускации, который сделал это, путем приведения кода, который использовался в объединенной сборке. Не помню, как это называлось, возможно, это был DotNet Reactor (мы использовали несколько разных продуктов, прежде чем устроиться на одном).

+0

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

+0

Такая вещь, вероятно, стоит денег для такой функции, нет? Это небольшое неудобство для меня, я не собираюсь платить из-за этого ... –

1

Этот продукт называется SmartAssembly, который делает это. Это немного дорого, по крайней мере для меня.

1

Как предостережение, убедитесь, что то, что вы делаете, разрешено в соответствии с лицензионным соглашением венгерской компании, которая создала библиотеку.

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

  • Нет связанных вопросов^_^