And still you cant except that everything is handled by an engine. Another example. Opening a File and Read it in C# would be File.ReadAllText(path_to_file); .Net Core / Mono / .Net Framework handle it for each OS. But when we start using functions to access WMI (It's a windows intern database). All the functions are given by .net Framework, but that is something only will work in Windows NOT ON LINUX / MAC / FREEBSD. Ok ok.. but what if we would use a function to access Processes. No Problem, same thing with the different intepreter. BUT if we would use it on Linux with Mono we could get different behavior then on windows, even if its working.