2010-06-08 116 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