如何解决“程序的主模块是空的:运行时不会发生任何事情”

时间:2013-03-01 13:53:19

标签: f# compiler-warnings suppress-warnings

我在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和它的构建规则有关,但这只是猜测。

1 个答案:

答案 0 :(得分:6)

您是以Library还是Console Application来构建支持项目? (这是通过项目属性页面设置的。)

如果您将其构建为库,则可能需要在项目的最后一个文件末尾添加do()。这对于使F#编译器在一些特定场景中感到高兴是必要的,例如当您创建仅包含汇编级属性的模块时(因为它们应用于程序集,模块对编译器显示为“空”)。 / p>

您可以在我的代码中看到一个示例: https://github.com/jack-pappas/FSharp.Compatibility/blob/master/FSharp.Compatibility.OCaml/AssemblyInfo.fs