2015-08-19 4 views
0

Возможно ли иметь несколько версий одной и той же сильноименованной сборки, загруженной в один и тот же процесс? Существует много аналогичных вопросов, но ответы на них, похоже, не работают.Ссылка на несколько версий одной и той же сборки

Причина, по которой я прошу, заключается в том, что мы должны использовать newer version (4.0.0.0) из SomeAssembly.dll, но некоторые ссылочные dll зависят от older version (3.0.0.0) этой DLL.

Я попытался с помощью ниже сборкой привязки конфигурации переназначения, но в итоге с компиляции ошибок, потому что мои сборки зависят от более новой версии библиотеки DLL и эта конфигурация полностью перекрывая связь и используются только version 3.0.0.0. Я ожидаю, что это провалится во время выполнения. Здесь используется компилятор с помощью конфигурационных файлов?

Version 4.0.0.0 упоминается в проекте как обычно. Version 3.0.0.0 копируется на выход проекта.

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="SomeAssembly" publicKeyToken="123" culture="neutral" /> 
     <bindingRedirect oldVersion="3.0.0.0" newVersion="3.0.0.0" /> 
     <codeBase version="4.0.0.0" href="bin/SomeAssembly.dll" /> 
     <codeBase version="3.0.0.0" href="SomeAssembly.dll" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
+0

У вас есть те же пространства имен и имена классов в вашей новой версии библиотеки? –

+0

@ThomasWeller, да – Kimi

ответ

2

Попробуйте удалить линию

<bindingRedirect oldVersion="3.0.0.0" newVersion="3.0.0.0" /> 

и положить сборки в отдельную папку внутри папки BIN. например

<dependentAssembly> 
    <assemblyIdentity name="SomeAssembly" publicKeyToken="123" culture="neutral" /> 
    <codeBase version="4.0.0.0" href="V4\SomeAssembly.dll" /> 
    <codeBase version="3.0.0.0" href="V3\SomeAssembly.dll" /> 
    </dependentAssembly> 
Смежные вопросы