public InteractiveHostOptions(
            string hostPath,
            string?initializationFilePath,
            CultureInfo culture,
            InteractiveHostPlatform platform)
        {
            Contract.ThrowIfNull(hostPath);

            HostPath = hostPath;
            InitializationFilePath = initializationFilePath;
            Culture  = culture;
            Platform = platform;
        }
        public static InteractiveHostOptions CreateFromDirectory(
            string hostDirectory,
            string?initializationFileName,
            CultureInfo culture,
            InteractiveHostPlatform platform)
        {
            var hostSubdirectory       = (platform == InteractiveHostPlatform.Core) ? "Core" : "Desktop";
            var hostExecutableFileName = "InteractiveHost" + (platform == InteractiveHostPlatform.Desktop32 ? "32" : "64") + ".exe";

            var hostPath = Path.Combine(hostDirectory, hostSubdirectory, hostExecutableFileName);
            var initializationFilePath = (initializationFileName != null) ? Path.Combine(hostDirectory, hostSubdirectory, initializationFileName) : null;

            return(new InteractiveHostOptions(hostPath, initializationFilePath, culture, platform));
        }