自重启自包含的单个文件dotnet核心控制台应用程序

时间:2020-05-14 01:17:21

标签: c# .net-core application-restart self-contained

有人知道一种方法,或者是否有可能使用一个自包含的单个文件dotnet core 3.1控制台应用程序来自动重启?我之前在其他控制台应用程序中使用以下代码完成了此操作,并且可以使用,但是不适用于我的单个文件应用程序。

相反,我得到了以下异常

Unhandled Exception: System.TypeLoadException: Could not load type 'System.Object' from assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' because the parent does not exist.

我怀疑这是由于运行时包含在目录中,并且窗口不知道要使用它。如果我将应用程序发布为非单个文件应用程序,则使用exe可以很好地重新启动。但是,我更喜欢使用自包含的单个文件,因为它使人们可以更轻松地传输单个exe。

ProcessStartInfo info = new ProcessStartInfo
        {
            FileName = Environment.GetCommandLineArgs()[0],
            UserName = creds.UserName,
            PasswordInClearText = creds.Password,
            Domain = "mydomain",
            Verb = "runas"
        };

        // Start the process
        Process.Start(info);

        // Exit the current one
        Environment.Exit(0);

我已经看过Application.Restart方法,但是我需要使用runas动词,因为我的应用程序正在处理kerberos令牌,并且必须在用户上下文中运行并传递提示用户的信息。

任何对此的帮助将不胜感激,我已经为此花了大约一天的时间。我找到了许多有关如何创建单个文件应用程序的文章,但没有找到如何自行重启它的文章。

0 个答案:

没有答案