2009-03-28 6 views
4

Ich versuche, einen externen Systemanruf mit Mono zu machen. Ich würde gerne wissen, ob es möglich ist, etwas wie das Beispiel unten zu emulieren (Natürlich suche ich nach plattformübergreifender Unterstützung).Systemaufrufe von .NET zu Mono

public static int ExecuteExternalApp() 
      { 
       int ExitCode = -1; 
       Process Process = new Process(); ; 

       //Defining the filename of the app 
       Process.StartInfo.FileName = "java"; 

       //Assigning the args to the filename 
       Process.StartInfo.Arguments = @"-jar """ + ConfigurationManager.AppSettings["JarPath"].ToString(); 

       try 
       { 
        //Starting the process 
        Process.Start(); 

        //Waiting for the process to exit 
        Process.WaitForExit(); 

        //Grabbing the exit code 
        ExitCode = Process.ExitCode; 

        //Close the process 
        Process.Close(); 
       } 
       catch (Exception ex) 
       { 
        throw new Exception(ex.Message); 
       } 

       return ExitCode; 
      } 

** UPDATE: Dieser Code funktioniert in Mono. Die erste Implementierung funktionierte wegen eines nicht vorhandenen Verweises auf den System-Namespace nicht (keine Ahnung, wie das passiert ist), dieser Code-Block funktioniert, solange der Namespace System.Diagnostics verwendet wird.

Antwort

2

Ich bin mir nicht sicher, ob dies das ist, was Sie wollten, aber schauen Sie sich das Codebeispiel an, das ich in Windows Service Application Controller gepostet habe, das funktioniert in Mono.

+0

Ich konnte den Namespace System.Diagnostics unter den bereitgestellten Paketen nicht finden, um es in erster Linie zu tun. Wie haben Sie darauf hingewiesen? –

+0

Um die Wahrheit zu sagen, weiß ich nicht: Der Code, den ich gepostet habe, funktioniert mit Mono, aber ich habe es in VisualStudio + .NET kompiliert. –

+0

Betrachtet man Monos Dokumente (http://www.go-mono.com/docs/index.aspx?link=N%3ASystem.Diagnostics), sollte es kein Problem geben, System.Diagnostics zu referenzieren –