public static bool TryParse(string slnFileContent, SourceItemInfo slnFileInfo, out CsSolutionFile csSolutionFileInfo)
 {
     try
     {
         csSolutionFileInfo = CsSolutionFile.Parse(slnFileContent, slnFileInfo);
         return(true);
     }
     catch
     {
         csSolutionFileInfo = null;
         return(false);
     }
 }
        public static CsSolutionFile Parse(string slnFileContent, SourceItemInfo slnFileInfo)
        {
            if (string.IsNullOrEmpty(slnFileContent))
            {
                throw new ArgumentNullException(nameof(slnFileContent));
            }

            if (slnFileInfo == null)
            {
                throw new ArgumentNullException(nameof(slnFileInfo));
            }

            if (!slnFileInfo.IsValid())
            {
                throw new ArgumentException(nameof(slnFileInfo));
            }

            var solutionGuid = CsParsingHelper.ParseCsSolutionGuid(slnFileContent);

            return(new CsSolutionFile
            {
                Guid = solutionGuid,
                CsProjectFileInfos = CsParsingHelper.ParseCsProjectFileInfos(slnFileContent)
                                     .Where(csProjInfo => !string.IsNullOrEmpty(Path.GetExtension(csProjInfo.RelativeToSolutionPath)))
                                     .Select(csProjInfo =>
                {
                    csProjInfo.FullPath = PathHelper.CombinePaths(slnFileInfo.FolderPath, csProjInfo.RelativeToSolutionPath);
                    csProjInfo.FolderPath = PathHelper.GetFolderPath(csProjInfo.FullPath);

                    var extension = Path.GetExtension(csProjInfo.RelativeToSolutionPath);
                    csProjInfo.Extension = extension.Substring(1);
                    csProjInfo.Name = $"{csProjInfo.Name}.{csProjInfo.Extension}";

                    csProjInfo.Id = Constants.UndefinedId;
                    csProjInfo.SolutionGuid = solutionGuid;
                    csProjInfo.Size = Constants.UnknownSize;
                    csProjInfo.Type = SourceItemTypes.File;
                    csProjInfo.Branch = slnFileInfo.Branch;

                    return csProjInfo;
                }),
                SolutionFileInfo = slnFileInfo
            });
        }