Как стать автором
Обновить

Комментарии 12

>> Немного знающие люди
Ну вот, обидели всех, кто знает про ILMerge :)

Хардкод на dll не понравился — не факт, что расширение будет таким, ну и то, что ориентируетесь на private assemblies. Но тут верно — поле для деятельности.

А как насчет Evidence и permissions для таких сборок?
Я код привел для наглядности(так имхо проще и быстрее показать идею), и всё-таки надеюсь что прямо отсюда его не будут копипастить, т.к. многое не учтено :)

Поясните вопрос насчет Evidence и permissions, я не совсем понял…
Один из составных аттрибутов Evidence для определения Permissions Sets — то, откуда пришла сборка.
Evidence основано на месте происхождения или идентификации: зона поступления, URL, X.509 сертификат, строгое имя assembly, цифровая подпись ( кастомные механизмы реализации доказательства)

Какой зоной (Security Zone) маркируются приватные неподписанные сборки, загруженные при помощи LoadFromStream из вашего примера?
Ну вообще можно использовать синтаксис
Assembly.Load(byte[] assembly, byte[] symbolStore, Evidence e) и явно указывать свидетельство.

В примере который в статье(если я не ошибаюсь) — свидетельство комбинируется: Zone, Url и Site берутся из ExecutingAssembly, а Hash и StrongName из загружаемой сборки.
Так же в данном случае вряд ли будут работать обфусцированные сборки
Был бы признателен если бы пояснили почему. Я не проверял, но я не знаю почему бы им не работать.
Насколько я помню Assembly.Load выводит ошибку, точно не помню какую, но происходит это из-за того что фреймворк не может получить прямой доступ к il коду. Хотя возможно это было только в моем случае
Могу предположить что у вас не только обфусцированная сборка была, но ещё и упакованная. В таких случаях — да, вероятно могут быть проблемы.
Возможно, было давно, точно не помню, но я использовал {smartassembly} и были включены почти все функции
Есть консольная утилита NETZ, которая заворачивает ваши сборки в одну автоматически.
К сожалению, с WPF она работает некорректно, но зато подходит для консольных и WinForms приложений.
А для WPF можете попробовать мою реализацию аналогичной утилиты NBox nbox.codeplex.com
Не так давно сам заворачивал довольно большую WPF-программу (порядка 15-20 сборок в зависимостях).
Спасибо, попробую :) Всегда интересно сравнить свои велосипеды с чужими :)
:) если будут вопросы — не стесняйтесь )
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации