我正在尝试通过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中做到这一点?
答案 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