【问题标题】:Running a .NET core app (.dll) with cmd by using process.start使用 process.start 使用 cmd 运行 .NET 核心应用程序 (.dll)
【发布时间】:2017-11-16 09:40:57
【问题描述】:

我是 .NET Core 2.0 的新手,所以我可能做错了,如果是这样,请告诉我。

我有一个应该是跨平台的 .NET core 2.0 应用程序,因此该应用程序是一个 .dll 控制台应用程序,它在所有平台上都可以正常工作。

我正在尝试实现一种看门狗,在必要的情况下会复制自己,并且以同样的方式调用它

> $ dotnet process.dll

我的代码是:

var process = new Process
{
   StartInfo = new ProcessStartInfo
   {
       FileName = "dotnet",
       Arguments = "path\release\PublishOutput\proces.dll"
       UseShellExecute = true,
       RedirectStandardOutput = false,
       RedirectStandardError = false,
       CreateNoWindow = true
     }

 };

 process.Start();

问题是当进程运行这段代码时,我得到了以下异常

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“System.Runtime,Version=4.2.0.0,Culture=neutral,PublicKeyToken=sometoken”或其依赖项之一。系统找不到指定的文件。

我在代码中找不到任何关于破坏 dotnet 的内容,我也不知道这是否可能?

有可能吗? .NET 核心进程是否能够自我复制?

谢谢

【问题讨论】:

  • 我可以使用 .NET Core API 调用此代码吗? (.NET Core 2.1)我无法让它工作
  • 微软建议为 Core Apps 设置 UseShellExecute = false

标签: c# .net .net-core msdn


【解决方案1】:

您似乎还需要将 WorkingDirectory 设置为 path\release\PublishOutput\ 以确保它在与直接在控制台中调用 dotnet process.dll 相同的环境中运行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    相关资源
    最近更新 更多