A set of technologies in .NET for building web applications and web services. Miscellaneous topics that do not fit into specific categories.
.net is a virtual machine language like java. the compilers create il code, so a program is required to load and run the IL code.
For classic .net, a custom exe was generated that had a snippet of code to load and run the IL code that was embedded in the exe. This required a custom exe format be created to host the embedded IL code.
the .net core is cross platform, so the exe hack wasn't done. instead a lightweight exe is created that loads and hosts the app dll. If I remember correctly, in the original core release it was just a bat file. the main difference of this implementation is no application code is included in the produced exe. so it really makes no difference if you run the code with dotnet, or the generated exe.
the AspNetCore host module supports .net core two ways. the first is out of process, or reverse proxy. in this case it need an exe to run. you can either use the dotnet command line or the generated exe. if in process, then a dedicated app pool is required, and host module loads and runs the app dll directly. in this case you specify the dll name.
here is the docs on actually hosting .net core application in C/C++ so you can write your own host:
https://learn.microsoft.com/en-us/dotnet/core/tutorials/netcore-hosting
note: the .exe extension is only used on windows.