Изменения сборки с Reflexil не имеют никакого эффекта

Я пытаюсь изменить DLL приложения Net 4.0 с Reflexil. Каталог выглядит так:

Main.exe
SomeOther.exe
Lib1.dll
Lib2.dll
Lib3.dll 
...

Теперь я пытаюсь изменить код IL в любом из этих файлов с помощью Reflector 7.5.3.8 Trail и Reflexil 1.5. Например, я удаляю весь код из метода Main() в Main.exe (основной метод, я уверен в этом), не оставляя ничего, кроме ret. После сохранения изменений эффекта пока не вижу, программа запускается как обычно.

Я предполагаю, что проблема в том, что где-то еще есть кэшированная версия этого файла. Как мне решить эту проблему?

Что мне нужно сделать, чтобы изменить код IL библиотек DLL?

1 ответ

После многих часов работы я наконец нашел проблему.

При установке программа генерировала NativeImages - пока ничего необычного. Проблема была в том, что

ngen uninstall Lib1.dll

или же

ngen uninstall Main.exe

не удалить родное изображение. Зачем? Я понятия не имел... я пытался

ngen display Lib1.dll

и он сказал, что нет такой сборки. По стечению обстоятельств я попытался перечислить весь Native Image Cache с помощью поиска:

ngen display | find "Lib1"

который показал мне, что он все еще там (почему это?!). На этот раз я попытался удалить его, не удаляя Lib1.dll, а выполнив

ngen uninstall Lib1  (without dll)

который работал как шарм и сказал мне проблему. Он не удалил его, потому что другие сборки в Native Image Cache все еще зависели от него. Сначала мне пришлось удалить все зависимые сборки, после чего он был удален автоматически.

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

Другие вопросы по тегам