9

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

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

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

using SharpSvn;

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

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

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

它因该错误而中断。我已经搜索了这个错误,但没有找到解决方案。

4

3 回答 3

31

如果您想继续以 .NET 4 为目标,请将其添加到您的 app.config:

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

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

于 2010-06-08T17:46:04.350 回答
6

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

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

于 2010-06-08T17:42:22.003 回答
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
于 2012-09-13T04:20:44.103 回答