У меня пока нет ответа на мой вопрос, но я буду использовать этот ответ, чтобы регистрировать крошки, найденные при поиске решения.
Я нашел несколько связанный вопрос по StackOverflow:
Скомпилируйте независимую от версии версию .DLL в .NET (с помощью манифестов?)
Однако у меня нет возможности изменять базовый продукт, поэтому ответ мне не подходит.
Изменено:
Я написал кому-то намного умнее меня, и вот ответ:
Когда вы ссылаетесь на сборку со строгим именем, по умолчанию Visual Studio добавляет полную ссылку на указанную сборку. Это означает, что оно включает название сборки, точную версию, культуру и маркер открытого ключа. Если какая-либо из этой информации не соответствует описанному, генерируется исключение.
Удаление строгих имен наших сборок просто не вариант. Я не буду вдаваться в подробности, почему, но вы можете сделать некоторые исследования в MSDN.
Итак, у вас есть два варианта обхода сборки для каждой версии сборок, на которые вы ссылаетесь.
- Вы можете сделать частичные ссылки. Смотрите эту статью: http://msdn.microsoft.com/en-us/library/0a7zy9z5(VS.71).aspx.
- Вы можете объявить совместимые версии с перенаправлением привязки в web.config. Смотрите эту статью: http://msdn.microsoft.com/en-us/library/433ysdt1.aspx.
В общем, второй подход рекомендуется, потому что:
1. Вы не можете использовать частичную ссылку на сборки в глобальном кэше сборок, то есть ваш элемент управления будет выдавать то же исключение, если сборки находятся в GAC.
2. Вы явно указываете совместимые версии.