Я пишу инструмент .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) можно распространять.Но есть большая разница между (а) одним компактным 100 КБ автономным EXE-файлом и (б) полнофункциональным установочным пакетом, который устанавливает целую кучу предварительных условий.
Отказ от ответственности 2: Я в курсеиз следующих дубликатов:
Однако предоставленные решения не подходят.В вопросе 1 разработчик контролирует библиотеку DLL, на которую ссылаются (а я нет);в вопросе 2 разработчик имеет контроль над целевыми системами (чего я тоже не имею).