Ottenere un “ComponentActivatorException” utilizzando il Castello di Windsor da .NET 4.0 utilizza un componente .NET 2.0
-
21-09-2019 - |
Domanda
Ho una domanda che si sta sviluppando in VS2010, e si avvale del Castello di Windsor-CIO, attraverso un file di configurazione.
Una delle componenti sto registrando, sviluppati anche in VS2010, fa riferimento a un componente NET 2.0 (LEADTOOLS), in modo da ricompilare il progetto 2.0 non è un'opzione. Al termine della registrazione del componente involucro è fatto, un "ComponentActivatorException" viene sollevata, che avvolge una "System.TypeInitializationException", che a sua volta avvolge una "System.IO.FileLoadException" con un messaggio di "assemblaggio modalità mista è costruito contro la versione 'v2 .0.50727' del tempo di esecuzione e non possono essere caricati nel runtime 4.0 senza informazioni di configurazione aggiuntive ".
Ho aggiunto la dichiarazione di runtime per il file di configurazione dell'applicazione, come:
<!-- useLegacyV2RuntimeActivationPolicy is needed for LEADTools-->
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727" />
</startup>
Questo funziona bene se il componente di avvolgimento non è registrato a Windsor, tuttavia, non sembrano ignorare le direttive altrimenti.
Grazie!
Soluzione 2
Il problema era dovuto all'uso di "definire" s e "se" s all'interno del file di configurazione, per la documentazione microkernel . Rimozione di tutti questi elementi dal file app.config ammessi i componenti da un'istanza, anche se non sono stati registrati nel contenitore Windsor.
Altri suggerimenti
Presumo che si sta utilizzando la registrazione via XML?
Che cosa succede se si registra il componente in codice?
Puoi provare a riprodurre il problema senza errori?
chiamata Type.GetType("assembly qualified name of the type from .net 2.0 assembly");