伪造-在新窗口中启动过程

时间:2019-04-12 03:36:09

标签: f# f#-fake

我正在尝试通过FAKE脚本在新的控制台窗口中启动应用程序。

在常规.NET代码中,方法System.Diagnostics.Process.Start可用于执行此操作。

我过去也用CAKE做到过,就像这样:

Task("run-myapp")
  .Does(() => {
    var info = new ProcessStartInfo {
      FileName = "dotnet",
      Arguments = "run myapp.fsproj",
      WorkingDirectory = "C:\\path\\to\\my\\app\\"
    };
    Process.Start(info);
  });

在FAKE中,我尝试了相同的操作,但这会启动新的后台进程并将其输出到运行FAKE的控制台窗口。然后,我以后需要使用任务管理器来终止该进程。

Target.create "run-myapp" (fun _ ->
  let psi = ProcessStartInfo()
  psi.FileName <- "dotnet"
  psi.Arguments <- "run myapp.fsproj"
  psi.WorkingDirectory <- "C:\\path\\to\\my\\app\\"
  Process.Start psi |> ignore
)

我还尝试了显式设置ProcessStartInfo.CreateNoWindow <- false(尽管默认设置为false),但这并没有改变任何内容。

有没有办法在FAKE中做到这一点?

1 个答案:

答案 0 :(得分:1)

我在以下已结束的GitHub问题中找到了答案:https://github.com/dotnet/corefx/issues/21767#issuecomment-312328630

原因是{。{1}}的默认值在.NET Framework中为UseShellExecute,但在.NET Core中的默认值为false。 CAKE在Framework中,而FAKE 5在Core中。

解决方案:

true