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.

def _getsolution(self, config, section, **kwargs):
        """
        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.
        """
        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