У нас есть разные версии сборок со строгими именами, и в app.exe.config нет перенаправлений / путей привязки к ним. Например, MyDll (1.0.0.0_null_neutral) и MyDll (2.0.0.0_null_neutral). Относительно app.exe эти сборки хранятся в LAC \ MyDll_1.0.0.0_null_neutral и LAC \ MyDll_2.0.0.0_null_neutral.
Насколько я понимаю, поскольку сборки MyDll не имеют строгих имен, среда выполнения .NET не делает различий между различными версиями MyDll. Поэтому, если MyDll 1.0.0.0 уже были загружены в память и был выполнен некоторый код, созданный для MyDll 2.0.0.0, среда выполнения .NET не будет загружать MyDll 2.0.0.0.
Однако, когда я подключился к процессу с VS2008 и посмотрел окно модулей, я заметил, что MyDll 1.0.0.0 и MyDll 2.0.0.0 были загружены из папки LAC.
Кажется, где-то есть пробел в моем понимании. Может кто-нибудь указать на это?
EDIT:
Спасибо за ответы до сих пор. Да, я пропустил этот бит. Исполняемый файл прослушивает событие AssemblyResolve и обрабатывает его, просматривая LAC.
Я был почти уверен, что видел некоторую документацию MSDN до того, как указанные версии игнорировались, если сборка не имеет строгого имени. Я посмотрю, смогу ли я выкопать это.