Можно ли удалить неиспользуемый код / сборки в.NET?
В моем приложении есть библиотека управления, которая немного велика для типа приложения, которое я разрабатываю. Библиотека занимает более 2 МБ, и я почти не использую ее функциональность, я бы сказал, что я использую от 5% до 10% всей ее функциональности.
Есть ли способ удалить код, который мое приложение никогда не использует из библиотеки?
PS: Библиотека не разработана мной, и она не с открытым исходным кодом (хотя вы можете купить код).
РЕДАКТИРОВАТЬ: Я опубликовал это, потому что я думал, что это может быть достигнуто с помощью ILMerge, это то, что кто-то сказал мне в прошлом... Я пытался использовать ILMerge, но не работал, и я не уверен, что я использую это правильно...
6 ответов
Есть продукт под названием SmartAssembly, который делает это. Это немного дорого, по крайней мере, для меня.
Как предостережение, убедитесь, что то, что вы делаете, допустимо в соответствии с лицензионным соглашением компании-поставщика, которая создала библиотеку.
Мой босс работал с продуктом обфускации, который делал это, принося код, который использовался в комбинированную сборку. Не могу вспомнить, как он назывался, возможно, это был DotNet Reactor (мы использовали несколько разных продуктов, прежде чем остановиться на одном).
Если это открытый исходный код, вы можете взглянуть на код и выборочно выбрать то, что вам нужно, и создать отдельную сборку.
Если это не открытый исходный код, вы можете использовать Reflector в сборке и выжать код, который вы хотите сохранить (и все его зависимости), а затем перестроить его в своей собственной сборке. Я не уверен, насколько это законно. Это, вероятно, зависит от лицензии вашей библиотеки.
2Mb не большой.
Если вы чувствуете, что это слишком много, и, поскольку это ваш код, вам следует рассмотреть возможность его реорганизации в отдельные сборки, по-прежнему используя те же пространства имен. Таким образом, ваш код может ссылаться только на те сборки, которые ему нужны.
Вы можете сделать это, но нужно немного программирования. взгляните на моно-проект cecil, вы можете открыть сборку, удалить ненужные типы и сохранить их. программирование связано с определением того, какие типы не используются (тип A использует тип B, поэтому, если вы используете тип A, вы должны сохранить тип B)...