Obtendo uma “ComponentActivatException” usando o Castle Windsor de um aplicativo .NET 4.0 usando um componente .NET 2.0

StackOverflow https://stackoverflow.com/questions/2276033

Pergunta

Eu tenho um aplicativo que está sendo desenvolvido no VS2010 e utiliza o IOC do Castle-Windsor, através de um arquivo de configuração.

Um dos componentes que estou registrando, também desenvolvido no VS2010, referências um componente .NET 2.0 (LeadTools); portanto, recompilar o projeto 2.0 não é uma opção. Quando o registro do componente de embalagem é feito, é levantada uma "ComponentActivatException", que envolve um "System.TypeInitializationException", que por sua vez envolve um "System.io.FileLoadexception" com uma mensagem de "montagem de modo misto é construído contra a versão 'V2 .0.50727 'do tempo de execução e não pode ser carregado no tempo de execução 4.0 sem informações adicionais de configuração. "

Eu adicionei a declaração de tempo de execução ao arquivo de configuração do aplicativo, assim:

<!-- useLegacyV2RuntimeActivationPolicy is needed for LEADTools-->
<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  <supportedRuntime version="v2.0.50727" />
</startup>

Isso funciona bem se o componente de embalagem não estiver registrado em Windsor, no entanto, parece desconsiderar as diretivas de outra forma.

Obrigado!

Foi útil?

Solução 2

O problema foi devido ao uso de "definir" se "se" s dentro do arquivo de configuração, de acordo com o Documentação do microkernel. A remoção de todos esses elementos do arquivo app.config permitiu que os componentes fossem instanciados, independentemente de terem sido registrados ou não no contêiner Windsor.

Outras dicas

Presumo que você esteja usando o registro via XML?

O que acontece se você registrar o componente no código?

Você pode tentar reproduzir o problema sem erro?

ligar Type.GetType("assembly qualified name of the type from .net 2.0 assembly");

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