你本质上是正确的,任意精度的有理数只在Powerpack中可用。(
BigInteger
是.NET 4.0的一部分,但理性仍然是F特定的)。
但是,您还需要使用F运行时可再发行软件(即
FSharp.Core.dll
装配)。它包含一些基本的F类型(例如用于表示函数的类型),这些类型不是标准.NET运行时的一部分。
当添加对项目的引用时,编译器会在应用程序中包含被引用库的名称和版本。当应用程序启动时,运行时会尝试在不同的位置定位库。因此,要在.NET和Mono上部署应用程序,您需要(以某种方式)将应用程序与
FSARP.COR.DLL
和
FSharp.PowerPack.dll
.
-
F可再发行版和F Powerpack安装程序将库放在GAC(全局程序集缓存)中,GAC由计算机上的所有.NET应用程序共享。在Mono上,使用
gacutil tool
(来自命令行)。在这种情况下,您需要将它们复制到某个地方(任何地方)并运行这个工具。您的应用程序将在GAC中找到它们。
-
或者,如果将程序集放置到与应用程序相同的文件夹中(
exe
文件),然后.net和mono都应该正确定位它们,并且应该可以工作。我认为不鼓励这样做是因为版本控制的原因(例如,全局安装的文件可以很容易地更新),但我不认为许可证禁止这种部署形式。
对于创建.net/mono可再发行软件,使用第二种技术似乎更容易(因为它允许简单的xcopy部署)。