本文讨论 F# 2.0 面向 .NET Framework 2.0 和 .NET Framework 4 的两个运行时。
我们知道,F# 2.0 有面向 .NET Framework 2.0 和 .NET Framework 4 的两个运行时。此外,F# 2.0 还有一个面向 Silverlight 的运行时。
面向 .NET Framework 2.0 的 F# 2.0 运行时的核心库 (FSharp.Core.dll) 将一些 API 包含在 System 命名空间中,这些 API 与 F# 开发所需的 .NET Framework 4 API 相同。例如 System.Numerics.BigInteger 和 System.Tuple 就是这样。
Windows 操作系统:
Linux 操作系统:
使用 .NET Reflector 来查看:
让我们琮看看下面的 test.fs 程序:
1: open System;
2: printfn "OS Version: %A" Environment.OSVersion
3: printfn "CLR Version: %A" Environment.Version
4: printfn "%s" (8I.GetType().AssemblyQualifiedName)
在 Linux 操作系统下编译和运行(使用面向 .NET Framework 2.0 的 F# 2.0 运行时):
上面的 test2.exe 使用 --standalone 参数编译,表示以静态方式将 F# 库与依赖于此库的所有引用的 DLL 链接到所生成的程序集中。可以看出,在 test.exe 程序中,System.Numerics.BigInteger 是定义中 FSharp.Core 程序集中,而在 test2.exe 中,System.Numerics.BigInteger 被链接到生成的 test2 程序集中。
在 Windows 操作系统下编译和运行(使用面向 .NET Framework 4 的 F# 2.0 运行时):
可能看出,使用面向 .NET Framework 4 的 F# 2.0 运行时,System.Numerics.BigInteger 是 .NET Framework 4 的一部分,位于 System.Numerics 程序集中。不管是否使用 --standalone 参数编译,都不会改变这一点。
此外,IronRuby 以及 IornPython 也分成面向 .NET Framework 2.0 和 .NET Framework 4 两个版本。
参考资料
- F# 可再发行组件包
- Microsoft F# Developer Center
- F# Downloads
- Wikipedia: F Sharp (programming language)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述