什么是F#的FSharp.Core.optdata和FSharp.Core.sigdata文件?

时间:2014-01-20 00:04:35

标签: .net f#

两个文件似乎都与FSharp.Core.dll一起驻留在F#的目录中。 如果忘记将它们与FSharp.Core.dll放在一起,这两个文件似乎都是一个常见的麻烦来源。 它们似乎是二进制文件,所以我无法揭示其目的。

我用谷歌搜索了两个文件,但似乎没有一个明确的答案我的问题。那么......他们在F#中的功能是什么?

1 个答案:

答案 0 :(得分:17)

Optdata绝对是优化数据,它是作为编译器中EncodeOptimizationData函数的一部分编写的。 FSharp.Core将此信息存储在外部文件中,而不是嵌入在资源清单中。

sigdata使用EncodeInterfaceData进行编码,并包含有关F#类型的签名/接口的信息。 FSharp.CoreFSharp.Compiler.SilverlightFSharp.LanguageService.Compiler都将此信息存储在外部文件中,而不是嵌入在资源清单中。

由于FSharp.Core在其资源清单中不包含其中任何一个,因此它们必须存在于外部,但我不确定这个原因。

用户生成的F#文件在编译时会将此信息编码到资源清单中,如果查看元数据,可以看到这一点。