【问题标题】:f# how can i compile and then release a file .fsxf# 我如何编译然后发布一个文件 .fsx
【发布时间】:2015-11-01 23:11:23
【问题描述】:

您好,我在 f# 和 windows 窗体中制作了一个简单的程序,如何构建 exe 然后将其发送给朋友进行测试?在调试文件夹中我什么也没找到。

【问题讨论】:

  • 来自msdn脚本使用文件扩展名.fsx 或.fsscript。无需编译源代码,然后再运行编译后的程序集,只需运行 fsi.exe 并指定 F# 源代码的脚本文件名,F# 交互式读取代码并实时执行。
  • 所以我无法从 .fsx 脚本创建 .exe 吗?
  • 是的。但是你可以创建(.fs)并编译它。

标签: compilation f# release f#-interactive


【解决方案1】:

我最近一直在处理 .fsx 脚本,以完成 DevOps 任务,我发现自己需要这个,以:

  1. 通过 CI 检查我的脚本的正确性,以免在我对它们进行更改时错误地破坏它们。
  2. 让它们执行得更快

所以我决定开始自动化@mavnn 在他的回答中解释的内容。

它是如此的元,以至于我的脚本编译工具本身就是一个脚本(因此它可以自己编译,因此如果你想为了性能而使用它,它不会对性能产生影响)。

我正在公开开展这个项目,我已将其发布here in GitLab。欢迎投稿。

【讨论】:

    【解决方案2】:

    可以从 FSX 文件创建可执行文件,但 Visual Studio 开箱即用不支持此方案。如果您因为第一次使用 F# 而达到此阶段,并且不清楚 fsx 和 fs 文件之间的区别,我建议您将代码转换为 .fs 文件并从那里开始。

    如果您有理由编译 fsx 文件(有一些!),请继续阅读...

    F# 编译器本身非常乐意接受 FSX 文件作为源文件,但您确实需要玩一些技巧。

    首先,如果您的脚本文件中有任何#load 或#r 行,则需要将它们包装在#if INTERACTIVE 块中。

    其次,您现在必须管理以正确的顺序为编译器命令行可执行文件提供所有相关引用和代码文件:记住 F# 是一种顺序依赖语言。

    您可以找到compiler options on MSDN,但值得注意的是,如果您使用的是 F# 的开源版本,编译器称为 fsharpc 而不是 Visual Studio 安装中的 fsc。

    因此,您最终可能会运行如下所示的命令:

    fsc.exe -r System.Xml --target:exe myProgram.exe MyScript.Things.fsx MyScript.fsx
    

    【讨论】:

    • 谢谢,不知道。
    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多