f#我如何编译然后释放文件.fsx

Lev*_*lol 5 f# release compilation f#-interactive

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

kno*_*cte 7

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

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

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

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

我正在公开研究这个项目,我已经在 GitLab 中发布了它。欢迎投稿。


mav*_*vnn 6

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

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

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

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

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

您可以在 MSDN 上找到编译器选项,但值得注意的是,如果您使用 F# 的开源版本,则编译器称为 fsharpc 而不是 fsc,因为它在 Visual Studio 安装中。

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

fsc.exe -r System.Xml --target:exe myProgram.exe MyScript.Things.fsx MyScript.fsx
Run Code Online (Sandbox Code Playgroud)