F# 类型推断需要类型名称,但我不知道如何提供它
F# type inference needs type name but I don't know how to provide it
我是 F# 菜鸟,所以我在努力让一些基本的东西发挥作用。这里的上下文是一个伪造的构建脚本。
我正在尝试使用 AssemblyInfoFile 命名空间生成 AssemblyInfo.cs,而不包括生成的 internal
class。我知道我需要调用 CreateCSharpAssemblyInfoWithConfig
函数并传递关闭 GenerateClass
属性的 AssemblyInfoFileConfig
。我有这个:
Target "Build" (fun _ ->
CreateCSharpAssemblyInfoWithConfig (srcDir + "TestAssemblyInfo.cs")
[Attribute.Version version
Attribute.Configuration configuration]
{ GenerateClass = false }
)
但是编译器报错如下:
The type 'AssemblyInfoParams' is not compatible with the type 'AssemblyInfoFileConfig'.
起初我以为我只需要向编译器提供特定类型,这样它就不会解析为 AssemblyInfoParams
。但是,我不知道如何内联,所以我尝试了这个:
Target "Build" (fun _ ->
let config : AssemblyInfoFileConfig = { GenerateClass = false }
CreateCSharpAssemblyInfoWithConfig (srcDir + "TestAssemblyInfo.cs")
[Attribute.Version version
Attribute.Configuration configuration)]
config
)
但是现在编译器报错如下:
The type 'AssemblyInfoFileConfig' does not contain a field 'GenerateClass'
查看 AssemblyInfoFileConfig
的定义,它显然包含一个名为 GenerateClass
:
的 property
type AssemblyInfoFileConfig
(
generateClass : bool,
?useNamespace : string ) =
member x.GenerateClass = generateClass
member x.UseNamespace =
match useNamespace with
| Some n -> n
| None -> "System"
static member Default = AssemblyInfoFileConfig(true)
谁能告诉我我做错了什么?
AssemblyInfoFileConfig
不是记录 - 它是带有构造函数的更标准类型。
你可以这样称呼它:
let config = AssemblyInfoFileConfig(false)
我是 F# 菜鸟,所以我在努力让一些基本的东西发挥作用。这里的上下文是一个伪造的构建脚本。
我正在尝试使用 AssemblyInfoFile 命名空间生成 AssemblyInfo.cs,而不包括生成的 internal
class。我知道我需要调用 CreateCSharpAssemblyInfoWithConfig
函数并传递关闭 GenerateClass
属性的 AssemblyInfoFileConfig
。我有这个:
Target "Build" (fun _ ->
CreateCSharpAssemblyInfoWithConfig (srcDir + "TestAssemblyInfo.cs")
[Attribute.Version version
Attribute.Configuration configuration]
{ GenerateClass = false }
)
但是编译器报错如下:
The type 'AssemblyInfoParams' is not compatible with the type 'AssemblyInfoFileConfig'.
起初我以为我只需要向编译器提供特定类型,这样它就不会解析为 AssemblyInfoParams
。但是,我不知道如何内联,所以我尝试了这个:
Target "Build" (fun _ ->
let config : AssemblyInfoFileConfig = { GenerateClass = false }
CreateCSharpAssemblyInfoWithConfig (srcDir + "TestAssemblyInfo.cs")
[Attribute.Version version
Attribute.Configuration configuration)]
config
)
但是现在编译器报错如下:
The type 'AssemblyInfoFileConfig' does not contain a field 'GenerateClass'
查看 AssemblyInfoFileConfig
的定义,它显然包含一个名为 GenerateClass
:
type AssemblyInfoFileConfig
(
generateClass : bool,
?useNamespace : string ) =
member x.GenerateClass = generateClass
member x.UseNamespace =
match useNamespace with
| Some n -> n
| None -> "System"
static member Default = AssemblyInfoFileConfig(true)
谁能告诉我我做错了什么?
AssemblyInfoFileConfig
不是记录 - 它是带有构造函数的更标准类型。
你可以这样称呼它:
let config = AssemblyInfoFileConfig(false)