there are multiple executables<p>the dotnet is like git, so `dotnet compiler` just call `dotnet-compiler`<p>the first level tools ( dotnet-compile, dotnet-restore ) read the project json ( the only supported project file atm ) and pass argument to second level tools.<p>for example:<p>- dotnet compiler call dotnet-compile<p>- dotnet-compile read source files, references, defines from project.json and call dotnet-compile-csc with the source files as arguments.<p>- dotnet-compile-csc call csc<p>- if --native, another .net bytecode to native tools is called<p>and csc (csharp compiler) is bundled with the dotnet cli package.