我的.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,我可以依赖它始终工作吗?
答案 0 :(得分:2)
据猜测,它正在报告.NET的核心版本,即2.0。这是没有更新的unti lversion 4.0,因为核心代码是相同的。
答案 1 :(得分:1)
.net 3.5中的某些功能只是语法糖,编译器将它们编译为MSIL,可以由2.0运行时执行。
因此,您只需要在开发计算机上使用VS 2008和.net 3.5,但运行已编译应用程序的计算机只需要2.0运行时。
在这里看到这个问题:SO What features of .NET 3.5 can be used in a .NET 2.0 application?