【发布时间】:2011-05-04 10:09:17
【问题描述】:
我有一个基于 .NET Framework v4.0 的类库。是否可以将此作为参考添加到针对 v3.5 框架的控制台或 Web 应用程序中?
【问题讨论】:
标签: .net frameworks c#-4.0
我有一个基于 .NET Framework v4.0 的类库。是否可以将此作为参考添加到针对 v3.5 框架的控制台或 Web 应用程序中?
【问题讨论】:
标签: .net frameworks c#-4.0
.NET 4.0 中的元数据格式已更改。 CLR 的第 2 版,当您针对 2.0 和 3.5 之间的任何 .NET 版本时获得的版本不知道如何阅读它。同样的事情发生在 1.1 和 2.0 之间。 CLR 版本 4 知道如何毫无问题地读取旧格式。只要您有对编译为目标版本 4 的非框架程序集的引用,那么您必须使用 .NET 4.0。
重新定位不需要引用该程序集的现有 EXE 项目是可能的。将 .config 文件添加到项目并粘贴:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
【讨论】:
我建议不要,因为他们使用的是完全不同的 CLR。通常,向后兼容性 = 是,向前兼容性 = 否。
【讨论】:
我刚刚创建了一个 Framework 3.5 控制台应用程序并添加了对我手头的 4.0 dll 的引用。
编译器对此一点也不满意。
(空)程序运行一次(出现控制台,然后关闭),然后错误列表中出现40条警告,与版本问题有关,根本无法访问dll的命名空间。
我会同意 Sasquiha 的观点,并说这看起来不可行。
【讨论】: