F#powerpack和发行版

时间:2010-05-28 20:22:42

标签: f# distribution

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

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

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

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

  4. 声明引用并继续使用我需要的功能。

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

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

1 个答案:

答案 0 :(得分:5)

你本质上是正确的,任意精确有理数只能在PowerPack中使用(BigInteger是.NET 4.0的一部分,但有理数仍然是F#特定的)。

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

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

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

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

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

相关问题