2010-06-08 18 views
8

Beim Versuch SharpSvn mein C# Projekt hinzuzufügen, mit SharpSvn bezogenen Anrufen Kompilieren gibt mir diese Fehlermeldung:SharpSvn und C# Problem

Fileloadexception wurde nicht behandelt Mixed-Modus Montag gegen Version gebaut wird ‚v2.0.50727‘ die Laufzeit und kann nicht ohne zusätzliche Konfigurationsinformationen in die 4.0-Laufzeit geladen werden.

Was ich tat, war die Referenzen aus der heruntergeladenen SharpSvn Zip-Datei hinzufügen und die

using SharpSvn; 

hinzugefügt Wenn ich kompilieren, dass es funktioniert gut, aber wenn ich hinzufügen:

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

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

Es bricht mit Dieser Fehler. Ich habe diesen Fehler gesucht und hatte kein Glück bei der Suche nach einer Lösung.

Antwort

6

Die SharpSVN-Baugruppe ist eine gemischte Baugruppe, die gegen Version 2.0 der CLR gebaut wurde.
Daher kann es in CLR Version 4.0 nicht geladen werden.

Sie müssen Ihr Projekt ändern, um .NET 3.5 (oder früher) in den Projekteigenschaften zu targetieren.
Da .Net 2.0, .Net 3.0 und .Net 3.5 alle Version 2.0 der CLR verwenden, funktioniert es in jeder dieser Versionen.

+1

Oder erhalten eine Version von SharpSVN mit .NET 4.0. –

+0

Hat den Trick gemacht, danke. Ist es unsicher, eine alte Version von .Net zu verwenden? –

+0

@Sam F, Nein, es gibt CLR-Änderungen, deshalb! –

30

Fügen Sie diese auf Ihrem app.config, wenn Sie .NET-Targeting behalten möchten 4:

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

Dies wird die Lade Unterstützung von Mixed-Mode-Baugruppen ermöglichen (meist C++/CLI-Baugruppen sowohl nicht verwalteten und verwalteten Code enthält,) für eine ältere Version des Frameworks erstellt.

+0

FANTASTISCH! Das funktioniert großartig! –

+0

Cool es funktionierte. – SmallChess

1

Als Julien erwähnt benötigen Sie den Kompatibilitätscode Ihres Projekts app.config oder web.config hinzufügen:

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

Das ist alles schön und gut, aber wenn Sie dieses Problem mit einem Testläufer haben (wie MSTest) innerhalb von Visual Studio, müssen Sie diese Änderung tatsächlich in der Konfigurationsdatei des Testlaufers vornehmen.

Ich schrieb einen Beitrag über dieses Problem 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 müssen Sie den Startcode in die folgenden Datei hinzufügen:

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