User Tools

Site Tools


comfilepi:dotnet:index

.NET (C# & VB.Net)

The .NET ecosystem has bifurcated into two flavors:

  • “.NET Framework” now refers to the .NET Framework as it was up until and including version 4.
  • “.NET” now refers to the .NET Framework version 5 and later (previously called “.NET Core”), currently at .NET 10.

WinForms applications can be run on Linux panel PCs like the ComfilePi using one of the following configurations:

  1. Using .NET Framework 4, with the application running on the Mono runtime.
  2. Using .NET 5+ and a .NET port of Mono WinForms like our ComfileTech.WinForms library.

In general, it is recommended to use the latest version of .NET unless you have a compelling reason not to.

When to Choose .NET 5+

Using .NET on the ComfilePi

You might choose to use .NET under the following scenarios:

One of the best ways to make your application portable across all platforms is to use Blazor. If you can isolate your UI into a single .NET assembly, you can not only display your UI remotely in a web browser, but you can also host your UI in a WebView on any platform using Blazor Hybrid. For Blazor Hybrid applications on Linux, consider using the open-source BlazorWebView.

NOTE: Maui does not currently support Linux.

Advantages

  • It is being actively maintained and developed by Microsoft.
  • New features, tooling enhancements, and performance benefits are being released every year.
  • Code targeting .NET can be natively compiled, providing performance benefits as well as protection against code disassembly.
  • Code targeting .NET an be used to make libraries that can be consumed by other languages like C, Python, and many others.
  • .NET has the broadest platform support, IF you can decided on a cross-platform UI framework. .NET supports the following platforms
    • Windows
    • Linux
    • Android
    • MacOS
    • iOS
    • Web Browser

Disadvantages

  • If using WinForms, it requires a .NET port of Mono WinForms to run on Linux.
  • If using a cross-platform UI framework, it may not be possible to use a WYSIWYG UI designer like that provided by WinForms in Visual Studio.
  • Requires a.NET port of Mono WinForms to run WinForms programs on Linux.

When to Choose .NET Framework 4

Using .NET Framework on the ComfilePi

You might choose to use the .NET Framework 4 under the following scenarios:

  • You have an existing .NET Framework 2.0 ~ 4.x application that you need to port to Linux
  • Your .NET developers are not familiar with any cross-platform UI frameworks (e.g. Blazor, Avalonia, Uno Platform, etc.), and are only familiar WinForms.

Advantages

  • Works on both Windows (natively) and Linux (via Mono)
  • For developers already familiar with Winforms, it does not require learning a new UI framework.

Disadvantages

  • Although the .NET Framework 4 is being maintained by Microsoft, and Mono is currently being maintained by the Wine project developers, they are not being further developed, and will inevitably be deprecated in the future.
  • The Mono implementation on Linux, while being a remarkable engineering achievement, is not perfect, and may require some workarounds.
  • Code targeting the .NET Framework 4 can only be run on Windows, and platforms with a functioning Mono runtime.
  • Code targeting the .NET Framework 4 cannot be compiled to machine code, and can be easily disassembled.

Targeting Both .NET 5+ and .NET Framework 4

If you need to develop a library for use in both the .NET Framework 4 and .NET 5+, use .NET Standard 2.0.

Note that by targeting .NET Standard, you will likely be limited to just creating utility libraries (e.g. Modbus communication, GPIO, I2C, Serial Communication, TCP/IP communication, etc.), but that can still be very helpful in maximizing your solution's portability.

Technical Support Policy

COMFILE Technology does not provide technical support for Visual Studio and .NET Technologies. Please contact Microsoft directly for support for their products and technologies.

ComfilePi - Industrial Raspberry Pi Panel PC

comfilepi/dotnet/index.txt · Last modified: by 127.0.0.1