F# 如何解决;程序的主模块为空:运行时不会发生任何事情;

F# 如何解决;程序的主模块为空:运行时不会发生任何事情;,f#,compiler-warnings,suppress-warnings,F#,Compiler Warnings,Suppress Warnings,我在F#解决方案中有两个项目。 1.主项目,并设置为启动项目。 2.第二个项目support包含一组支持模块。也就是说,它们只被调用,从不启动任何东西,也不作为入口点,也不作为启动项目 对于支持项目中的最后一个模块,在VisualStudio中编译 警告FS0988:程序主模块为空;什么都不会发生 当它运行时 在导致警告的模块中使用内联as#nowarn“988”时,确实会抑制消息,但我更愿意添加类似于带注释的伪函数的内容来解决问题 如何使用这种虚拟函数来解决警告 编辑 Jack是正确的,我的支

我在F#解决方案中有两个项目。
1.主项目,并设置为启动项目。
2.第二个项目support包含一组支持模块。也就是说,它们只被调用,从不启动任何东西,也不作为入口点,也不作为启动项目

对于支持项目中的最后一个模块,在VisualStudio中编译

警告FS0988:程序主模块为空;什么都不会发生 当它运行时

在导致警告的模块中使用内联as
#nowarn“988”
时,确实会抑制消息,但我更愿意添加类似于带注释的伪函数的内容来解决问题

如何使用这种虚拟函数来解决警告

编辑

Jack是正确的,我的支持项目被设置为
控制台应用程序
,而不是
类库
。更改为
类库
解决了警告问题。对于另一种情况,了解
do()
也很好

编辑


虽然我会将一个支持项目设置为
控制台应用程序
似乎有些奇怪,但我最近发现,由于某种原因,当我更改项目中的代码时,输出类型从
类库
更改为
控制台应用程序
。我怀疑这与F#PowerPack及其构建规则有关,但这只是猜测。

您是将支持项目构建为
库还是作为
控制台应用程序?(这是通过“项目属性”页面设置的。)

如果要将其构建为库,则可能需要在项目中最后一个文件的末尾添加一个
do()
。在一些特定的场景中,这是使F#编译器满意的必要条件,例如,当您创建一个只包含程序集级属性的模块时(因为它们应用于程序集,所以该模块在编译器看来是“空的”)

您可以在我的代码中看到以下示例:

我遇到了同样的问题。我还没弄明白。我用的是WPF。