2013-02-07 17 views
5
System.BadImageFormatException: Could not load file or assembly 'x_Accessor, 
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. 
This assembly is built by a runtime newer than the currently loaded runtime and 
cannot be loaded. 

Sto avendo difficoltà a trovare una cura per questa malattia ...System.BadImageFormatException: Impossibile caricare il file o l'assembly 'x_Accessor, ...' Questa assemblea è costruito da un runtime più recente

Ho creato test unitari per progetti di test di dot net. Con il framework di test dell'unità predefinito.

Lo strumento automatizzato creato un di accesso - che sarebbe stato utilizzato per testare metodi privati ​​.

[So che la teoria, i metodi privati ​​dovrebbero essere testati attraverso i loro chiamanti - ma poi, dipende da loro scopo, il contenuto, il contesto e così via ... quindi se posso, li mi metterà alla prova.]

Ho fatto questo in passato su un paio di progetti, e ha funzionato bene.

Ma su questi due progetti che sto cercando di testare ora, io sono in esecuzione in questo problema ...

Nota: io sto usando Framework 3.5 - che può essere un problema? - ma l'accessor dovrebbe saperlo!

Vedo assolutamente da nessuna parte dove posso modificare il runtime per l'assembly ... che immagino sia l'accessor.

E sì, ho pulito e ricostruito, ho cancellato completamente la cartella di output e ricostruito, ho eliminato l'accessor e il metodo privato e lo ho ricreato.

Si prega di aiutarmi a trovare come risolvere questo! Grazie.

+1

tuo strumento automatico di mira .NET 4. usare qualcosa di simile a ILMerge retarget. – leppie

risposta

6

Non è possibile fare riferimento a un assieme compilato in una versione .NET superiore (o versione di CLR per essere più precisi). Quindi nel tuo esempio se hai un assembly per unit test che è .NET 3.5 allora non puoi fare riferimento a un assembly che sia .NET 4.0.

Questa risposta è quello che stai cercando penso:

VS2010 SP1 unit tests targeting 3.5 framework fail if using private accessor

+0

La domanda è "entrambi?" Perché non stiamo parlando di due progetti! c'è solo un progetto, è dot net 3.5, e ... Ecco fatto. Se stai chiedendo del progetto di test e del progetto testato, sono entrambi 3.5 e sono sulla stessa piattaforma - e tutti i test tranne quello privato eseguono bene. Non sto davvero parlando di un progetto separato !! – Thalia

+0

In quale versione di Visual Studio sei attivo? –

+0

Visual Studio 2010 (SP1) – Thalia

Problemi correlati