Согласно эта статья * Перебазирование 1002 * не требуется для сборок .NET из-за JIT-компиляции кода. В статье говорится:
"В JIT-скомпилированном коде нет проблемы перебазирования, поскольку адреса генерируются во время выполнения в зависимости от места размещения кода в памяти. Кроме того, на MSIL редко влияют пропуски базовых адресов, поскольку ссылки на MSIL являются токенами. на основе адреса, а не на основе адреса. Таким образом, когда используется JIT-компилятор, система устойчива к коллизиям базовых адресов. "
Однако я заметил, что VS2008 назначает базовый адрес по умолчанию 0x0400000 всем сборкам (свойства проекта> build> advanced), и если я выполняю listdlls /r
для своего процесса, все мои сборки .NET фактически перебазируются по умолчанию.
Если я сам присваиваю адреса, перебазировка не производится.
Мой вопрос: что перебазируется в этом случае и почему?
РЕДАКТИРОВАТЬ: я должен добавить, что я не говорю о сборках NGen.