Загрузить в приложение две версии одной и той же сборки
От: alexroot  
Дата: 13.11.09 15:21
Оценка:
Подскажите, можно ли загрузить разные версии приватных сборок одновременно в одном приложения. Две различные dll этого приложения используют эти разные версии.
Если положить версии в GAC проблем не возникает, но нужно обойтись без GAC.

Версии лежат в разных каталогах, одна (старая версия) лежит в базовом каталоге приложения, новая в подкаталоге.
<probing privatePath> прописан в .config, но при попытке обратиться к новой версии возникает ошибка, то есть сначала грузиться старая из базового каталога.

Пытались дописать в .config:
<dependentAssembly>
<assemblyIdentity version="9.1.6.0" name="DevExpress.Data.v9.1.dll"
publicKeyToken="b88d1754d700e49a"
culture="neutral" />
<codeBase version="9.1.6.0" href="ReportProgram\DevExpress.Data.v9.1.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity version="9.1.6.0" name="DevExpress.Utils.v9.1.dll"
publicKeyToken="b88d1754d700e49a"
culture="neutral" />
<codeBase version="9.1.6.0" href="ReportProgram\DevExpress.Utils.v9.1.dll"/>
</dependentAssembly>

Но все равно почему-то загружается старая версия (9.1.2.0)
тса
Re: Загрузить в приложение две версии одной и той же сборки
От: samius Япония http://sams-tricks.blogspot.com
Дата: 13.11.09 15:34
Оценка:
Здравствуйте, alexroot, Вы писали:

A>Подскажите, можно ли загрузить разные версии приватных сборок одновременно в одном приложения. Две различные dll этого приложения используют эти разные версии.

Да, можно. Но только в разные AppDomain-ы.

A>Если положить версии в GAC проблем не возникает, но нужно обойтись без GAC.

Без проблем.

A>Версии лежат в разных каталогах, одна (старая версия) лежит в базовом каталоге приложения, новая в подкаталоге.

A><probing privatePath> прописан в .config, но при попытке обратиться к новой версии возникает ошибка, то есть сначала грузиться старая из базового каталога.
Либо второй домен создавать так, чтобы его baseDir был нацелен на каталог, где лежит другая версия сборки, либо использовать AppDomain.AssemblyResolve, но тогда в baseDir не должно быть ни одной версии сборки, чтобы они не цеплялись автоматом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.