2016-04-20 3 views
0

У меня есть приложение winform для C#, которое я хочу использовать для запуска на моем новом малиновом PI 3. Я в стоне, потому что думал, что мое приложение просто запустится. Это совсем не так. В моем приложении winform используется quart. net, библиотеку aforge и общие библиотеки .net, такие как system.configuration. Хотя я бы начал с моего класса ведения журнала, так как кто-то упомянул, что не-UI-код должен быть легко преобразован, если что-то нужно изменить вообще. Похоже, мне придется изобретать велосипед. Чтобы быть конкретным для начинающих, рассмотрим приведенную ниже функцию. Любой код, который использует system.configuration, не работает. Есть ли какой-либо более простой способ заставить мое приложение работать, или мне нужно буквально преобразовать почти весь мой код. Является ли библиотека форфорда даже собирающейся работать над PI? Является ли quart.net работать? Прямо сейчас я чувствую, что сдаюсь и покупаю маленький ПК с Windows, который запускает «правильные» окна.Портирование приложения winform для запуска на малине PI

C# Winform Код

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

Скорее всего, потребуется переписать, поскольку Rasberry поддерживает только среду mono, а не инфраструктуру microsoft .net. Кроме того, любая библиотека, не совместимая с pcl, также не будет работать. Хорошей новостью для вас является то, что Quartz.net и Aforge поддерживаются, как я читал. – Xiaoy312

+0

Версия Windows IoT должна работать на плате, но это означает смену ОС. Если вы не хотите, чтобы l, как указывает другой комментарий, вы можете проверить Mono или .NET Core. Но WinForms, вероятно, не будет работать очень хорошо из-за известных проблем. –

ответ

2

Microsoft запустила Windows 10 IoT Core, Porting инструмент для этой цели. Это поможет вам перейти от приложений и библиотек Win32 к приложениям IoT Core для Windows 10. Более подробно здесь: https://developer.microsoft.com/en-us/windows/iot/win10/tools/iotapiportingtool

+0

@ user1438082 Напоминание: просьба предоставить ответ, если вы можете решить свою проблему или отметить один из ответов, как принято, он решает вашу проблему. Спасибо. –

Смежные вопросы