假设我有一个这样的项目:
// Types.fs
namespace App
type Foo =
{
X : int
}
Run Code Online (Sandbox Code Playgroud)
// Foo.fs
module App.Foo
let doubleIt (foo : Foo) =
{
X = foo.X * 2
}
Run Code Online (Sandbox Code Playgroud)
然后我收到这样的错误:
Types.fs(3,6): 错误 FS0250: 在此程序集的两个部分的命名空间“App”中出现名为“Foo”的模块和类型定义
但是,如果我将所有内容都放在一个文件中,它会起作用:
// Everything.fs
namespace App
type Foo =
{
X : int
}
module Foo =
let doubleIt (foo : Foo) =
{
X = foo.X * 2
}
Run Code Online (Sandbox Code Playgroud)
但对我来说,这些似乎是一回事;我不想把所有东西都组织成一个大文件。
dotnet --version
3.1.403
Run Code Online (Sandbox Code Playgroud)
[FS0250] - 需要显式添加“ModuleSuffix”
所以,如果你想将类型和模块保存在单独的文件中,那么用
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
Run Code Online (Sandbox Code Playgroud)
如果你把它们放在同一个文件中,那就为你完成了。