我在F#解决方案中有两个项目
1.主要项目[EntryPoint]
并设置为StarUp项目
2.支持,第二个项目,拥有一组支持模块。即它们只被调用,从不启动任何东西,也不作为入口点,也不是StartUp项目。
对于支持项目中的最后一个模块,在Visual Studio中编译提供
警告FS0988:程序主模块为空;什么都不会发生 什么时候运行
虽然在导致警告的模块中使用compiler option nowarn内联作为#nowarn "988"
确实会抑制消息,但我宁愿添加类似虚拟函数的内容以及解决问题的注释。
如何制作这样的虚拟函数来解决警告?
修改
杰克是正确的,我的支持项目设置为Console Application
而不是Class Library
。更改为Class Library
已解决警告问题。对于其他案例,了解do ()
也很好。
修改
虽然我将支持项目设置为Console Application
似乎很奇怪,但我最近发现,由于某种原因,当我对项目中的代码进行更改时,某些内容更改了{{ 1}}到Class Library
。我怀疑它与F#PowerPack和它的构建规则有关,但这只是猜测。
答案 0 :(得分:6)
您是以Library
还是Console Application
来构建支持项目? (这是通过项目属性页面设置的。)
如果您将其构建为库,则可能需要在项目的最后一个文件末尾添加do()
。这对于使F#编译器在一些特定场景中感到高兴是必要的,例如当您创建仅包含汇编级属性的模块时(因为它们应用于程序集,模块对编译器显示为“空”)。 / p>
您可以在我的代码中看到一个示例: https://github.com/jack-pappas/FSharp.Compatibility/blob/master/FSharp.Compatibility.OCaml/AssemblyInfo.fs