我有一个C#解决方案,两个项目,一个winforms和一个dll,其中winforms项目引用了dll,我将项目中我知道的所有东西都设置为框架版本2.0,但我仍然得到这个启动时出现FileLoadException:
构建混合模式程序集 运行时的版本'v2.0.50727' 并且无法在4.0中加载 没有额外的运行时 配置信息。
我配置的设置是:
此外,我已尝试清除解决方案,删除map project \ bin \,但是当重新编译并运行解决方案时,仍会抛出异常。在我的机器上,我安装了.NET 4.0和.NET 3.5 SP1的Visual Studio 2010 Ultimate。
我一定错过了导致此异常的设置,但我不知道它,有人知道吗?我只是想让它使用.NET 2.0,而不是.NET 4.0。
答案 0 :(得分:4)
要尝试强制它在CLR 2.x中加载,您可能需要(在app.config文件中):
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
这通常仅在您具有混合模式时才需要,并强制加载器的手。
答案 1 :(得分:1)
好吧,尽管你努力瞄准2.0,但它正在运行4.0 CLR。它是关于C ++ / CLI程序集的婊子,可能是您引用的DLL。需要一个.config文件来说服CLR可以使用.NET 4.0加载该DLL,即使它可能包含需要使用2.0的非托管代码,谷歌“useLegacyV2RuntimeActivationPolicy”。这将解决该DLL的4.0加载问题。
关于它仍然可以加载4.0的唯一原因是一个.config文件,它说它应该使用4.0,<supportedRuntime>
元素。为了使其更加直观,您可以使用Fuslogvw.exe工具,将其设置为记录所有绑定。如果您无法理解,请将EXE的绑定跟踪复制/粘贴到您的问题中。