With the release of .NET Core RC2 Microsoft made it so there are now 3 Web Application templates:
I am trying to use the new Core Web Application template but without trying to target Linux, OSX, Windows so it seems like the ASP.NET Core Web Application (.NET Framework) is perfect for me. It took me a while but I learned that in order to add a class library that will work with this project type you need to add a Class Library (.NET Core) and change the frameworks section to only be net461 to match the Web Application.
"frameworks": { "net461": { } }
My Question:
What is the difference between creating an ASP.NET Core Web Application (.NET Core) and in project.json making net461 the only target framework
and
just creating an ASP.NET Core Web Application (.NET Framework) project which only includes net461 by default.
Are there other differences that I am not aware of like the way the projects are published, etc.?
NET Framework to create Windows desktop and server-based applications. This includes ASP.NET web applications. On the other hand, . NET Core is used to create server applications that run on Windows, Linux and Mac.
The main difference between ASP.NET Core and ASP.NET MVC 5 is their cross-platform approach. ASP.NET Core can be used on Windows, Mac, or Linux, whereas ASP.NET MVC 5 can only be used for applications on Windows. The ASP.NET Core MVC is a framework for building web apps and APIs, optimized for use with ASP.NET Core.
NET Core is faster for working with more modern libraries and programming languages. It is more lightweight and modular than . NET Framework, and you can use multiple versions of . NET in the same project.
What is the difference between creating a ASP.NET Core Web Application (.NET Core) and in project.json making.NET461 the only target Framework
It's the same thing as making an ASP.NET Core Web Application
(.NET Framework
) project. The type of project between the two is determined by the .csproj
file and you changed it in your .csproj
from targeting .NET Core
to targeting the .NET Framework
. In previous release/beta versions of ASP.NET Core
it was possible to have both Frameworks in a project.json
file (which has been replaced by a simplified .csproj
file in .NET Core 2.0 which more .NET developers are familiar with) but you could only publish to one.
just creating a ASP.NET Core Web Application (.NET Framework) project which only includes.NET461 by default.
Are there other difference that I am not aware of like the way the the projects are published, etc If you target the .NET Framework and not .NET Core your app cannot be cross platform and your app can only run on Windows and not Linux/Mac.
The reason for there being separate ASP.NET Core
Web Application (.NET Core
) and ASP.NET Core
Web Application (.NET Framework
) is because the latter allows you to make use of functions, packages or 3rd party libraries that are dependent on Windows and the same .NET Framework
or higher will be required to be installed on the machine.
The former doesn't have the .NET Framework
requirement but allows your app to be cross platform and when you publish your app it publishes all the dependent .NET Core
dll files to the publish directory in that way circumventing the .NET Framework
installation requirement.
It will also affect compilation as if you target .NET Core
and make use of a Windows specific function or package you will get a compilation error.
You can easily switch between the two by adjusting your .csproj
to target the one or the other.
Microsoft Docs
You should use .NET Core for your server application when:
You have cross-platform needs.
You are targeting microservices.
You are using Docker containers.
You need high performance and scalable systems.
You need side by side of .NET versions by application.
You should use .NET Framework for your server application when:
- Your application currently uses .NET Framework (recommendation is to extend instead of migrating)
- You need to use third-party .NET libraries or NuGet packages not available for .NET Core.
- You need to use .NET technologies that are not available for .NET Core.
- You need to use a platform that doesn’t support .NET Core.
Update (2018/10/30)
It has been announced that ASP.Net Core 3
which has a release date in 2019 Q1, will only support .NET Core
and NOT .NET Framework
As announced on the .NET Blog earlier this month, .NET Framework will get fewer of the newer platform and language features that come to .NET Core moving forward, due to the in-place update nature of .NET Framework and the desire to limit changes there that might break existing applications. To ensure ASP.NET Core can fully leverage the improvements coming to .NET Core moving forward, ASP.NET Core will only run on .NET Core starting from 3.0. Moving forward, you can simply think of ASP.NET Core as being part of .NET Core.
Customers utilizing ASP.NET Core on .NET Framework today can continue to do so in a fully supported fashion using the 2.1 LTS release. Support and servicing for 2.1 will continue until at least August 21, 2021 (3 years after its declaration as an LTS release) in accordance with the .NET Support Policy.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With