在尝试将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);

它随着错误而破裂。我已经搜索了此错误,并且找不到找到解决方案的运气。

有帮助吗?

解决方案

SharpSVN组件是与CLR版本2.0版制造的混合组件。
因此,不能将其加载到CLR 4.0版中。

您需要将项目更改为项目属性中的目标.NET 3.5(或更早)。
由于.NET 2.0,.NET 3.0和.NET 3.5所有使用CLR版本2.0,因此它将在任何这些版本中使用。

其他提示

如果要继续定位.NET 4:

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

这将使混合模式组件的加载支持(主要是包含未管理和托管代码的C ++/CLI组件)为较旧版本的框架构建。

正如朱利安(Julien)提到的那样,您需要将兼容性代码添加到项目的app.config或web.config:

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

这一切都很好,但是如果您在Visual Studio内的测试跑步者(如MSTest)遇到这个问题,则实际上必须将此更改为Test Runner的配置文件。

我在VS 2012中写了一篇有关此问题的文章:

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

在Visual Studio 2012中,您需要将启动代码添加到以下文件:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine86.exe.config
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top