Во первых это устаревший метод запуска в коре 2. Во вторых есть обёртка в виде дотнет ран. Так что нет точки входа в длл файлах. Начиная с третьего кор фреймворка исполняемые файлы запускаться нативно.
dotnet run это при наличии csproj (т.е. из исходников)
По поводу устаревшей мб ты и прав, не знаю