如何重新启动dotnetcore 2 C#控制台应用程序

如何重新启动dotnetcore 2 C#控制台应用程序,c#,.net-core,C#,.net Core,我应该如何重新启动dotnetcore C#控制台应用程序 我尝试过为C#控制台应用程序找到的建议,但对dotnetcore不起作用 (这不是asp.net,许多dotnetcore答案都指向asp.net)好的,因此我将在这个答案中假设,如果您的程序将启动一个新的程序实例,然后关闭自己,您也可以 我们开始: 由于可以从控制台启动dotnet控制台应用程序,我认为启动控制台应用程序新实例的最佳方法是使用shell命令。要从程序中运行shell命令,请将此helper类添加到应用程序中:(如果您使

我应该如何重新启动dotnetcore C#控制台应用程序

我尝试过为C#控制台应用程序找到的建议,但对dotnetcore不起作用


(这不是asp.net,许多dotnetcore答案都指向asp.net)

好的,因此我将在这个答案中假设,如果您的程序将启动一个新的程序实例,然后关闭自己,您也可以

我们开始:

由于可以从控制台启动dotnet控制台应用程序,我认为启动控制台应用程序新实例的最佳方法是使用shell命令。要从程序中运行shell命令,请将此helper类添加到应用程序中:(如果您使用的是windows而不是mac/linux,请参阅本文末尾)

然后,由于这是一个扩展方法,只需导入它,然后使用命令创建一个字符串以重新启动应用程序,然后使用
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}\"",

好的,在这个答案中,我假设你的程序启动一个新的程序实例,然后关闭它自己,这对你来说是可以的

我们开始:

由于可以从控制台启动dotnet控制台应用程序,我认为启动控制台应用程序新实例的最佳方法是使用shell命令。要从程序中运行shell命令,请将此helper类添加到应用程序中:(如果您使用的是windows而不是mac/linux,请参阅本文末尾)

然后,由于这是一个扩展方法,只需导入它,然后使用命令创建一个字符串以重新启动应用程序,然后使用
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}\"",

重新启动是什么意思?你想关闭并再次启动应用程序吗?是的,关闭部分很简单,因此我想启动一个新实例。你可以做的是在退出之前启动应用程序的新实例。也许这会有所帮助:如果你发布的应用程序是独立的,我相信之前的所有技巧都应该适用。“我已经尝试了建议发现”从来都不是一个好问题的一部分,因为你需要非常具体地说明你已经尝试了什么。@SteelToe,因为我想以编程的方式来做这件事。。。没有我在那里,你说重新开始是什么意思?你想关闭并再次启动应用程序吗?是的,关闭部分很简单,因此我想启动一个新实例。你可以做的是在退出之前启动应用程序的新实例。也许这会有所帮助:如果你发布的应用程序是独立的,我相信之前的所有技巧都应该适用。“我已经尝试了建议发现”从来都不是一个好问题的一部分,因为你需要非常具体地说明你已经尝试了什么。@SteelToe,因为我想以编程的方式来做这件事。。。从dotnet运行我的应用程序时使用以下命令:
dotnet bin\Debug\netcoreapp2.0\BinanceBase.dll
。我尝试了一下,但发现“系统找不到指定的文件”是一个错误。我建议指定BinanceBase.dll的完整路径,而不是相对路径。因此,问题是上面的答案适用于mac/linux,但在Windows上进行了测试。在windows中,文件名必须为cmd.exe,参数以/c而不是-c开头。进行了这些更改,现在就可以运行了,谢谢。您的WaitForExit()在其中,因此在新实例退出之前,您当前的程序不会退出。。可能导致堆栈溢出。从dotnet运行我的应用程序时使用以下命令:
dotnet bin\Debug\netcoreapp2.0\BinanceBase.dll
。我尝试了一下,但发现“系统找不到指定的文件”是一个错误。我建议指定BinanceBase.dll的完整路径,而不是相对路径。因此,问题是上面的答案适用于mac/linux,但在Windows上进行了测试。在windows中,文件名必须为cmd.exe,参数以/c而不是-c开头。进行了这些更改,现在就可以运行了,谢谢。您的WaitForExit()在其中,因此在新实例退出之前,您当前的程序不会退出。。可能导致堆栈溢出。