使用文件夹在一个 F# 项目中隔离模块 - 这可能吗?

Isolate modules within one F# project using folders - is it possible?

我喜欢 F# 要求按依赖顺序组织文件和代码的方式,因为它不鼓励无意识的耦合。

我有 atm 源文件的平面列表(简体):

Common.fs
Workflow1.fs
Workflow2.fs

并想更进一步。首先,像这样组织文件(VS 2017 不能上下移动文件夹,需要编辑 .fsproj 但这是不同的故事 - 至少它是可能的):

Common.fs
Workflow1\Impl1.fs
Workflow2\Impl2.fs

我希望Impl1.fs和Impl2.fs完全隔离,因为它们的文件夹没有parent/child关系,但是Impl2.fs可以很容易地看到类型和功能来自 Impl1.fs:只需打开模块即可使用

有什么技术可以让他们隔离吗?可以将项目一分为三,但我更喜欢将 DLL 保留为一个部署单元:工作流程很小,理想情况下我想避免有很多小的 DLL 文件。

听起来你很清楚你的选择是什么。你不会错过任何其他东西。因此,您问题的答案是 "no."

据我所知,您不能那样隔离文件夹。但是,如果您希望在编译时将它们隔离开来但可以作为一个单元部署,您可以创建单独的项目并使用 Fody or ILMerge 组合程序集 post-compilation.