Use 2 versões diferentes do mesmo controle (DLL) ao mesmo tempo na mesma máquina?
Pergunta
Estou usando o componente da parte A3rd no meu projeto e recentemente atualizei para a versão mais recente que corrigiu o bug 'a'
Infelizmente, enquanto resolveu o bug 'A', outra parte ficou completamente instável, por isso introduziu um bug 'B'.
Como 'a' e 'b' estão em contextos completamente diferentes, quero ter as duas versões do controle instaladas e usar o de um em um caso em que o bug 'b' não é relevante, e o outro no caso desse bug ' A 'não é relevante.
Obviamente, tudo até que uma correção adequada seja emitida pelo desenvolvedor de terceiros
Alguém pensou como isso pode ser feito?
R
PS A DLL precisa ser registrada no Regsvr32 ... Eu suspeito
Solução
Você pode implantar uma versão diferente de um componente com e usá -lo sem registro. Esse recurso do COM sem registro foi introduzido com o Windows XP e exige que você implante um arquivo .Manifest com as configurações apropriadas.
Dê uma olhada em Ativação sem registro de componentes com e Escape Dll Hell: Simplifique a implantação de aplicativos com clickonce e registro sem registro.
Outras dicas
Você só pode registrar uma composição do mesmo tipo em sua máquina ... é por isso que o GAC é introduzido pelo .NET
Se o componente de terceiros for um componente COM, você estará no caminho certo, precisará registrá -lo duas vezes usando nomes/GUIDs diferentes.
EDIT: Veja a resposta DIVO sobre o registro de múltiplos COM ... depois do XP, você pode fazer isso agora ...
Mas antes disso, a única maneira de fazer isso (sem o código -fonte e recompilar uma nova DLL com diferentes GUIDs de registro) era modificar manualmente a biblioteca de tipos e substituir os GUIDs existentes por novos. Isso seria extremamente difícil. (Pode existir uma ferramenta para fazer isso, mas se houver, não conheço) a biblioteca de tipos, a propósito, pode ser incorporada na própria DLL, ou pode estar em um arquivo *.tlb separado (comum para componentes VB6)
Se, otoh, o componente for um componente de código gerenciado, o registro só poderá ser necessário para a integração no Visual Studio, e será suficiente apenas copiar a DLL na pasta de aplicativos para o executável em que você está usando ...