Dotpeek — Изменяют Файлы DLL — Использование, измененное (повторно собранный) в проекте
Я уже сделал процесс — Импортирующий dll файл в Ассамблее Dotpeek и Exporting к Проекту, Теперь я могу изменить dll файл в ПРОТИВ 2015, но как повторно собрать проект, и использование повторно собрало dll файл снова в существующем проекте.. Я попробовал строительным проектом в против 2015, но это показывает много ошибок времени компиляции, Пожалуйста, помогите
Скорее, к сожалению, нет никакого детранслятора, который предоставит код, который собирает для собрания, содержащего больше чем несколько классов.
Таким образом, вы могли бы хотеть попробовать JustDecompile + Reflexil, чтобы сделать ваш редактировать. Преимущество этого подхода состоит в том, что только часть, которую вы редактируете, будет изменена, и остальная часть собрания останется тем же самым как оригинальным.
Скорее, к сожалению, нет никакого детранслятора, который предоставит код, который собирает для собрания, содержащего больше чем несколько классов.
Таким образом, вы могли бы хотеть попробовать JustDecompile + Reflexil, чтобы сделать ваш редактировать. Преимущество этого подхода состоит в том, что только часть, которую вы редактируете, будет изменена, и остальная часть собрания останется тем же самым как оригинальным.
dotPeek — бесплатный декомпилятор от JetBrains
![]()
Основные достоинства dotPeek – это качество декомпиляции, а также простота загрузки и управления сборками .NET. Кроме того, dotPeek предлагает многочисленные функции поиска, навигации и работы с кодом, заимствованные у ReSharper.
- Декомпилировать сборки .Net версий 1–4 в C#
- Делать навигацию по коду (такую же как и в ReSharper)
- Делать подсветку синтаксиса, фолдинг, и в целом предоставлять experience, аналогичный Visual Studio
- Управлять программой с помощью клавиатуры, с шорткатами, аналогичными ReSharper’у
При этом dotPeek не умеет работать с ресурсными файлами в привычном виде. Т.е. файлы открываются в виде исходного кода и, например, извлечь картинку или иконку из сборки достаточно сложно.
Загрузка и анализ сборок по скорости примерно также как в iLSpy, т.е. намного дольше чем в DnSpy , но при этом качество полученного кода получается практически на уровне первоначального проекта.
Все элементы, начиная он названия методов, свойств и переменных, заканчивая комментариями могут быть восстановлены в первоначальном виде.
![]()
Если вам нужен доступ к первоисточнику кода на C#, то можно рекомендовать использовать dotPeek .
JustDecompile / dotPeek покажите мне исходный код сборки. Как я могу изменить его?
Я могу видеть исходный код с помощью декомпиляторов, но как мне изменить исходный код и повторно скомпилировать .DLL после этого?
задан 23 июн ’12, 21:06
2 ответы
Во-первых, вы не видите исходный код; вы видите реконструированный исходный код.
Если вы заинтересованы в программном изменении сборки, взгляните на эти проекты: Метаданные общей инфраструктуры компилятора (CCI) и ТПП АСТ проектов на CodePlex. Именно для этого они и нужны.
«[CCI] позволяет приложениям эффективно анализировать или изменять сборки, модули и файлы отладки (PDB) .NET». — с сайта проекта
IIRC, метаданные CCI работают на довольно низком уровне абстракции. Если вы хотите изменить или вставить код с ним, вам придется иметь дело с промежуточным языком (IL). CCI AST обеспечивает абстракции более высокого уровня (абстрактные синтаксические деревья).
(Кстати, я полагаю, что CCI не позволит вам вмешиваться в сборки со строгими именами (подписанные), поскольку это противоречит их назначению.)
Mono.Cecil. Он был разработан для Mono, но работает и на .NET:
«Проще говоря, с помощью Cecil вы можете загружать существующие управляемые сборки, просматривать все содержащиеся в них типы, изменять их на лету и сохранять измененную сборку обратно на диск». — с сайта проекта
Кстати, здесь есть вопрос о переполнении стека, который запрашивает сравнение двух.
Другие связанные библиотеки/фреймворки:
Рослин. Этот проект фокусируется на представлении исходного кода в виде абстрактных деревьев синтаксиса/анализа и позволяет вам, например, выполнять анализ исходного кода и манипулировать им. Также предполагается, что он сможет скомпилировать исходный код для вас. Тем не менее, Рослин не специализируется на сборочных манипуляциях. (Подводя итог, вы можете думать о Roslyn как о смеси System.CodeDom и System.Linq.Expressions, но гораздо более мощной, чем любая из них.)
Кевин Монтроуз написал IL-генерирующую библиотеку под названием Sigil который является «отказоустойчивым вспомогательным средством проверки для DynamicMethod и ILGenerator».
Вы можете использовать ildasm (дизассемблер IL) и ilasm (ассемблер IL), чтобы сделать что-то, называемое «циклическим обходом» (читайте об этом, например, в блоге Майка Столла):
Круговой обмен — это когда вы декомпилируете приложение (возможно, через ILDasm), потенциально редактируете IL, а затем перекомпилируете его (возможно, через ILAsm). Это основа для перезаписи сборки [. ].