73

When creating a new project in Visual Studio 2019 there are two options to create a Windows Forms App: Windows Forms App and Windows Forms App (.NET Framework).
What is the difference between these options?

enter image description here

Ola Ström
  • 4,136
  • 5
  • 22
  • 41
DAda
  • 947
  • 1
  • 5
  • 6
  • 6
    [Introducing .NET 5](https://devblogs.microsoft.com/dotnet/introducing-net-5/): "the next release after .NET Core 3.0 will be .NET 5" - that is, 5 is neither Framework, nor Core, just .NET – Damien_The_Unbeliever Dec 15 '20 at 10:33
  • 1
    @Damien_The_Unbeliever and .NET allows easy production of Winforms applications? With drag and drop? But .NET is better and more modern then? – DAda Dec 15 '20 at 10:34
  • As the name states… it’s a project for a “Library” of “Controls.” It would be a place for you to create and store your “custom controls” and simply use those "custom controls" in other projects with a `Using` statement. – JohnG Dec 15 '20 at 10:37
  • 4
    I haven't used core or xamarin myself and this *forest* of names is indeed very confusing. Until there is a canonical question to close as duplicate, consider to actually post the answer instead of downvoting. This question title is what many (every?) beginners will search for. – Sinatr Dec 15 '20 at 10:46
  • Does this answer your question? [What's the difference between .NET Core, .NET Framework, and Xamarin?](https://stackoverflow.com/questions/38063837/whats-the-difference-between-net-core-net-framework-and-xamarin) – Jon Freed Sep 19 '21 at 14:09
  • from OS, to console games, microsoft are terrible in naming things – Binuriki Cliean Jay Nov 17 '22 at 13:34

5 Answers5

38

Best practice is to choose "Windows Forms App" for new development.

Visual Studio gives developers the option of creating projects based on .NET Framework or .NET Core. Both have been superseded with the release of .NET 5. Developers still have the option to create projects with the .NET Framework, which is why there are two project types.

.NET Framework is older than .NET Core, and runs on Windows only. .NET Core was created to be cross-platform, and originally did not support Windows desktop apps. They had separate releases through .NET Framework 4.8 and .NET Core 3.1.

When .NET Core 3.0 was released, Microsoft began recommending that new applications, regardless of what type, be developed with .NET Core. Microsoft also announced that there would be no further major update to the .NET Framework:

With the .NET Core 3.0 release in September 2019 we think that all new .NET applications should be based on .NET Core. The primary application types from .NET Framework are supported, and where we did not port something over there is a recommended modern replacement. All future investment in .NET will be in .NET Core.

.NET Framework 4.8 will be the last major version of .NET Framework.

Source: .NET Core is the Future of .NET

Further, .NET 5 is the successor of .NET Core and .NET Framework. From now on, there's just .NET:

There will be just one .NET going forward, and you will be able to use it to target Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly and more.

Source: Introducing .NET 5.

adamj537
  • 677
  • 7
  • 14
  • 4
    This answer provides some good info, but it lacks a straight answer to the question. Maybe improve on that. – Rev Nov 04 '21 at 14:36
  • 1
    This should be marked as the Answer. – Moises Gonzaga Jan 26 '22 at 19:44
  • @Rev It has a perfectly straightforward answer on the very first line and plus a little reading to educate one's self shouldn't be such a chore. Give a man a fish but teach him and so on cliche. – GµårÐïåñ Jul 05 '22 at 19:21
  • @GµårÐïåñ It was just as a suggestion. I just felt that this answer did not nail the point of the question like the first sentence from Itachis answer, for example. All good. – Rev Jul 06 '22 at 13:03
  • @Rev I get it, everyone's perception is different but to me for most people, "Best practice is to choose "Windows Forms App" for new development." this would be considered fairly nailed down and the follow up discussion more than explains why, I just felt it was a bit nitpick but he did take your advice and "improve" it by changing it from .NET 5 to that so to make it clearer. That's something :) – GµårÐïåñ Jul 06 '22 at 16:56
25
  • Windows Forms App (.NET Framework) is .NET Framework 4.8 or older.

Created 2002 through 2019. https://en.wikipedia.org/wiki/.NET_Framework_version_history

whereas

  • Windows Forms App is .NET Core 3.0 or newer.

Created 2016 through 2023 (projected) https://en.wikipedia.org/wiki/.NET

On 2020-11-10 they dropped the word "Core" from the name. So for example, a previous version was called ".NET Core 3.0" but the latest version is now called ".NET 6".

Chadinzski
  • 351
  • 3
  • 4
12

Windows Forms App(.NET Framework) is the type which makes desktop apps using .NET Framework. Windows Forms App(.NET) is the type which makes desktop apps also but it uses .NET Core (Latest Version is .NET Core 5.0) The Windows Control Library project template is used to create custom controls to use on Windows Forms like we use button from the tool box Developers use the . NET framework to create Windows desktop applications and server based applications. NET Core is used to create server applications that run on Windows, Linux and Mac.

Itachi Uchiha
  • 307
  • 4
  • 9
4

AS per my consideration, this needs to be more clear.

You can use the Winform (.Net Framework) if you want to run the application that targets the .Net Framework that is automatically installed when you install the windows on the system.

On the other hand, if you want to develop the desktop application with Just Winform app it's mean you are targeting the latest version of .net core that you have to install on the systems where you are gonna run the application, otherwise, the application won't run as expected. and you might be asked to install the latest version of the .net core that is the targeting environment.

You can specify the target framework while developing the application under the properties of the project.

Rizwan
  • 122
  • 1
  • 7
1

If you want:

  • .NET Framework (Windows specific) then use Windows Forms App (.NET Framework).
  • .NET Core / .NET (Cross-platform) then use Windows Forms App.

.NET Map

So you can choose what you want.

Ola Ström
  • 4,136
  • 5
  • 22
  • 41