2010-06-08 10 views
8

Quando si cerca di aggiungere SharpSVN al mio progetto C#, la compilazione con le chiamate SharpSVN relativi mi dà questo errore:SharpSVN e C# Problema

FileLoadException è stata gestita assemblaggio modalità mista è costruito contro la versione 'v2.0.50727' del runtime e non può essere caricato nel runtime 4.0 senza ulteriori informazioni di configurazione.

Quello che ho fatto è stato aggiungere i riferimenti dal file zip SharpSVN scaricato e aggiunto il

using SharpSvn; 

Quando compilo che funziona benissimo, ma quando aggiungo:

string targetPath = "https://bobl/svn/ConsoleApplication1"; 

SvnTarget target; 
SvnTarget.TryParse(targetPath, out target); 

rompe con quell'errore Ho cercato questo errore e non ho avuto fortuna nel trovare una soluzione.

risposta

6

L'assembly SharpSVN è un assieme misto costruito contro la versione 2.0 del CLR.
Pertanto, non può essere caricato in CLR versione 4.0.

È necessario modificare il progetto su .Net 3.5 (o precedente) in Proprietà progetto.
Poiché .Net 2.0, .Net 3.0 e .Net 3.5 utilizzano tutti la versione 2.0 del CLR, funzionerà in ognuna di queste versioni.

+1

o per ottenere una versione di SharpSVN costruita con .NET 4.0. –

+0

Ha fatto il trucco, grazie. Non è sicuro usare una vecchia versione di .Net? –

+0

@Sam F, No ci sono cambiamenti CLR, ecco perché! –

30

Aggiungi questo al vostro app.config se si desidera mantenere il targeting .NET 4:

<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

Questo permetterà il supporto di carico delle assemblee in modalità mista (per lo più C assemblee ++/CLI che contengono il codice sia gestito e gestito) costruito per una versione precedente del framework.

+0

FANTASTICO! Funziona alla grande! –

+0

Cool ha funzionato. – SmallChess

1

Come accennato Julien è necessario aggiungere il codice di compatibilità per app.config o web.config del progetto:

<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

Questo è cosa buona e giusta, ma se si hanno questo problema con un test runner (come MSTest) in Visual Studio, in realtà devi apportare questa modifica al file di configurazione del test runner.

ho scritto un post su questo problema in VS 2012:

http://www.diaryofaninja.com/blog/2012/09/13/net-20-mixed-mode-assemblies-in-visual-studio-net-45-test-projects

In Visual Studio 2012, è necessario aggiungere il codice di avvio per il seguente file:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine86.exe.config