Hi Lemmings, I wondered if anyone had successfully created a C# project that uses winforms on linux.
I just can’t figure out how to do it.
I use Arch and have full dotnet 6 and 8 packages; but I can’t dotnet new winforms
as the template seems to not exist.
I also have installed mono and monodevelop installed, but even the simplest solution (Console App) can’t load correctly (currently I have /usr/share/dotnet/sdk/8.0.102/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.Shared.targets(152,5) : error MSB4062: The "CheckForImplicitPackageReferenceOverrides" task could not be loaded from the assembly /usr/share/dotnet/sdk/8.0.102/Sdks/Microsoft.NET.Sdk/targets/../tools/net472/Microsoft.NET.Build.Tasks.dll. Invalid Image Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.
but there were different similar errors before, these errors.
I don’t really want to boot up a VM every time I have to code on that project, but I’m starting to feel desperate about this.
TLDR: How does one create and work on a WinForms C# project with linux ? Any suggestions are welcome
Some clarifications for future readers :
- It is for a school group project; winforms in imposed, which sadly won’t let me go with Avalonia
The “Win” in Winforms stands for Windows, capital W. It’s simply not available for Linux.
Official source (emphasis mine)
Welcome to the Desktop Guide for Windows Forms, a UI framework that creates rich desktop client apps for Windows.
Mono has some docs that imply they have implemented WinForms on X11.
This isn’t an answer to your question.
I’m just curious, why winforms? Is there something that they do really well that you’re just dying to use on Linux? Trying to get a legacy application working? Familiarity?
none of that; it’s a school project which imposed winforms, else I’d have found some thing that would have worked for my linux
That syllabus likely assumes Windows. C# on non-Windows is not impossible, but it’s going to require effort infeasible for school projects like that one. As you’re facing it, C#'s packages were originally not meant to be used cross-platform, and god only knows the amount of problems that lie ahead. That clearly didn’t occur to the teacher’s head while they designed the course.
C# on non-Windows is not impossible, but it’s going to require effort infeasible for school projects like that one.
You mean winforms (The windows specific UI) on non-Windows? Otherwise this is incredibly misleading, and plain wrong.
C# in non windows is the norm, the default even, these days. I build, compile, and run, my C# applications in linux , and have been for the last 5+ years.
Maaaybe try an older visual studio install under wine?
that could be a solution indeed, but I’m not sure the latest working version (2010) would have all the features that would fit my needs, see WIneHQ’s rating history for Visual Studio
.Net 8 will work on Linux just fine. But winforms will not, it’s specifically a legacy windows-only UI framework.
You’re going to have to jump through some incredible hoops to get it to work on Linux. Which are definitely not part of your normal curriculum.
I know folks in the C# Discord have talked about getting WinForms to work on Linux, you could post a question there. But unless you’re specifically dealing with maintaining some legacy app, you should not be using WinForms, much less on Linux. Avalonia or Xamarin are definitely the way to go if you’re making something new and want cross-platform desktop support.
Protip if you do go down that route: Tutorials tend to ignore the fact that you don’t have to use XAML to make anything in these frameworks. You should. But if it’s more comfortable for you to write WinForms-style imperative code that you’re used to, you 100% can, the APIs are not significantly different.