是否有确保 F# 项目中模块依赖项顺序的最佳实践?
Is there a best practice for ensuring the order of Module dependencies in an F# project?
示例:
我有一个包含多个 类 的 F# 项目。其中之一 类 导入(打开)2 个模块作为依赖项。
我注意到只有 1 个从属模块成功解析,但有一个 intellisense 抛出 FS0039 错误。 (命名空间或模块 [模块名称] 未定义,因此我无法访问 none 模块的类型或成员。
所有文件都在同一目录中,并且定义它们的语义大部分相同。
我花了数小时进行研究,试图确定出现问题的一个模块与其他模块有何不同,并最终通过反复试验确定是模块在我的项目文件中定义的顺序导致了问题。
如此给定
<ItemGroup>
<Compile Include="Module1.fs" />
<Compile Include="Module3.fs" />
<Compile Include="Module2.fs" />
</ItemGroup>
如果 Module3 需要 Module2,这将导致对 Module2 的引用抛出 FS0039,并且引用不会被解析。我必须手动重新安排项目文件中的顺序才能解决问题。
<ItemGroup>
<Compile Include="Module2.fs" />
<Compile Include="Module1.fs" />
<Compile Include="Module3.fs" />
</ItemGroup>
我注意到,在这种情况下,只要它列在模块 3 之前,哪个模块(1 或 2)在排序中排在第一位就没有任何区别。
是否有最佳实践来减轻手动编辑 F# 项目文件的周期性需求?或者这只是 F# 课程的标准?
我知道这是一种基于过程的语言,但我从来不必担心用 C# 手动编辑项目文件。
这是许多新 F# 程序员遇到的障碍。简短的回答是,良好设计的一部分是确保编译单元之间的依赖关系清晰且定义明确,因此您自然会学会让它们保持逻辑顺序。正如 Reed 上面所说,这通常是您可以在 IDE 中执行的操作,而不是直接处理项目文件。
要获得更详细的答案,请阅读“F# for Fun and Profit”covers this topic。
示例: 我有一个包含多个 类 的 F# 项目。其中之一 类 导入(打开)2 个模块作为依赖项。
我注意到只有 1 个从属模块成功解析,但有一个 intellisense 抛出 FS0039 错误。 (命名空间或模块 [模块名称] 未定义,因此我无法访问 none 模块的类型或成员。
所有文件都在同一目录中,并且定义它们的语义大部分相同。
我花了数小时进行研究,试图确定出现问题的一个模块与其他模块有何不同,并最终通过反复试验确定是模块在我的项目文件中定义的顺序导致了问题。
如此给定
<ItemGroup>
<Compile Include="Module1.fs" />
<Compile Include="Module3.fs" />
<Compile Include="Module2.fs" />
</ItemGroup>
如果 Module3 需要 Module2,这将导致对 Module2 的引用抛出 FS0039,并且引用不会被解析。我必须手动重新安排项目文件中的顺序才能解决问题。
<ItemGroup>
<Compile Include="Module2.fs" />
<Compile Include="Module1.fs" />
<Compile Include="Module3.fs" />
</ItemGroup>
我注意到,在这种情况下,只要它列在模块 3 之前,哪个模块(1 或 2)在排序中排在第一位就没有任何区别。
是否有最佳实践来减轻手动编辑 F# 项目文件的周期性需求?或者这只是 F# 课程的标准?
我知道这是一种基于过程的语言,但我从来不必担心用 C# 手动编辑项目文件。
这是许多新 F# 程序员遇到的障碍。简短的回答是,良好设计的一部分是确保编译单元之间的依赖关系清晰且定义明确,因此您自然会学会让它们保持逻辑顺序。正如 Reed 上面所说,这通常是您可以在 IDE 中执行的操作,而不是直接处理项目文件。
要获得更详细的答案,请阅读“F# for Fun and Profit”covers this topic。