code: def _getsolution(self, config, section, **kwargs):
          
          if section not in config:
              raise ValueError('Section [{}] not found in [{}]'.format(section, ', '.join(config.sections())))
  
          s = VSGSolution(**kwargs)
  
          s.Name = config.get(section, 'name', fallback=s.Name)
          s.FileName = os.path.normpath(config.get(section, 'filename', fallback=s.FileName))
          s.VSVersion = config.getfloat(section, 'visual_studio_version', fallback=s.VSVersion)
          if not s.VSVersion:
              raise ValueError('Solution section [%s] requires a value for Visual Studio Version (visual_studio_version)' % section)
  
          project_sections = config.getlist(section, 'projects', fallback=[])
          for project_section in project_sections:
              project = self._getproject(config, project_section, VSVersion=s.VSVersion)
              s.Projects.append(project)
  
          return s
docs: Creates a VSG solution from a configparser instance.
  
          :param object config: The instance of the configparser class
          :param str section: The section name to read.
          :param kwargs:  List of additional keyworded arguments to be passed into the VSGSolution.
          :return: A valid VSGSolution instance if succesful; None otherwise.