簡體   English   中英

如何重新啟動dotnetcore 2 C#控制台應用程序

[英]How to restart dotnetcore 2 C# Console app

我應該如何重新啟動dotnetcore C#控制台應用程序?

我嘗試過為C#控制台應用程序找到建議,但不適用於dotnetcore。

(這不是asp.net,這是許多dotnetcore答案所指向的位置)

好的,因此我將在此答案中假定您的程序可以啟動程序的新實例然后自行關閉,就可以了。

開始了:

由於可以從控制台啟動dotnet控制台應用程序,因此我認為啟動控制台應用程序新實例的最佳方法是使用shell命令。 要從程序中運行shell命令,請將此幫助程序類添加到您的應用程序中:(如果您使用的是Windows而不是mac / linux,請參見本文結尾)

  using System;
  using System.Diagnostics;
public static class ShellHelper
{
    public static string Shell(this string cmd)
    {
        var escapedArgs = cmd.Replace("\"", "\\\"");

        var process = new Process()
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "/bin/bash",
                Arguments = $"-c \"{escapedArgs}\"",
                RedirectStandardOutput = true,
                UseShellExecute = false,
                CreateNoWindow = true,
            }
        };
        process.Start();
        string result = process.StandardOutput.ReadToEnd();
        process.WaitForExit();
        return result;
    }
}

然后,由於這是一個擴展方法,只需導入它,然后使用命令創建一個字符串以重新啟動您的應用程序,然后使用Shell()方法。

因此,如果您正在開發中,並且通常通過運行dotnet run來啟動應用程序,那么請確保您位於正確的目錄中,然后使用此行代碼"dotnet run".Shell();

如果要從運行命令中獲取反饋,則只需分配返回值,例如此string result = "dotnet run".Shell();

然后,一旦開始新過程,您只需返回主方法等即可退出當前程序。

請注意:上面的代碼是針對mac / linux的,如果您在Windows上,則上面的代碼的以下兩行:

FileName = "/bin/bash",
Arguments = $"-c \"{escapedArgs}\"",

應替換為:

FileName = "cmd.exe",
Arguments = $"/c \"{escapedArgs}\"",

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM