possível substituir uma referência a um assembly com nome forte por uma referência "fraca"?

Estou escrevendo uma ferramenta .NET que requer a biblioteca SMO do SQL Server. Não me importo se é a versão do Server 2005 (9.0), 2008 (10.0) ou 2008 R2 (provavelmente 10.5, não foi verificada). A biblioteca SMO é instalada junto com o SQL Server, para que eu possa assumir com segurança que em qualquer sistema com o SQL Server instalado, algumas versões da biblioteca SMO também estão disponívei

Infelizmente, as bibliotecas SMO têm nomes fortes: se eu adicionar uma referência ao SMO 9.0 no meu projeto, ela falhará FileNotFoundException) se apenas o SMO 10.0 estiver presente no sistema do cliente e vice-vers

Existe alguma maneira de dizer ao compilador quequalque a versão da biblioteca é boa para mim? Ou tenho mesmo que distribuir 3 versões idênticas da minha ferramenta, cada uma compilada em uma versão diferente do SM

Aviso: eu sei que as bibliotecas SMO (e as bibliotecas exigidas pelas bibliotecas SMO) podem ser redistribuídas. Mas há uma grande diferença entre (a) um fino EXE autônomo de 100 KB e (b) um pacote de instalação completo que instala vários pré-requisito

Aviso 2: Estou ciente das seguintes duplicatas:

c # - você pode fazer uma referência de montagem "fraca" a uma montagem de nome fortePrecisa que um assembly C # faça referência a um assembly fortemente nomeado livremente

As soluções fornecidas não se encaixam, no entanto. Na pergunta 1, o desenvolvedor tem controle sobre a DLL referenciada (que eu não tenho); na pergunta 2, o desenvolvedor tem controle sobre os sistemas de destino (os quais eu também não).

questionAnswers(3)

yourAnswerToTheQuestion