web-dev-qa-db-fra.com

Exécution d'une application de base .NET (.dll) avec cmd à l'aide de process.start

Je suis nouveau sur .NET Core 2.0, donc je pourrais faire tout cela mal, si c'est le cas, faites le moi savoir.

J'ai une application .NET core 2.0 qui devrait être multiplateforme, d'où l'application est une application console .dll, et cela fonctionne bien sur toutes les plates-formes.

J'essaie d'implémenter une sorte de chien de garde, qui en cas de processus nécessaire se dupliquera, et de la même manière, il a été appelé

> $ dotnet process.dll

Mon code est:

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

Le problème est que lorsque le processus exécute ce code, je reçois l'exception suivante

Exception non gérée: System.IO.FileNotFoundException: impossible de charger le fichier ou l'assembly 'System.Runtime, Version = 4.2.0.0, Culture = neutral, PublicKeyToken = someoken' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Je ne trouve aucune mention de ruiner dotnet du code, et je ne sais même pas si c'est possible?

C'est possible? Le processus de base .NET est-il capable de se dupliquer?

Merci

11
yntnm

Il semble que vous devez également définir le répertoire de travail sur path\release\PublishOutput\ pour être sûr qu'il s'exécute dans le même environnement que l'appel de dotnet process.dll directement dans la console

11
Juergen Gutsch