Turns out I have to manually set the env variable passed in args, so in Program.cs:
Environment.SetEnvironmentVariable("DOTNET_ENVIRONMENT", args[1]);
and after that you read it elsewhere by:
Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT")
The args are passed like this: exename.exe --environment Production