Refactor .NET launcher and add in better argument parsing