SharpSVN和C#问题

时间:2010-06-08 17:40:44

标签: c# sharpsvn fileloadexception

当尝试将SharpSVN添加到我的C#项目时,使用SharpSVN相关调用进行编译会给我这个错误:

FileLoadException未处理 混合模式程序集是根据运行时的版本“v2.0.50727”构建的,如果没有其他配置信息,则无法在4.0运行时加载。

我所做的是从下载的SharpSVN zip文件中添加引用并添加

using SharpSvn;

当我编译它时工作正常,但是当我添加:

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

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

它打破了那个错误。我已经搜索了这个错误,并且没有找到解决方案的运气。

3 个答案:

答案 0 :(得分:30)

如果要继续定位.NET 4,请将其添加到app.config中

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

这将启用为旧版本框架构建的混合模式程序集(主要是包含非托管代码和托管代码的C ++ / CLI程序集)的加载支持。

答案 1 :(得分:6)

SharpSVN组件是针对CLR 2.0版本构建的混合组件 因此,它无法在CLR 4.0版中加载。

您需要将项目更改为项目属性中的.Net 3.5(或更早版本) 由于.Net 2.0,.Net 3.0和.Net 3.5都使用CLR的2.0版本,因此它可以在任何版本中使用。

答案 2 :(得分:1)

正如Julien所说,您需要将兼容性代码添加到项目的app.config或web.config中:

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

这一切都很好,但如果您在Visual Studio中遇到测试运行器(如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