MyProject.exe:
Platform-specific executable generated for convenience so you don't need to write dotnet MyProject.dll
to start application.
According to documentation .NET SDK 2.1
was not producing it.
MyProject.dll:
Main application dll - cross-platform dll with entry point.
You have the option to put it inside platform-specific .exe
by using Single file deployment and executable
https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file
ref/MyProject.dll:
Dll for some runtime compilation by other tools.
Described in @Andrew's answer. Generation can be disabled by the compiler option.
Summary
With cross-platform .NET Core
you can distribute your application in many different ways but the price comes with new levels of indirections and new compiler options.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…