2013-01-24 19 views
6

Uso Visual Studio 2012 e .Net Framework 4.5 Ho 2 soluzioni: 1) Applicazione WPF 2) Libreria di classi (dll)L'assembly in modalità mista è costruito contro la versione '2.0.50727' del runtime e non può essere caricato nel runtime 4.0

La libreria di classi contiene 3 pulsanti e un controllo che deve essere all'interno di un controllo WindosFormsHost poiché è stato creato per WinForms.

Gli unici assembly di riferimento esterni a quelli di .NET Framework sono per il controllo Winforms e iTextSharp sopra menzionati.

Il controllo WinForms sembra essere un pò vecchio e quando ho messo il riferimento nella mia dll ho ottenuto lo stesso errore, come il titolo, ma in seguito gli altri SO domande/risposte, il mio ho messo nel mio file di configurazione:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
</configuration> 

l'errore:

assemblaggio modalità mista è costruito contro la versione 'v2.0.50727' del runtime e non può essere caricato in runtime 4.0 senza ulteriori informazioni sulla configurazione

Come ho già detto, ho visto delle domande che pubblicano questo problema e hanno risolto il problema nel mio progetto DLL, ma nel progetto che utilizzavo quella DLL non le ho provate tutte. Per riferimento:

  1. What 'additional configuration' is necessary to reference a .NET 2.0 mixed mode assembly in a .NET 4.0 project?
  2. Mixed mode assembly is built against version ‘v2.0.50727′ of the runtime
  3. What does 'useLegacyV2RuntimeActivationPolicy' do in the .NET 4 config?
  4. Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime
  5. Mixed mode assembly is built against version X and cannot be loaded in version Y of the runtime without additional configuration information

In quel progetto mio file di configurazione ha le stesse tag esatti con gli stessi valori.

Inoltre, nella mia applicazione WPF, all'inizio ricevevo un errore al riguardo non riuscendo a trovare la dll specificata (per il controllo winforms), alla fine ho inserito la dll di quel controllo nel GAC.

Ho provato a cambiare il framework di destinazione per tutte le possibilità (4.5, 4.0 completo e client, 3.5 completo e client, 3.0 e 2.0), compilando la DLL in debug e rilascio e impostando il "Genera assembly di serializzazione" su OFF, inoltre, ha cambiato il target della piattaforma da Any CPU a x86 e x64. Ho solo provato a cambiare il valore di un'impostazione alla volta.

Si tratta di un problema in VS2012 o di cosa è necessario fare per risolvere questo problema?

EDIT:

L'errore precedente è mostrata in fase di progettazione nella lista errori, il progettista mostra un errore che dice "Impossibile creare un'istanza di 'my_class'"

L'eccezione interna di quel uno dice: "Set connectionId ha gettato un'eccezione" e l'eccezione interna di questo è il messaggio del titolo.

Questo permette ancora la soluzione da costruire, e su l'esecuzione dell'applicazione, ottengo fondamentalmente la stessa, tranne che l'eccezione più interna dice:

"Impossibile caricare il file o l'assembly 'SigPlusNET, Version = 1.1 .3358.14336, Culture = neutral, PublicKeyToken = 6aef07010bb0624f 'o una delle sue dipendenze. Si è tentato di caricare un programma con un formato errato. "

che uno è il montaggio del controllo WinForms, previo controllo attraverso dotPeek, le uniche dipendenze che ha sono quelli .NET Framework

+0

pulsante destro del mouse il progetto EXE Immobili , Scheda Debug, deselezionare l'opzione "Abilita il processo di hosting di Visual Studio" e riprovare. –

+0

Non ho menzionato questo nella mia domanda, ma sto ricevendo questo in fase di progettazione quando trascino il mio controllo dalla casella degli strumenti (il programma si arresta in modo anomalo quando viene eseguito anche), modifico la mia domanda e aggiungo l'eccezione che ottengo in fase di esecuzione –

+2

Il secondo errore che hai appena postato in una modifica è dovuto al fatto che SigPlusNET (o qualcosa che utilizza) è la piattaforma target sbagliata. O la tua app è a 32 bit e SigPlusNET (o una dipendenza) è a 64 bit, o viceversa. –

risposta

4

Utilizzo di Bling per DirectX 10.0, (Bling UI Toolkit su CodePlex). Ho ricevuto l'errore che mi ha portato qui sopra in questa pagina alla ricerca della soluzione, il file app.config nel D3D10.example includeva il runtime supportato, version = 4 line. Ma non include una linea più tardi per la linea la versione = 2 .net, utilizzando l'app.config come:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" /> 
    <supportedRuntime version="v2.0.50727" /> 
</startup> 
</configuration> 

risolto il problema, e tutti gli esempi eseguiti in VS2012 una volta che il file di configurazione viene modificato per il codice mostrato.

Non so se questo post è in ritardo per una risposta, sto solo iniziando in Windows 7 e VS2012 questo mese su un progetto grafico e il cambiamento di configurazione ha risolto il mio problema.

2

Questo potrebbe essere causato perché hai 4.0 in 1 posizione e 4.5 in un altro su questa linea :

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 

Prova:

<supportedRuntime version="v4.5" sku=".NETFramework,Version=v4.5" /> 

o

0.123.
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
+0

L'errore dice runtime 4.0, vs2012 usa un'altra versione? entrambi i miei wpf e dll stanno usando .net 4.5, quindi questa è la ragione di quei valori, in ogni caso, ho appena provato quello che hai detto, e il problema persiste. –

+0

Non ho usato 4.5, quindi non sono sicuro. Speravo che avrebbe funzionato per te. Immagino sia possibile avere sia un progetto 4.0 che 4.5 e devi avere 2 tag "supportedRuntime", 1 per 4.0 e un altro per 4.5. Puoi provarlo? –

+0

L'ho provato, non funziona, guardandomi intorno se vs2012 utilizza un altro runtime ho trovato questo: http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx Vedere l'xml sotto la terza immagine in "Sviluppo in sicurezza per entrambe le sezioni. NET 4 e .NET 4.5 ", è la stessa di mia –

2

Il mio approccio era un po 'diverso. L'errore identifica chiaramente alcuni .NET 2.0.50727 componente è stato incluso nel .NET 4.0 In App.config file invece di utilizzare questo:

<startup useLegacyV2RuntimeActivationPolicy="true"> 

E 'risolto il mio problema

+0

dopo tutto il botto qui, ho avuto modo di lavorare con questo. È stato un aggiornamento da 3,5 a 4,5.2 e DTSX non funzionava correttamente. – DirtyHowi