Как сослаться на сборку с несколькими версиями

Я разрабатываю приложение Sharepoint и использую библиотеку .NET AjaxControlToolkit, мы добавляем настраиваемую страницу aspx в Sharepoint. Sharepoint 2007 работает в режиме совместимости, поэтому я внес некоторые изменения в библиотеку AJAX, чтобы заставить ее вести себя так, как должно. Проблема в том, что другая команда уже использует библиотеку AJAX, и это другая версия, чем моя. Это вызвало конфликт, потому что в папке bin могла быть только одна dll с тем же именем.

Насколько я знаю, .NET должен легко справиться с этой ситуацией. Я пробовал использовать строгое имя и GAC для решения этой проблемы, но он по-прежнему ссылается на dll в папке bin. Если в папке bin нет AjaxControlToolkit.dll, приложение просто не сможет загрузить сборку.

Если я использую полную информацию о сборке на моем подобном

<%@ 
    Register 
    tagprefix="AjaxControlToolkit"
    namespace="AjaxControlToolkit"
    assembly="AjaxControlToolkit, Version=1.0.299.18064, 
    PublicKeyToken=12345678abcdefgh, 
    Culture=neutral"
%>

Это дает мне ошибку компилятора CS0433

Может ли кто-нибудь помочь мне в использовании нескольких версий сборки в приложении?

Ответов (1)

Что ж, ссылка на ошибку компилятора CS0433 довольно ясно показывает, что основная проблема заключается не в нескольких версиях сборки, на которые ссылаются, а в конфликтах пространства имен + имени типа.

Когда вы загружаете / ссылаетесь на тип - компилятор не может решить, из какой DLL загрузить этот тип. Если Sharepoint будет загружать обе версии ваших DLL (как вы говорите, это необходимо) - эта ошибка будет появляться всегда.

Самым простым исправлением было бы изменение пространств имен в новой DLL, поскольку в ней есть ваши собственные настройки, и вы управляете кодом - также четко отметьте его.