Прошу прощения за большой объем справочной информации, но это довольно конкретный вопрос.
У меня есть проект Visual Studio 2005, который создает файл .dll. Этот проект зависит от .dll от другой компании, BigCorp, которая устанавливается вместе с программным обеспечением BigCorp.
В идеале созданная мной dll должна использоваться с любой (обратно совместимой) версией dll BigCorp. То есть, если я свяжусь с версией 4.3.2.100, моя программа все равно будет работать, если пользователь обновит приложение BigCorp так, что .dll будет версией 4.3.3.20.
Это достаточно просто в VS2005, просмотрев список ссылок на проект, выбрав .dll и убедившись, что свойство "Определенная версия" имеет значение false.
Теперь о моем собственном вопросе: можно ли указать базовую версию .dll, которая старше, чем та, которая установлена на машине, на которой строится проект? Продолжая мой предыдущий пример, на моем компьютере сборки установлена версия 4.3.3.20, но я хочу, чтобы генерируемая им .dll была совместима с установками, которые не были обновлены, и была установлена только версия 4.3.2.100.
Кажется, что VS разрешает путь к .dll и определяет версию среды выполнения на основе найденного файла. Попытка переопределить его, указав номер версии непосредственно в .vbproj или .csproj, т.е.
<Reference Include="BigCorp.Program.Component, Version=4.3.2.100, Culture=neutral, PublicKeyToken=abc123def456654fed321cba, processorArchitecture=MSIL">
не имеет никакого эффекта. Попытка зарегистрировать мою сборку на компьютере со старой версией завершается неудачей из-за старой доброй ошибки «Не удалось загрузить файл или сборку», потому что он пытается найти более новую версию библиотеки BigCorp .dll.
Возможно ли то, что я хочу делать?