所以我有简单的F#WPF应用程序。它没有声明命名空间和使用多个模块,工作得很好。
现在,它仍在编译,但根本无所作为。调试中没有任何内容可以显示。
这是当前不起作用的代码。
namespace Flow
module MainApp =
open System
open System.Windows
let app1 = new Application()
[<STAThread>]
app1.Run(new Main.MainWindow()) |>ignore
在它工作之前就像这样
module MainApp
open System
open System.Windows
let app1 = new Application()
[<STAThread>]
app1.Run(new Main.MainWindow()) |>ignore
我可以显示MainWindow的定义,但它很长,它是一个继承自Window的类。 如果有帮助,请告诉我。或者,如果有任何其他信息我可以提供,这将有助于解决这个问题。
答案 0 :(得分:3)
您的原始代码依赖于implicit entry point:
&#34;当程序没有明确指示入口点的EntryPoint属性时,最后一个要编译的文件中的顶级绑定将用作入口点。&#34;
您可以在模块中定义一个函数,并将其明确标记为入口点:
namespace Flow
module MainApp =
open System
open System.Windows
let app1 = new Application()
[<EntryPoint>]
[<STAThread>]
let main args =
app1.Run(new Window())
或者您可以通过在模块名称中包含命名空间来继续使用隐式入口点:
module Flow.MainApp
open System
open System.Windows
let app1 = new Application()
[<STAThread>]
app1.Run(new Window()) |>ignore