我是一个F#noob,所以我正在努力学习一些基本的东西。这里的上下文是一个FAKE构建脚本。
我正在尝试使用AssemblyInfoFile命名空间生成 AssemblyInfo.cs ,而不包括生成的internal
类。我知道我需要调用CreateCSharpAssemblyInfoWithConfig
函数并通过AssemblyInfoFileConfig
来关闭GenerateClass
属性。我有这个:
Target "Build" (fun _ ->
CreateCSharpAssemblyInfoWithConfig (srcDir + "TestAssemblyInfo.cs")
[Attribute.Version version
Attribute.Configuration configuration]
{ GenerateClass = false }
)
但编译器抱怨如下:
“AssemblyInfoParams”类型与“AssemblyInfoFileConfig”类型不兼容。
起初我以为我只需要为编译器提供特定类型,以便它不会解析为AssemblyInfoParams
。但是,我无法弄清楚如何内联,所以我尝试了这个:
Target "Build" (fun _ ->
let config : AssemblyInfoFileConfig = { GenerateClass = false }
CreateCSharpAssemblyInfoWithConfig (srcDir + "TestAssemblyInfo.cs")
[Attribute.Version version
Attribute.Configuration configuration)]
config
)
但现在编译器抱怨如下:
类型'AssemblyInfoFileConfig'不包含字段'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)
谁能告诉我这里我做错了什么?
答案 0 :(得分:4)
AssemblyInfoFileConfig
不是记录 - 它是带有构造函数的更标准类型。
您可以这样称呼它:
let config = AssemblyInfoFileConfig(false)