Microsoft.JScript.Vsa.VsaEngine.SetCustomOption C# (CSharp) Method

SetCustomOption() protected method

protected SetCustomOption ( String name, Object value ) : void
name String
value Object
return void
      protected override void SetCustomOption(String name, Object value){
        try{
          if (String.Compare(name, "CLSCompliant", StringComparison.OrdinalIgnoreCase) == 0)
            this.isCLSCompliant = (bool)value;
          else if (String.Compare(name, "fast", StringComparison.OrdinalIgnoreCase) == 0)
            this.doFast = (bool)value;
          else if (String.Compare(name, "output", StringComparison.OrdinalIgnoreCase) == 0){
            if (value is String){
              this.PEFileName = (String)value;
              this.doSaveAfterCompile = true;
            }
          }else if (String.Compare(name, "PEFileKind", StringComparison.OrdinalIgnoreCase) == 0)
            this.PEFileKind = (PEFileKinds)value;
          else if (String.Compare(name, "PortableExecutableKind", StringComparison.OrdinalIgnoreCase) == 0)
            this.PEKindFlags = (PortableExecutableKinds)value;
          else if (String.Compare(name, "ImageFileMachine", StringComparison.OrdinalIgnoreCase) == 0)
            this.PEMachineArchitecture = (ImageFileMachine)value;
          else if (String.Compare(name, "ReferenceLoaderAPI", StringComparison.OrdinalIgnoreCase) == 0) {
            String loaderAPI = (string)value;
            if (String.Compare(loaderAPI, "LoadFrom", StringComparison.OrdinalIgnoreCase) == 0)
              this.ReferenceLoaderAPI = LoaderAPI.LoadFrom;
            else if (String.Compare(loaderAPI, "LoadFile", StringComparison.OrdinalIgnoreCase) == 0)
              this.ReferenceLoaderAPI = LoaderAPI.LoadFile;
            else if (String.Compare(loaderAPI, "ReflectionOnlyLoadFrom", StringComparison.OrdinalIgnoreCase) == 0)
              this.ReferenceLoaderAPI = LoaderAPI.ReflectionOnlyLoadFrom;
            else
              throw new VsaException(VsaError.OptionInvalid);
          }        
          else if (String.Compare(name, "print", StringComparison.OrdinalIgnoreCase) == 0)
            this.doPrint = (bool)value;
          else if (String.Compare(name, "UseContextRelativeStatics", StringComparison.OrdinalIgnoreCase) == 0)
            this.doCRS = (bool)value;
            // the next two are needed because of the ICompiler interface. They should not fail even though they may not do anything
          else if (String.Compare(name, "optimize", StringComparison.OrdinalIgnoreCase) == 0)
            return;
          else if (String.Compare(name, "define", StringComparison.OrdinalIgnoreCase) == 0)
            return;
          else if (String.Compare(name, "defines", StringComparison.OrdinalIgnoreCase) == 0)
            this.Defines = (Hashtable)value;
          else if (String.Compare(name, "ee", StringComparison.OrdinalIgnoreCase) == 0)
            VsaEngine.executeForJSEE = (Boolean)value;
          else if (String.Compare(name, "version", StringComparison.OrdinalIgnoreCase) == 0)
            this.versionInfo = (Version)value;
          else if (String.Compare(name, "VersionSafe", StringComparison.OrdinalIgnoreCase) == 0)
            this.versionSafe = (Boolean)value;
          else if (String.Compare(name, "libpath", StringComparison.OrdinalIgnoreCase) == 0)
            this.libpath = (String)value;
          else if (String.Compare(name, "warnaserror", StringComparison.OrdinalIgnoreCase) == 0)
            this.doWarnAsError = (bool)value;
          else if (String.Compare(name, "WarningLevel", StringComparison.OrdinalIgnoreCase) == 0)
            this.nWarningLevel = (int)value;
          else if (String.Compare(name, "managedResources", StringComparison.OrdinalIgnoreCase) == 0)
            this.managedResources = (ICollection)value;
          else if (String.Compare(name, "alwaysGenerateIL", StringComparison.OrdinalIgnoreCase) == 0)
            this.alwaysGenerateIL = (bool)value;
          else if (String.Compare(name, "DebugDirectory", StringComparison.OrdinalIgnoreCase) == 0){
            // use null to turn off SaveSourceState source generation
            if (value == null){
              this.debugDirectory = null;
              return;
            }
            string dir = value as string;
            if (dir == null)
              throw new VsaException(VsaError.OptionInvalid);
            try{
              dir = Path.GetFullPath(dir + Path.DirectorySeparatorChar);
              if (!Directory.Exists(dir))
                Directory.CreateDirectory(dir);
            }catch(Exception e){
              // we couldn't create the specified directory
              throw new VsaException(VsaError.OptionInvalid, "", e);
            }catch{
              // we couldn't create the specified directory
              throw new VsaException(VsaError.OptionInvalid);
            }
            this.debugDirectory = dir;
          }else if (String.Compare(name, "AutoRef", StringComparison.OrdinalIgnoreCase) == 0)
            this.autoRef = (bool)value;
          else
            throw new VsaException(VsaError.OptionNotSupported);
        }catch(VsaException){
          throw;
        }catch{
          throw new VsaException(VsaError.OptionInvalid);
        }
      }