With the release of .NET Core RC2 Microsoft made it so there are now 3 Web Application templates:
- ASP.NET Web Application (.NET Framework) — The old
- ASP.NET Core Web Application (.NET Framework) — the new, to be hosting on Windows only
- ASP.NET Core Web Application (.NET Core) — Linux, OSX, Windows
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.?
Best Answer
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 ofASP.NET Core
it was possible to have both Frameworks in aproject.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.The reason for there being separate
ASP.NET Core
Web Application (.NET Core
) andASP.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
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