2010-06-08 82 views
8

當試圖SharpSVN添加到我的C#項目,SharpSVN相關的調用編譯給了我這個錯誤:SharpSVN和C#問題

FileLoadException是未處理 混合模式組件對版本建立在運行時的「V2.0.50727」並且不能在沒有附加配置信息的情況下加載到4.0運行時。

我所做的是增加從下載SharpSVN zip文件引用,並添加了

using SharpSvn; 

當我編譯它工作正常,但是當我補充一下:

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

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

它打破了那個錯誤。我查過這個錯誤,並沒有找到解決方案的運氣。

回答

6

SharpSVN組件是針對CLR版本2.0構建的混合程序集。
因此,它不能在CLR 4.0版中加載。

您需要將項目更改爲項目屬性中的.Net 3.5(或更早版本)。
因爲.Net 2.0,.Net 3.0和.Net 3.5都使用CLR 2.0版本,所以它可以在任何版本中使用。

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

這將使加載支持的混合模式組件(同時包含非託管和託管代碼大多數是C++/CLI組件:

+1

或獲取一個使用.NET 4.0構建的SharpSVN版本。 – 2010-06-08 17:44:23

+0

訣竅,謝謝。使用舊版本的.Net是否不安全? – 2010-06-08 17:45:35

+0

@Sam F,沒有CLR的變化,這就是爲什麼! – 2010-06-08 17:48:48

30

這一點,如果你想保持針對.NET 4添加到您的app.config )爲較早版本的框架而構建。

+0

真棒!這很好用! – 2012-05-20 21:25:46

+0

很酷的工作。 – SmallChess 2013-07-15 06:00:49

1

隨着朱利安提到你需要的兼容性代碼添加到您的項目的app.config或web.config中:

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

這是一切都很好,但如果你有此問題,以測試運行(如MSTest),您實際上必須對測試運行器的配置文件進行此更改。

我在VS 2012寫了一篇關於這個非常問題:

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

在Visual Studio 2012,則需要啓動代碼添加到以下文件:

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