5

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

对于支持项目中的最后一个模块,在 Visual Studio 中编译给出

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

虽然在导致警告的模块中使用编译器选项 nowarn inline#nowarn "988"确实会抑制消息,但我宁愿添加一个带有解决问题的注释的虚拟函数之类的东西。

如何制作这样一个虚拟函数来解决警告?

编辑

Jack 是正确的,因为我的支持项目设置为 aConsole Application而不是Class Library. 更改以Class Library解决警告。很高兴知道do ()另一种情况。

编辑

虽然我将支持项目设置为 似乎很奇怪,但Console Application我最近发现,由于某种原因,当我对项目中的代码进行更改时,输出类型从 更改Class LibraryConsole Application。我怀疑它与 F# PowerPack 和它的构建规则有关,但这只是一个猜测。

4

1 回答 1

10

您将支持项目构建为 aLibrary还是 a Console Application?(这是通过项目属性页面设置的。)

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

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

于 2013-03-01T13:57:25.623 回答