F# 如何解决;程序的主模块为空:运行时不会发生任何事情;
我在F#解决方案中有两个项目。F# 如何解决;程序的主模块为空:运行时不会发生任何事情;,f#,compiler-warnings,suppress-warnings,F#,Compiler Warnings,Suppress Warnings,我在F#解决方案中有两个项目。 1.主项目,并设置为启动项目。 2.第二个项目support包含一组支持模块。也就是说,它们只被调用,从不启动任何东西,也不作为入口点,也不作为启动项目 对于支持项目中的最后一个模块,在VisualStudio中编译 警告FS0988:程序主模块为空;什么都不会发生 当它运行时 在导致警告的模块中使用内联as#nowarn“988”时,确实会抑制消息,但我更愿意添加类似于带注释的伪函数的内容来解决问题 如何使用这种虚拟函数来解决警告 编辑 Jack是正确的,我的支
1.主项目,并设置为启动项目。
2.第二个项目support包含一组支持模块。也就是说,它们只被调用,从不启动任何东西,也不作为入口点,也不作为启动项目 对于支持项目中的最后一个模块,在VisualStudio中编译 警告FS0988:程序主模块为空;什么都不会发生 当它运行时 在导致警告的模块中使用内联as
#nowarn“988”
时,确实会抑制消息,但我更愿意添加类似于带注释的伪函数的内容来解决问题
如何使用这种虚拟函数来解决警告
编辑
Jack是正确的,我的支持项目被设置为控制台应用程序
,而不是类库
。更改为类库
解决了警告问题。对于另一种情况,了解do()
也很好
编辑
虽然我会将一个支持项目设置为
控制台应用程序
似乎有些奇怪,但我最近发现,由于某种原因,当我更改项目中的代码时,输出类型从类库
更改为控制台应用程序
。我怀疑这与F#PowerPack及其构建规则有关,但这只是猜测。您是将支持项目构建为库还是作为控制台应用程序?(这是通过“项目属性”页面设置的。)
如果要将其构建为库,则可能需要在项目中最后一个文件的末尾添加一个do()
。在一些特定的场景中,这是使F#编译器满意的必要条件,例如,当您创建一个只包含程序集级属性的模块时(因为它们应用于程序集,所以该模块在编译器看来是“空的”)
您可以在我的代码中看到以下示例:
我遇到了同样的问题。我还没弄明白。我用的是WPF。