如果我阅读土星的“如何开始”指南:
https://saturnframework.org/tutorials/how-to-start.html
当我运行最后一步时:
dotnet fake build -t run
网络服务器确实似乎启动了。我可以访问 http://localhost:8085/books 并查看生成的应用程序。
但是,如果我在控制台上按 ctrl-c 来停止网络服务器,我会注意到以下内容:
如果我查看build.fsx
,它包含以下行:
Process.start (fun i -> { i with FileName = "http://localhost:8085" }) |> ignore
目标内Run
:
Target.create "Run" (fun _ ->
let server = async {
DotNet.exec (fun p -> { p with WorkingDirectory = appPath } ) "watch" "run" |> ignore
}
let browser = async {
Thread.Sleep 5000
Process.start (fun i -> { i with FileName = "http://localhost:8085" }) |> ignore
}
[ server; browser]
|> Async.Parallel
|> Async.RunSynchronously
|> ignore
)
所以看起来Run
目标的意图是为我们启动一个浏览器。
上面输出中的警告表明:
Warning FS0044: This construct is deprecated. use the CreateProcess APIs instead.
Fake 文档中的Just start a process页面有一些示例。离开这些,我使用更改build.fsx
来使用以下行:
CreateProcess.fromRawCommand "cmd.exe" [ "/C"; "start http://localhost:8085" ] |> Proc.run |> ignore
这似乎确实有效。
几个问题:
- 这是实现此类目标的推荐方法吗?
- 以上只能在 Windows 上运行。是否有一种跨平台的方法可以使用 Fake 使用浏览器打开 URL?
笔记
如果您决定阅读 Saturn“如何开始”指南,我建议您global.json
在第 3 步之后删除该文件。默认文件当前查找特定版本的 .NET SDK。有一个拉取请求可以解决这个问题。
谢谢!