É possível carregar duas versões do tempo de execução do .NET no mesmo processo?

Existem dois cenários que preciso esclarecer:

  1. Um executável compilado com o .NET 3.5 precisa usar uma biblioteca compilada com o .NET 1.1 e a biblioteca deve ser executada no tempo de execução 1.1.

  2. Um executável compilado com o .NET 1.1 precisa usar uma biblioteca compilada com o .NET 3.5.

Não consigo encontrar uma fonte confiável afirmando que não é possível carregar duas versões do runtime do .NET e a documentação da Microsoft é muito vaga sobre esse assunto.

5

3 Respostas

No -- you can't load the CLR into the same process twice. See the documentation for CLR Hosting

Como nas versões anteriores do   tempo de execução, o CorBindToRuntimeEx   função inicializa o tempo de execução. Você   pode escolher qual versão do   tempo de execução para carregar, mas um processo pode    hospeda apenas uma versão .

7
adicionado
Você pode usar a API de hospedagem .Net 4.0 em vez da API de hospedagem .Net 2.0 ...
adicionado o autor Len Holgate, fonte

O .NET 4 promete permitir a hospedagem de diferentes versões do CLR no mesmo processo por meio de Lado a lado em processo .

3
adicionado

Para o caso nº 1, existe algum motivo específico (por exemplo, quebra de alterações) que requer que a biblioteca seja hospedada no tempo de execução 1.1? É possível expor a biblioteca através de um serviço da Web 1.1 compilado e, em vez disso, o ponto executável do serviço da web? (Ou alguma outra técnica de remoting, para obter a biblioteca em seu próprio processo?)

Para o caso 2, é possível recompilar o aplicativo 1.1 em 2.0/3.5, de modo que ele possa residir no mesmo processo?

De qualquer forma, Rob Walker está certo (e eu votei positivamente) - você simplesmente não pode hospedar 2 versões do tempo de execução no mesmo processo. Então você precisa contornar isso de alguma forma. Eu imagino que em ambos os casos, a fonte deve estar disponível, então as recompilações e o novo teste devem ser reproduzidos.

2
adicionado
John, você está certo, vamos ter que resolver isso como mudar o código não é desejável. Eu só queria ter certeza de que não estávamos negligenciando a solução mais simples.
adicionado o autor CodeForNothing, fonte