Process.start используется для запуска браузера, но теперь он устарел

Если я пройду руководство «Как начать» для Saturn:

https://saturnframework.org/tutorials/how-to-start.html

когда я запускаю последний шаг:

      dotnet fake build -t run

веб-сервер действительно запускается. Я могу зайти на http://localhost:8085/books и посмотреть получившееся приложение.

Однако, если я нажму ctrl-c на консоли, чтобы остановить веб-сервер, я замечу следующее:

Если я посмотрю на , он содержит следующую строку:

      Process.start (fun i -> { i with FileName = "http://localhost:8085" }) |> ignore

внутри цели:

      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.

На странице Just start a process в документации Fake есть несколько примеров. Отходя от них, я использовал измененный build.fsxиспользовать следующую строку:

      CreateProcess.fromRawCommand "cmd.exe" [ "/C"; "start http://localhost:8085" ] |> Proc.run |> ignore

И это действительно, кажется, работает.

Пара вопросов:

  • Это рекомендуемый способ добиться чего-то подобного?
  • Можно ожидать, что вышеизложенное будет работать только в Windows. Есть ли кроссплатформенный способ открыть URL-адрес в браузере с помощью Fake?

Примечание

Если вы решили пройти руководство Saturn "Как начать", рекомендую удалить файл global.jsonпосле шага 3. По умолчанию в настоящее время выполняется поиск определенной версии .NET SDK. Для решения этой проблемы открыт запрос на включение.

Спасибо!

1 ответ

Вы можете увидеть источник Plotly.NET для запуска браузера: https://github.com/plotly/Plotly.NET/blob/62f297649320783ea0e64725ff4703bb225268d0/src/Plotly.NET/ChartExtensions.fs#L16

Другие вопросы по тегам