我正在使用 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 的项目中我已经尝试了所有这些都无济于事。以供参考:
- 在 .NET 4.0 项目中引用 .NET 2.0 混合模式程序集需要哪些“附加配置”?
- 混合模式程序集是针对运行时版本“v2.0.50727”构建的
- “useLegacyV2RuntimeActivationPolicy”在 .NET 4 配置中起什么作用?
- 混合模式程序集是针对运行时版本“v2.0.50727”构建的,无法在 4.0 运行时中加载
- 混合模式程序集是针对版本 X 构建的,如果没有附加配置信息,则无法在运行时的版本 Y 中加载
在该项目中,我的配置文件具有完全相同的标签和相同的值。
另外要注意的是,在我的WPF应用程序中,一开始我收到一个错误,说它无法找到指定的dll(对于winforms控件),最后我将该控件的dll放入GAC中。
我尝试过更改所有可能性的目标框架(4.5、4.0 完整版和客户端、3.5 完整版和客户端、3.0 和 2.0),在调试和发布中构建我的 DLL,并将“生成序列化程序集”设置为关闭, ,将平台目标从 Any CPU 更改为 x86 和 x64。我只尝试一次更改一项设置的值。
这是VS2012的问题还是我需要做什么来解决这个问题?
EDIT:
上述错误在设计时显示在错误列表中,设计器显示一条错误“无法创建‘my_class’的实例”
该异常的内部异常表示:“Set connectionId 引发了异常”,该异常的内部异常是标题消息。
这仍然允许构建解决方案,并且在运行应用程序时,我得到的结果基本相同,除了最里面的异常说:
“无法加载文件或程序集“SigPlusNET,Version=1.1.3358.14336,Culture=neutral,PublicKeyToken=6aef07010bb0624f”或其依赖项之一。尝试加载格式不正确的程序。”
那个是winForms控件的程序集,通过dotPeek检查,它唯一的依赖项是.NET Framework依赖项