В соответствии с эта статья rebasing не требуется для сборников .NET из-за компиляции кода JIT. В статье говорится:
"JIT-скомпилированный код не имеет проблемы с перезагрузкой, поскольку адреса генерируются во время выполнения на основе того, где код помещается в память. Кроме того, MSIL редко затрагивается промахами базового адреса, поскольку ссылки MSIL основаны на токенах, а не на основе адресов. Таким образом, когда используется JIT-компилятор, система устойчива к базовым адресным коллизиям".
Тем не менее, я заметил, что VS2008 назначает базовый адрес по умолчанию 0x0400000 для всех сборок (свойства проектa > сборкa > расширенный), и если я выполняюlistdlls /r
для моего процесса, все мои сборки .NET фактически переустанавливаются по умолчанию.
Если я сам назначаю адреса, никаких перезагрузок не выполняется.
Мой вопрос: что в этом случае происходит и почему?
EDIT: Я должен добавить, что я не говорю о сборках NGen.