如何验证F#代码是否符合CLS

时间:2015-09-15 08:23:08

标签: .net f#

通过将程序集标记为符合1998 - 2002的CLS,我希望编译器在程序集不符合时发出警告。但是,我可以编译以下

[<assembly: CLSCompliant(true)>]
没有任何警告,没有任何警告。目标框架是使用F#4.0的4.6。我错过了什么,或者它是编译器中的错误?有没有其他方法可以验证从F#生成的程序集是否合规?

2 个答案:

答案 0 :(得分:2)

this MSDN page,您可以看到该属性旨在将该类标记为合规,而不是为了确保合规性。确保合规性是编译器可能实现或不实现的内容。

检查MicrosoftFSharp的存储库,您可以看到CLSCompliant属性从未用于检查合规性。只是为了将类标记为兼容,所以这种行为是正常的。

目前我没有找到任何工具在F#中进行此分析。我打开an issue以查看此功能是否足以在编译器中实现。如果是,我们都可以帮助完成它。如果不是,另一种选择是编写分析器并将其作为VS插件发布。无论哪种方式,我都会在有关此主题的任何新闻中更新此答案。

答案 1 :(得分:0)

您需要一个工具来检查构建的一部分。 This previous question有答案可以讨论选项,包括FxCop。