1

如果我阅读土星的“如何开始”指南:

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。有一个拉取请求可以解决这个问题。

谢谢!

4

1 回答 1

1

您可以查看 Plotly.NET 源以了解启动浏览器的方法:https ://github.com/plotly/Plotly.NET/blob/62f297649320783ea0e64725ff4703bb225268d0/src/Plotly.NET/ChartExtensions.fs#L16

于 2021-02-13T11:31:25.537 回答