I\'m using Visual Studio 2019 to publish a self contained .net core 2.1 app. Many files are emitted during the publishing (application files as well as core libraries).
Figured this out by using "file" to look at files. Turns out that when you publish app "Foo" for linux, you end up with a file named Foo which is actually an executable the launches your whole app (ie and any libraries it needs, etc).
In other words, there is no "dotnet" command included or needed. Effectively, Foo takes the place of dotnet executable.