代码之家  ›  专栏  ›  技术社区  ›  rwallace

F电源组和配电

  •  3
  • rwallace  · 技术社区  · 14 年前

    我需要任意精度的有理数,这是我所理解的,在F电源组中可用的。我的问题是发行机制;我的程序至少需要能够在windows/.net和linux/mono上编译和运行,因为我在这两个平台上都有潜在的用户。据我所知,最佳程序是:

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

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

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

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

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

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

    1 回复  |  直到 14 年前
        1
  •  5
  •   Tomas Petricek    14 年前

    你本质上是正确的,任意精度的有理数只在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部署)。