Стартиране на .NET основно приложение (.dll) с cmd чрез process.start

Аз съм нов в .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 core може ли да се дублира?

Благодаря


person yntnm    schedule 16.11.2017    source източник
comment
Мога ли да извикам този код с помощта на .NET Core API? (.NET Core 2.1) Не мога да го накарам да работи   -  person Tharindu Jayasinghe    schedule 25.09.2019
comment
Microsoft препоръчва да зададете UseShellExecute = false за основните приложения   -  person Frankenstein    schedule 22.01.2020


Отговори (1)


Изглежда също така трябва да зададете WorkingDirectory на path\release\PublishOutput\, за да сте сигурни, че работи в същата среда като извикването на dotnet process.dll директно в конзолата

person Juergen Gutsch    schedule 16.11.2017