Domanda

Ci sono due scenari che devo chiarire:

  1. Un eseguibile compilato con .NET 3.5 deve utilizzare una libreria compilata con .NET 1.1 e la libreria deve essere eseguita sul runtime 1.1.

  2. Un eseguibile compilato con .NET 1.1 deve utilizzare una libreria compilata con .NET 3.5.

Non riesco a trovare una fonte affidabile che affermi che non è possibile caricare due versioni del runtime .NET e la documentazione di Microsoft è molto vaga su questo argomento.

È stato utile?

Soluzione

No: non è possibile caricare il CLR nello stesso processo due volte. Consulta la documentazione per Hosting CLR

  

Come per le versioni precedenti di   runtime, CorBindToRuntimeEx   La funzione inizializza il runtime. tu   può scegliere quale versione di   runtime da caricare, ma un processo può    ospita solo una versione .

Altri suggerimenti

.NET 4 promette di consentire l'hosting di diverse versioni CLR nello stesso processo mediante In-Process Side by Side .

Per il caso n. 1, c'è qualche motivo particolare (per esempio, interrompere le modifiche) che richiede che la libreria sia ospitata nel runtime 1.1? È possibile esporre la libreria tramite un servizio Web compilato 1.1 e avere invece il punto eseguibile sul servizio Web? (O qualche altra tecnica di remoting, per ottenere la libreria nel suo processo?)

Per il caso n. 2, è possibile ricompilare l'app 1.1 in 2.0 / 3.5, in modo che possa risiedere nello stesso processo?

In ogni caso, Rob Walker ha ragione (e ho effettuato l'upgrade): semplicemente non puoi ospitare 2 versioni del runtime nello stesso processo. Quindi devi aggirarlo in qualche modo. Immagino che in entrambi i casi, la fonte deve essere disponibile, quindi dovrebbero essere riprodotte ricompilazioni e test.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top