F# powerpack 和分发

标签 f# distribution

我需要任意精度的有理数,据我所知,F# powerpack 中提供了这些有理数。我的问题是关于分配机制;我的程序至少需要能够在 Windows/.Net 和 Linux/Mono 上编译和运行,因为我在这两个平台上都有潜在用户。据我了解,最好的程序是:

  1. 下载 powerpack .zip,而不是安装程序。

  2. 将 DLL 复制到我的程序目录中。

  3. 将随附的许可证文件复制到我的程序目录中,以确保一切正常。

  4. 声明引用并继续使用我需要的函数。

  5. 将上述文件连同我的源代码和二进制文件一起发送,并且由于 DLL 使用字节代码,它可以在任何平台上正常工作。

这是正确的程序吗?我错过了什么吗?

最佳答案

您基本上是正确的,任意精度有理数仅在 PowerPack 中可用(BigInteger 是 .NET 4.0 的一部分,但有理数仍然是特定于 F# 的)。

但是,您还需要使用 F# 运行时可再发行组件(即 FSharp.Core.dll 程序集)来分发您的程序。它包含一些不属于标准 .NET 运行时的基本 F# 类型(例如用于表示函数的类型)。

当您添加对项目的引用时,编译器会在您的应用程序中包含引用库的名称和版本。当应用程序启动时,运行时会尝试在不同的地方定位库。因此,要在 .NET 和 Mono 上部署您的应用程序,您需要(以某种方式)将您的应用程序与 FSharp.Core.dllFSharp.PowerPack.dll

  • F# Redistributable 和 F# PowerPack 安装程序将库放置到计算机上所有 .NET 应用程序共享的 GAC(全局程序集缓存)中。在 Mono 上,您可以使用 gacutil tool 获得相同的结果。 (从命令行)。在这种情况下,您需要将它们复制到某处(任何地方)并运行此工具。您的应用程序会在 GAC 中找到它们。

  • 或者,如果您将程序集放置在与您的应用程序(exe 文件)相同的文件夹中,那么 .NET 和 Mono 也应该能够正确找到它们并且它应该可以工作。我认为出于版本控制的原因,不鼓励这样做(例如,可以轻松更新全局安装的文件),但我不认为许可证禁止这种形式的部署。

似乎要创建 .NET/Mono 可再发行组件,使用第二种技术会更容易(因为它允许简单的 xcopy 部署)。

关于F# powerpack 和分发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932232/

相关文章:

java - 如何获得具有线性分布的随机日期?

compilation - 为什么在执行时而不是在安装时编译字节码 JIT?

f# - 解析为复杂类型

f# - 用Mono运行F#代码

http - 在 Suave 应用程序中上传文件

iOS 内部应用程序 - SSL 证书的分发

python - 一维数组的数密度分布 - 2 次不同的尝试

r - {ggdist }'s stat_interval levels calculate (I thought it was confidence intervals but they' re 不正确)是什么?

.net - 如何在 F# 中为 .NET 函数命名

arrays - F#查找2个数组/列表之间的丢失元素