У меня есть приложение 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
{
}
}
}
Скорее всего, потребуется переписать, поскольку Rasberry поддерживает только среду mono, а не инфраструктуру microsoft .net. Кроме того, любая библиотека, не совместимая с pcl, также не будет работать. Хорошей новостью для вас является то, что Quartz.net и Aforge поддерживаются, как я читал. – Xiaoy312
Версия Windows IoT должна работать на плате, но это означает смену ОС. Если вы не хотите, чтобы l, как указывает другой комментарий, вы можете проверить Mono или .NET Core. Но WinForms, вероятно, не будет работать очень хорошо из-за известных проблем. –