Чи можливо (і можливо) запустити .NET-програми на Raspberry Pi з Mono ?
Якщо так, то як добре вони бігають? Чи є базовим графічним інтерфейсом користування, чи низька продуктивність реально обмежує його в програмах командного рядка?
Чи можливо (і можливо) запустити .NET-програми на Raspberry Pi з Mono ?
Якщо так, то як добре вони бігають? Чи є базовим графічним інтерфейсом користування, чи низька продуктивність реально обмежує його в програмах командного рядка?
Відповіді:
Є питання StackOverflow, досить схожий на це, Mono on Raspberry Pi . Однак за допомогою власних досліджень мені не вдалося знайти нічого конкретного для .NET, а скоріше просто C #.
Ви можете встановити час виконання за допомогою APT на дистрибутиві Debian, виконавши:
$ sudo apt-get install mono-runtime
Ви також можете (якщо у вас є такий графічний інтерфейс, як LXDE), встановити повільний Mono IDE за допомогою:
$ sudo apt-get install monodevelop
Для Arch Linux ARM вам потрібно встановити час виконання через Pacman , наприклад:
$ sudo pacman -S mono
Моно IDE можна встановити аналогічно:
$ sudo pacman -S monodevelop
Всупереч поширеній думці, компільований код VB.NET спрацьовує на Raspberry Pi, принаймні під Debian. apt-get install mono-vbnc, а потім запустіть свій VB exe як аргумент до моно, наприклад, mono yourexe.exe
Я не робив жодних показників ефективності, оскільки не пишу додатків для інтенсивної роботи, але поки здається нормальним.
Код .NET, який використовує бібліотеки .NET Framework, не може працювати на Raspberry Pi, оскільки для запуску потрібна сумісна з ARM версія NETMF або CLR . На сьогодні Microsoft ще не випустила Windows на ARM (WoA). Див. Експеримент 19 для досліджень Microsoft CLR по роботі з ARM.
Однак запуск .NET-коду (без посилання або використання .NET Framework Libraries) можливо за допомогою Mono, оскільки Mono має CLR для пристроїв ARM.
Дивіться також Створення Windows для архітектури процесорів ARM для отримання інформації про Windows в ARM (WoA).
У мене є командний рядок .NET-додаток для роботи з Mono. Додаток в основному робить щось подібне до переадресації портів, приймаючи дані, отримані через послідовний UART та пересилаючи їх через TCP / IP. Він використовує класи SerialPort, TcpListener, TcpClient і Socket .NET, лише незначні зміни, необхідні для коду обробки SerialPort. Я використовую ОС Debian soft float.
Щодо продуктивності, перше, на що я зіткнувся, - це значне уповільнення деякої налагодження / коду відстеження, яке форматувало масив байтів у рядок для цілей ведення журналу. Це було на 50 разів повільніше порівняно з запуском на ПК.
Тому я рекомендую написати деякі тести на продуктивність при перенесенні існуючого коду в RPi.
Для тестування одиниць, NUnit чудово працює на RPi ...
Щоб встановити NUnit:
sudo apt-get install nunit
Бігти:
nunit-console appUnderTest.exe