如何在调用 CloseMainWindow 之前在新命令提示符下启动 dotnet.exe 而无需关闭它?
How to lauch dotnet.exe in a new command prompt without closing it before I call CloseMainWindow?
我想在批处理文件中启动 .NET Core Web 应用程序,然后向其发送客户端请求,然后关闭该 Web 应用程序。
cd $PSScriptRoot
$DevWebRootPath=$PSScriptRoot+"\MyWebApp\bin\Debug\netcoreapp2.0"
$WebAssembly="MyWebApp.dll"
cd $DevWebRootPath
$processInfo = New-Object System.Diagnostics.ProcessStartInfo("dotnet.exe", $WebAssembly)
$process = [System.Diagnostics.Process]::Start($processInfo)
Invoke-RestMethod http://localhost:5000/api/codegen -Method POST -InFile "$($PSScriptRoot)\MyWebApp\Payload.json" -ContentType "application/json"
$process.CloseMainWindow()
cd $PSScriptRoot
但是,托管 .net 核心进程的 CMD window 在启动后立即消失,在 Invoke-RestMethod 或 process.CloseMainMaindow() 可以 运行 之前。我曾在 iisexpress.exe 和 asp.net Web API 上尝试过类似的做法,效果很好。
如何在调用 CloseMainWindow 之前在新的命令提示符下启动 dotnet.exe 而不关闭它?
我会尽可能避免手动 .NET 操作并依赖内置方法(这就是 cmdlet 的全部意义所在):
$path = "$PSScriptRoot\MyWebApp\bin\Debug\netcoreapp2.0"
$procArgs = @{
FilePath = "$path\dotnet.exe"
ArgumentList = "$path\MyWebApp.dll"
WorkingDirectory = $path
PassThru = $true
}
$process = Start-Process @procArgs
$restArgs = @{
Uri = 'http://localhost:5000/api/codegen'
Method = 'Post'
InFile = "$PSScriptRoot\MyWebApp\Payload.json"
ContentType = 'application/json'
}
Invoke-RestMethod @restArgs
$process.CloseMainWindow() # Should be `$process | Stop-Process`
默认情况下,Start-Process
会在新控制台中打开 window,除非您使用 -NoNewWindow
。
我想在批处理文件中启动 .NET Core Web 应用程序,然后向其发送客户端请求,然后关闭该 Web 应用程序。
cd $PSScriptRoot
$DevWebRootPath=$PSScriptRoot+"\MyWebApp\bin\Debug\netcoreapp2.0"
$WebAssembly="MyWebApp.dll"
cd $DevWebRootPath
$processInfo = New-Object System.Diagnostics.ProcessStartInfo("dotnet.exe", $WebAssembly)
$process = [System.Diagnostics.Process]::Start($processInfo)
Invoke-RestMethod http://localhost:5000/api/codegen -Method POST -InFile "$($PSScriptRoot)\MyWebApp\Payload.json" -ContentType "application/json"
$process.CloseMainWindow()
cd $PSScriptRoot
但是,托管 .net 核心进程的 CMD window 在启动后立即消失,在 Invoke-RestMethod 或 process.CloseMainMaindow() 可以 运行 之前。我曾在 iisexpress.exe 和 asp.net Web API 上尝试过类似的做法,效果很好。
如何在调用 CloseMainWindow 之前在新的命令提示符下启动 dotnet.exe 而不关闭它?
我会尽可能避免手动 .NET 操作并依赖内置方法(这就是 cmdlet 的全部意义所在):
$path = "$PSScriptRoot\MyWebApp\bin\Debug\netcoreapp2.0"
$procArgs = @{
FilePath = "$path\dotnet.exe"
ArgumentList = "$path\MyWebApp.dll"
WorkingDirectory = $path
PassThru = $true
}
$process = Start-Process @procArgs
$restArgs = @{
Uri = 'http://localhost:5000/api/codegen'
Method = 'Post'
InFile = "$PSScriptRoot\MyWebApp\Payload.json"
ContentType = 'application/json'
}
Invoke-RestMethod @restArgs
$process.CloseMainWindow() # Should be `$process | Stop-Process`
默认情况下,Start-Process
会在新控制台中打开 window,除非您使用 -NoNewWindow
。