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

标签 .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 的项目中,我已经尝试了所有这些都无济于事。以供引用:
  • What 'additional configuration' is necessary to reference a .NET 2.0 mixed mode assembly in a .NET 4.0 project?
  • Mixed mode assembly is built against version ‘v2.0.50727′ of the runtime
  • What does 'useLegacyV2RuntimeActivationPolicy' do in the .NET 4 config?
  • Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime
  • Mixed mode assembly is built against version X and cannot be loaded in version Y of the runtime without additional configuration information

  • 在那个项目中,我的配置文件具有相同值的完全相同的标签。

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

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

    这是 VS2012 中的问题还是我需要做些什么来解决这个问题?

    编辑:

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

    那一个的内部异常说:“设置 connectionId 抛出异常”,这个内部异常是标题消息。

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

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

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

    最佳答案

    使用 Bling for DirectX 10.0,(CodePlex 的 Bling UI 工具包)。我得到的错误最终导致我在此页面上寻找解决方案,D3D10.example 中的 app.config 文件包含支持的运行时,version=4 行。但它不包括 version=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 中进行图形项目,并且配置更改解决了我的问题。

    关于.net - 混合模式程序集是针对运行时的 '2.0.50727' 版本构建的,无法在 4.0 运行时中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14508627/

    相关文章:

    c# - 动态加载程序集的多个版本

    c# - 我可以减少 WPF 应用程序中手写笔/触摸输入的开销吗?

    c# - 在 .NET Windows 服务中创建 API 端点

    .net - GAC 在编辑过程中?

    visual-studio-2012 - TFS 2012 Power Tools 可以与 TFS 2010 一起使用吗?

    wpf - 为什么 Blend 2012 不允许我创建非 Windows 商店项目?

    .net - 我应该什么时候将程序集部署到 GAC 中?

    .NET 在 Server 2008 中永久缓存 DNS

    visual-studio-2012 - Visual Studio 2012 "Extensions and Updates" "Unable to connect to the remote server"

    c# - 程序集绑定(bind)和重定向