2016-04-20 7 views
0

Ich habe eine C# Winform-Anwendung, die ich portieren möchte, um auf meinem neuen Raspberry PI 3 laufen. Ich bin im Stöhnen, weil ich dachte, dass meine App nur ausgeführt würde. Das ist überhaupt nicht der Fall. Meine Winform App verwendet Quart. net, die Aforge-Bibliothek und allgemeine .net-Bibliotheken wie system.configuration. Ich würde zwar mit meiner Logging-Klasse beginnen, da jemand erwähnt hat, dass Code ohne UI einfach zu konvertieren sein sollte, wenn etwas überhaupt geändert werden müsste. Das sieht so aus, als müsste ich das Rad neu erfinden. Um genauer zu sein, schauen Sie sich die folgende Funktion an. Jeder Code, der system.configuration verwendet, wird nicht funktionieren. Gibt es eine einfachere Möglichkeit, meine App zum Laufen zu bringen oder muss ich fast meinen gesamten Code konvertieren? Arbeitet die Aforge-Bibliothek überhaupt am PI? Geht quart.net zur Arbeit? Im Moment möchte ich aufgeben und einen kleinen Windows-PC kaufen, auf dem "richtige" Fenster laufen.Porting Winform-Anwendung auf Raspberry PI

C# Winform-Code

class Logging 
{ 

    public void Write_To_Log_File(String Message, String Procedure, String Error_Code, String Error_String) 
    { 
     try 
     { 
      // If the log file is bigger than allowed size then archive 
      if (File.Exists(@ConfigurationManager.AppSettings["LogSavePath"])) 
      { 

       FileInfo file = new FileInfo(@ConfigurationManager.AppSettings["LogSavePath"]); 
       if (file.Length > Convert.ToInt32(ConfigurationManager.AppSettings["FileLogSizeLimit"])) 
       { 
        // Rename the file 
        File.Move(@ConfigurationManager.AppSettings["LogSavePath"], @ConfigurationManager.AppSettings["LogSavePath"] + string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now) + ".csv"); 
       } 

      } 
      // If log file does not exist then create it and add the headers 
      if (File.Exists(@ConfigurationManager.AppSettings["LogSavePath"])) 
      { 
      } 
      else 
      { 
       // Create the file 
       System.IO.File.Create("LogSavePath"); 
       // Add data 
       string[] Headers = { "Time" + "," + "_Message" + "," + "Procedure" + "," + "Error_Code" + "," + "Error_String" }; 
       System.IO.File.AppendAllLines(@ConfigurationManager.AppSettings["LogSavePath"], Headers); 
      } 
      if (File.Exists(@ConfigurationManager.AppSettings["LogSavePath"])) 
      { 
       string[] Log = { DateTime.Now.ToString() + "," + Message + "," + Procedure + "," + Error_Code + "," + Error_String }; 
       System.IO.File.AppendAllLines(@ConfigurationManager.AppSettings["LogSavePath"], Log); 
      } 

     } 
     catch 
     { 

     } 
    } 
} 
+1

Es wird wahrscheinlich etwas Umschreiben benötigen, wie Rasberry nur Mono-Umgebung, nicht die Microsoft .NET-Framework unterstützen. Auch jede Bibliothek, die nicht pcl-kompatibel ist, funktioniert nicht. Eine gute Nachricht für Sie ist, dass Quartz.net und Aforge beide unterstützt werden, wie ich gelesen habe. – Xiaoy312

+0

Windows IoT Edition sollte auf der Platine funktionieren, aber das bedeutet eine Änderung des Betriebssystems. Wenn du das nicht willst, wie der andere Kommentar anzeigt, kannst du Mono oder .NET Core ausprobieren. Aber WinForms wird aufgrund der bekannten Probleme wahrscheinlich nicht sehr gut funktionieren. –

Antwort

2

Microsoft hat ein Windows 10 IoT Core-Porting-Tool für diesen Zweck. Dies kann Ihnen bei der Migration von Win32-Anwendungen und -Bibliotheken zu Windows 10 IoT Core-Anwendungen helfen. Weitere Details finden Sie hier: https://developer.microsoft.com/en-us/windows/iot/win10/tools/iotapiportingtool

+0

@ user1438082 Erinnerung: Bitte geben Sie eine Antwort, wenn Sie Ihr Problem lösen können, oder markieren Sie eine der Antworten als akzeptiert es löst Ihr Problem. Vielen Dank. –