使用process.start运行带有cmd的.NET核心应用程序(.dll)

时间:2017-11-16 09:40:58

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

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

我有一个应该是跨平台的.NET核心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核心流程能够复制自己吗?

谢谢

1 个答案:

答案 0 :(得分:10)

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