F# 签名文件“AsyncSocket”没有相应的实现文件

F# 签名文件“AsyncSocket”没有相应的实现文件,f#,.net-4.5,F#,.net 4.5,我刚刚开始使用F,所以可能有一些非常简单的东西我遗漏了,但我得到了一个编译器错误,似乎没有人遇到过: 签名文件“AsyncSocket”没有相应的 实现文件。如果存在实现文件,请检查 签名中的'module'和'namespace'声明,以及 实现文件匹配 我想可能是我的代码出了问题,所以我复制了,得到了完全相同的结果。知道发生了什么吗 签名: namespace Library1 module Module1 = val function1 : int -> int

我刚刚开始使用F,所以可能有一些非常简单的东西我遗漏了,但我得到了一个编译器错误,似乎没有人遇到过:

签名文件“AsyncSocket”没有相应的 实现文件。如果存在实现文件,请检查 签名中的'module'和'namespace'声明,以及 实现文件匹配

我想可能是我的代码出了问题,所以我复制了,得到了完全相同的结果。知道发生了什么吗

签名:

namespace Library1
  module Module1 = 
    val function1 : int -> int
    type Type1 =
        new : unit -> Type1
        member method1 : unit -> unit
        member method2 : unit -> unit

    [<Sealed>]
    type Type2 = 
        new : unit -> Type2
        member method1 : unit -> unit
        member method2 : unit -> unit

    [<Interface>]
    type InterfaceType1 =  
        abstract member method1 : int -> int
        abstract member method2 : string -> unit
实施:

namespace Library1
module Module1 =

    let function1 x = x + 1

    type Type1() =
        member type1.method1() =
            printfn "test1.method1" 
        member type1.method2() =
            printfn "test1.method2"


    [<Sealed>]
    type Type2() =
        member type2.method1() =
            printfn "test1.method1" 
        member type1.method2() =
            printfn "test1.method2"

    [<Interface>]
    type InterfaceType1 =
        abstract member method1 : int -> int
        abstract member method2 : string -> unit

如果签名文件和实现文件具有不同的名称和扩展名,则会发生此错误。签名和实现应该分别位于名为.fsi和.fs的单独文件中。正如pad所评论的,在构建顺序或解决方案资源管理器树视图中,签名文件应紧跟在实现文件之前。

如果签名文件和实现文件具有不同的名称和扩展名,则会发生此错误。签名和实现应该分别位于名为.fsi和.fs的单独文件中。正如pad所评论的,在构建顺序或解决方案资源管理器树视图中,签名文件应紧跟在实现文件之前。

在文件顺序中,您应确保签名文件位于实现文件之前。将签名文件视为实现应履行的契约。@pad:在VS 2012中,它给出了一个不同的错误:文件或模块“File1”的实现已经给出。由于类型推断,编译顺序在F中很重要。您可能需要调整文件的顺序,以便在实现之前放置签名文件。在Visual Studio中,文件按其在项目文件中的显示顺序进行类型检查,可以使用解决方案资源管理器手动编辑或调整项目文件。在文件排序中,应确保签名文件位于实现文件之前。将签名文件视为实现应履行的契约。@pad:在VS 2012中,它给出了一个不同的错误:文件或模块“File1”的实现已经给出。由于类型推断,编译顺序在F中很重要。您可能需要调整文件的顺序,以便在实现之前放置签名文件。在Visual Studio中,文件按其在项目文件中的显示顺序进行类型检查,可以手动编辑或使用解决方案资源管理器进行调整。完全正确,我的实现文件末尾有一个“s”!完全正确,我的实现文件末尾有一个“s”!