构建 F# 时出错:“库或多文件应用程序中的文件必须以命名空间或模块声明开头”

Dan*_*ral 3 f# visual-studio-2013

我有一个名为 BasicFunctions.fs 的文件,它被 Program.fs 使用。BasicFunctions.fs 在项目中肯定在 Program.fs 之上,所以顺序是正确的。但我不断收到此错误:

错误 1 ​​库或多文件应用程序中的文件必须以命名空间或模块声明开头,例如“命名空间 SomeNamespace.SubNamespace”或“module SomeNamespace.SomeModule”。只有应用程序的最后一个源文件可以省略这样的声明。

我正在使用 VS 2013 和 F# 3.1。这是示例代码,没什么特别的:

基本功能.fs

module BasicFunctions

let runAll = 
    let result = 4
    result
Run Code Online (Sandbox Code Playgroud)

程序文件

[<EntryPoint>]
let main argv = 
    printfn "%A" argv
    BasicFunctions.runAll        
    0 // return an integer exit code
Run Code Online (Sandbox Code Playgroud)

这是解决方案的屏幕截图:

VS 截图

Dan*_*ral 6

我发现了问题。当您复制和粘贴 .fs 文件而不是从头开始创建新文件时,似乎存在问题。使用谷歌找到此链接:https : //github.com/Microsoft/visualfsharp/issues/104

为了解决这个问题,我刚刚删除了两个文件 BasicFunctions.fs 和 BasicFunctions2.fs,并使用VS 中的“New Item..”菜单项创建了它们,同时确保它们在主文件 Program.fs 之前。

如果您不想麻烦重新创建文件,最好实际修改 .fsproj 文件以确保 Program.fs 是最后一个文件。幸得rmunn在评论部分。

现在已经搭建成功,感谢大家的帮助。

  • 这就是我要求查看您的 `.fsproj` 文件的原因,尽管现在您已经解决了不必要的问题。我想看看`Program.fs` 行是否*真的* 是项目文件中的最后一行,就像Visual Studio 认为的那样。事实证明事实并非如此,这就是您遇到问题的原因。很高兴你能够独立解决它! (3认同)