Running a .NET core app (.dll) with cmd by using process.start

yntnm picture yntnm · Nov 16, 2017 · Viewed 12.4k times · Source

I'm new to .NET Core 2.0, so i might be doing this all wrong, if so let me know.

I have a .NET core 2.0 app that should be cross platform, hence the app is a .dll console application, and it does work fine on all platforms.

I'm trying to implement kind of a watchdog, that in case of necessary process will duplicate itself, and by the same way it was called

> $ dotnet process.dll

My code is:

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();

The problem is that when the process runs this code, i'm getting the following exception

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=sometoken' or one of its dependencies. The system cannot find the file specified.

I can't find any mention of ruining dotnet from code, and i don't know even if this is possible?

Is it possible? Is .NET core process able to duplicate itself?

Thanks

Answer

Juergen Gutsch picture Juergen Gutsch · Nov 16, 2017

It seems you also need to set the WorkingDirectory to path\release\PublishOutput\ to be sure it is running in the same environment as calling dotnet process.dll directly in the console