Pergunta

Existem dois cenários que preciso esclarecer:

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

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

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

Foi útil?

Solução

Não - você não pode carregar o CLR no mesmo processo duas vezes. Veja a documentação para CLR Hosting

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

Outras dicas

.NET 4 promete permitir a hospedagem de diferentes versões de CLR no mesmo processo por meio de Em processo lado a lado.

Para o caso nº 1, existe algum motivo específico (por exemplo, mudanças de quebra) que exigem que a biblioteca seja hospedada no tempo de execução 1.1? É possível expor a biblioteca por meio de um serviço da web compilado por 1.1 e ter o ponto executável para o serviço da Web? (Ou alguma outra técnica de remoção, para obter a biblioteca em seu próprio processo?)

Para o caso nº 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 votado) - 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, portanto, recompilações e reteste devem jogar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top