Я пишу инструмент .NET, для которого требуется библиотека SMO SQL Server. Меня не волнует, если это версия с Server 2005 (9.0), 2008 (10.0) или 2008 R2 (вероятно 10.5, не проверял). Библиотека SMO устанавливается вместе с SQL Server, поэтому я могу с уверенностью предположить, что в любой системе с установленным SQL Server также доступна некоторая версия библиотеки SMO.
К сожалению, библиотеки SMO имеют строгое имя: если я добавлю ссылка на SMO 9.0 в моем проекте, он не сработает ( FileNotFoundException
), если в системе клиента присутствует только SMO 10.0, и наоборот.
Есть ли способ сообщить компилятору, что мне подходит любая версия библиотеки? Или мне действительно нужно распространять 3 идентичные версии моего инструмента, каждая из которых скомпилирована для другой версии SMO?
Отказ от ответственности: Я знаю, что библиотеки SMO (и библиотеки, необходимые для библиотек SMO) могут быть распространены. Но есть большая разница между (а) одним тонким автономным EXE размером 100 КБ и (б) полнофункциональным установочным пакетом, который устанавливает целый набор необходимых компонентов.
Отказ от ответственности 2: мне известны следующие дубликаты:
Однако предлагаемые решения не подходят. В вопросе 1 разработчик имеет контроль над указанной DLL (чего у меня нет); в вопросе 2 разработчик контролирует целевые системы (чего я тоже не имею).