混合模式程序集是针对运行时的版本“2.0.50727”构建的,无法在4.0运行时中加载

时间:2013-01-24 18:53:43

标签: .net visual-studio-2012 assemblies .net-4.5 mixed-mode

我正在使用Visual Studio 2012和.Net Framework 4.5 我有2个解决方案:1)WPF应用程序2)类库(dll)

类库包含3个按钮和一个必须位于WindosFormsHost控件内的控件,因为它是为WinForms制作的。

.NET Framework之外唯一引用的程序集是针对前面提到的winforms控件和iTextSharp。

winforms控件似乎有点老了,当我把引用放在我的dll中时,我得到了与标题相同的错误但是跟着其他SO问题/答案,我把它放在我的配置文件中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

错误:

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

正如我所提到的,我已经看到了发布此问题的问题,他们确实在我的DLL项目中解决了这个问题,但是在使用该DLL的项目中我尝试了它们都无济于事。供参考:

  1. What 'additional configuration' is necessary to reference a .NET 2.0 mixed mode assembly in a .NET 4.0 project?
  2. Mixed mode assembly is built against version ‘v2.0.50727′ of the runtime
  3. What does 'useLegacyV2RuntimeActivationPolicy' do in the .NET 4 config?
  4. Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime
  5. Mixed mode assembly is built against version X and cannot be loaded in version Y of the runtime without additional configuration information
  6. 在该项目中,我的配置文件具有完全相同的标签,具有相同的值。

    另外需要注意的是,在我的WPF应用程序中,一开始我收到的错误是它无法找到指定的dll(对于winforms控件),最后我将该控件的dll放在GAC中。 / p>

    我已经尝试更改我的目标框架以获得所有可能性(4.5,4.0完全和客户端,3.5完整和客户端,3.0和2.0),在调试和发布中构建我的DLL并将“生成序列化程序集”设置为OFF,也将平台目标从Any CPU更改为x86和x64。我一次只尝试更改一个设置的值。

    这是VS2012中的一个问题,或者我需要做些什么才能解决这个问题?

    修改

    错误列表中的设计时显示上述错误,设计人员显示错误“无法创建'my_class'的实例”

    那个的内部异常说:“Set connectionId引发异常”,这个内部异常是标题消息。

    这仍然允许构建解决方案,并且在运行应用程序时,我得到的基本相同,除了最里面的异常说:

    “无法加载文件或程序集'SigPlusNET,Version = 1.1.3358.14336,Culture = neutral,PublicKeyToken = 6aef07010bb0624f'或其中一个依赖项。尝试加载格式不正确的程序。”

    那个是winForms控件的程序集,在通过dotPeek检查时,它唯一依赖的是.NET Framework

3 个答案:

答案 0 :(得分:4)

使用Bling for DirectX 10.0,(在CodePlex上使用Bling UI Toolkit)。我收到了错误,最终我在这个页面上寻找解决方案,D3D10.example中的app.config文件包含支持的运行时,版本= 4行。但它不包含版本= 2 .net行的后续行,使用app.config作为:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" />
  <supportedRuntime version="v2.0.50727" />
 </startup>
</configuration>

解决了问题,一旦将配置文件修改为显示的代码,所有示例都在VS2012中运行。

我不知道这篇文章是否要迟到才能得到答案,我本月刚刚开始在Windows 7和VS2012上进行图形项目,配置更改解决了我的问题。

答案 1 :(得分:2)

这可能是因为你在这一行有4.0合1,另一个是4.5:

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

尝试:

<supportedRuntime version="v4.5" sku=".NETFramework,Version=v4.5" />

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />

答案 2 :(得分:2)

我的方法有点不同。该错误清楚地标识了.NET 4.0中包含的某些.NET 2.0.50727组件 在App.config文件中,而不是使用此:

<startup useLegacyV2RuntimeActivationPolicy="true"> 

它解决了我的问题