在 .NET 2.0 上使用 .NET 3.5 功能......并且它有效吗?
Posted
技术标签:
【中文标题】在 .NET 2.0 上使用 .NET 3.5 功能......并且它有效吗?【英文标题】:Using .NET 3.5 features on .NET 2.0.... and it's working? 【发布时间】:2011-10-07 12:29:55 【问题描述】:我的 .NET 应用程序作为 C++ MFC 桌面应用程序的插件运行,该应用程序提供 .NET SDK。主应用程序负责在加载任何插件之前加载 .NET。我正在针对 .NET 3.5 编译我的项目,以下测试代码运行良好:
MainApp.WriteLine("MyPlugin running on .NET 0.1", _
System.Environment.Version.Major, _
System.Environment.Version.Minor)
Dim data As Int32() = New Int32() 1, 1, 1, 1, 4, 4, 4, 4, 12, 12, 12, 12
For Each distinctValue As Int32 In data.Distinct()
MainApp.Write(distinctValue.ToString() & ", ")
Next
这是 应该 只在 .NET 3.5 上运行的 Linq 代码,对吗?但是,当它打印版本消息时,它声称“MyPlugin 在 .NET 2.0 上运行”
如果已安装 .NET 3.5,为什么/如何工作?我能否依靠它始终工作?
【问题讨论】:
【参考方案1】:据推测,它报告的是 .NET 的核心版本,即 2.0。直到4.0版本才更新,因为核心代码是一样的。
【讨论】:
啊哈,那我该如何测试 /actual/ 版本呢? 哪个实际版本? .NET 运行时的实际 版本是2.0。 .NET 的更高版本(3.0 和 3.5,包括服务包)不是运行时环境的新版本,只是新的库和一些编译器技巧。如果您愿意,请尝试使用仅在 .NET 3.5 库中定义的类型,如果不可用,则会引发异常。 我想 actual 版本是用户下载和安装的版本。目前为 2.0、3.0、3.5 或 4.0。这是我的客户认为的版本,因为这是他们在微软网页上看到的版本。因此,如果有人 only 安装了 2.0,我需要消息读取“2.0”,如果有人 only 安装了 3.5,我需要消息读取“3.5”。如果有人同时安装了两者,我想知道当前实际加载了两者中的哪一个。如果需要,我会使用您的解决方案,但很难相信如果不抛出异常就无法获得这些信息。【参考方案2】:.net 3.5 中的某些功能只是语法糖,编译器将它们编译为可以由 2.0 运行时执行的 MSIL。 因此,您的开发机器上只需要 VS 2008 和 .net 3.5,但运行已编译应用程序的机器只需要 2.0 运行时。
请在此处查看此问题:What features of .NET 3.5 can be used in a .NET 2.0 application?
【讨论】:
以上是关于在 .NET 2.0 上使用 .NET 3.5 功能......并且它有效吗?的主要内容,如果未能解决你的问题,请参考以下文章
将 .NET 3.5 库与应用程序捆绑在一起,因此它可以在仅安装 .NET 2.0 的机器上运行?
与 .NET 2.0/3.5 一起使用的最佳免费 ORM 工具 [关闭]
当 Mono 支持 .NET 3.5 时,为啥 Unity 使用 .NET 2.0?