SharpSVN和C#问题

9
尝试将SharpSVN添加到我的C#项目中时,使用与SharpSVN相关的调用进行编译会出现以下错误:
FileLoadException was Unhandled Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
我所做的是从下载的SharpSVN zip文件中添加引用并添加了。
using SharpSvn;

当我编译它时,它能够正常工作,但当我添加以下内容时:
string targetPath = "https://bobl/svn/ConsoleApplication1";

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

它出现了这个错误。我已经搜索了这个错误,但是没有找到解决方案。

3个回答

31

如果您想继续针对.NET 4进行开发,请将以下内容添加到您的app.config中:

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

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


6

SharpSVN程序集是一个针对CLR 2.0版本构建的混合程序集。
因此,它不能在CLR 4.0版本中加载。

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


1
或者获取使用.NET 4.0构建的SharpSVN版本。 - 3Dave
做到了,谢谢。使用旧版的.Net是否不安全? - Sam F
@Sam F,不是因为CLR的变化吗! - Srinivas Reddy Thatiparthy
1
针对 .Net 3.5 并没有什么问题。(除了你将无法使用 .Net 4.0 中新增的类) - SLaks
或者应用实际错误消息中记录的配置更改。 - Bert Huijben

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接