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
10 points

OP,

Here’s a friendly reminder that programming.dev has a community dedicated to .NET: !dotnet@programming.dev

permalink
report
reply
3 points

Ah! thank you for pointing that out !

permalink
report
parent
reply
7 points

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?

permalink
report
reply
2 points

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

permalink
report
parent
reply
2 points

I’d recommend using a VM in that case and calling it a day.

permalink
report
parent
reply
1 point
*

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.

permalink
report
parent
reply
3 points

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.

permalink
report
parent
reply
6 points

The “Win” in Winforms stands for Windows, capital W. It’s simply not available for Linux.

permalink
report
reply
15 points

Mono has some docs that imply they have implemented WinForms on X11.

https://www.mono-project.com/docs/gui/winforms/

permalink
report
parent
reply
10 points

From the FAQ

A small driver is required for each operating system supported. Currently we have drivers for: X Window System Win32 Window System macOS Window System

so I think you’re right

permalink
report
parent
reply
-4 points

Official source (emphasis mine)

Welcome to the Desktop Guide for Windows Forms, a UI framework that creates rich desktop client apps for Windows.

permalink
report
parent
reply
1 point
*

Of course Microsoft implemented it “for Windows”.

The Mono project implements many of the .Net APIs in a portable way for other operating systems, including an implementation of WinForms on X11.

OP specifically mentioned that they were using Mono.

permalink
report
parent
reply
6 points

Check out Avalonia. It’s like cross platform WPF. Not winforms, but still pretty good and easy to start with.

permalink
report
reply
6 points

The closest I got was by just using avalonia. I had to use winforms for my uni and convincing my teachers to allow my team to use avalonia was not easy. Avalonia is not even remotely similar to winforms. You can try setting up a VM, but I understand that it is not a real solution. I found some docs for an old version of mono which referenced some of the winforms API, but I had no luck running it.

permalink
report
reply
2 points

Well, I might try my luck with convincing my teachers to let us use avalonia but I’m not sure it will oucome to anything good. At this point I might as well use a VM for this, as I already had a VM for SolidWorks set up.

permalink
report
parent
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.2K

    Monthly active users

  • 1.8K

    Posts

  • 30K

    Comments