Domanda

Utilizziamo un assembly in modalità misto di terze parti che si interfaccia con un dispositivo di stampa.

In una delle nostre applicazioni, l'Assembly funziona correttamente.

In un'altra applicazione, stava generando la seguente eccezione:

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.
.

Dopo aver fatto qualche ricerca, ho scoperto che potrei aggiungere quanto segue al file App.config per risolvere questo problema:

<startup useLegacyV2RuntimeActivationPolicy="true">
.

(L'applicazione che funziona ha già avuto questa impostazione nella sua app.config)

Sebbene questo abbia risolto il problema "Assembly in modalità misto", ora sto vedendo un problema un po 'diverso:

External component has thrown an exception
.

La cosa strana è che ho una domanda che funziona correttamente e un'altra applicazione che non lo fa. Entrambi chiamano il gruppo di terze parti tramite lo stesso codice (che è un altro dei nostri assembly).

Ho provato a creare un'app di prova molto semplice che chiama il gruppo di terze parti utilizzando lo stesso percorso del codice e non riesce anche con il "Componente esterno ha lanciato un'eccezione" Errore.

Ho confrontato i file App.Config per tutte le applicazioni e sono essenzialmente lo stesso, e ho riconquistato che tutte le impostazioni di costruzione sono le stesse per ciascuna. Entrambi i progetti bersagliano .NET 4.0 e x86.

C'è ovviamente qualcosa di diverso dalle due applicazioni, ma sono in perdita per identificare ciò che è.

Ambiente di sviluppo è Visual Studio 2010.

Qualcuno ha suggerimenti su quali altre aree potrei indagare?

È stato utile?

Soluzione

@tsells aveva ragione: c'era una dipendenza mancante

L'assemblaggio di terze parti in questione dipendeva da un'altra DLL presente nella prima cartella Bin Applications.

Ho copiato tutti i file dalla cartella Bin dell'applicazione di lavoro nella cartella Bin di non funzionante, e ha risolto il problema.

Da lì è stato solo una questione di dedurre che mancava la DLL e includendola nel secondo progetto di applicazioni.

Altri suggerimenti

Quando ci sono dipendenze mancanti, puoi usare strumenti come checkasm per gestito e dipendenza walker per librerie non gestite per verificare le dipendenze.

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