Pergunta

Usamos um conjunto de modo misto de terceiros que faz interface com um dispositivo de impressora.

Em uma de nossas aplicações, o assembly funciona corretamente.

Em outra aplicação estava gerando a seguinte exceção:

Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.

Depois de fazer algumas pesquisas, descobri que poderia adicionar o seguinte ao arquivo app.config para resolver esse problema:

<startup useLegacyV2RuntimeActivationPolicy="true">

(O aplicativo que funciona já tinha essa configuração em seu app.config)

Embora isso tenha resolvido o problema de "montagem em modo misto", agora estou vendo um problema um pouco diferente:

External component has thrown an exception

O estranho é que tenho um aplicativo que funciona corretamente e outro que não.Ambos chamam o assembly de terceiros através do mesmo código (que é outro de nossos assemblies).

Tentei criar um aplicativo de teste muito simples que chama o assembly de terceiros usando o mesmo caminho de código e também falha com o erro "O componente externo lançou uma exceção".

Comparei os arquivos app.config de todos os aplicativos e eles são essencialmente os mesmos, e verifiquei novamente se todas as configurações de compilação são iguais para cada um.Ambos os projetos têm como alvo .NET 4.0 e X86.

Obviamente, há algo diferente nos dois aplicativos, mas não consigo identificar o que é.

O ambiente de desenvolvimento é o Visual Studio 2010.

Alguém tem alguma sugestão sobre outras áreas que eu poderia investigar?

Foi útil?

Solução

@tsells estava certo:havia uma dependência faltando

O assembly de terceiros em questão dependia de outra DLL que estava presente na primeira pasta bin dos aplicativos.

Copiei todos os arquivos da pasta bin do aplicativo funcional para a pasta bin do aplicativo não funcional e isso resolveu o problema.

A partir daí foi só deduzir qual DLL estava faltando e incluí-la no segundo projeto de aplicação.

Outras dicas

Quando faltam dependências, você pode usar ferramentas como CheckAsm para gerenciado e Andarilho de Dependência para bibliotecas não gerenciadas verificarem dependências.

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