private static CacheFile ReadCacheFile(JObject cursor) { var version = ReadInt(cursor[VersionProperty]); var hash = ReadString(cursor[DGSpecHashProperty]); var success = ReadBool(cursor[SuccessProperty]); var cacheFile = new CacheFile(hash); cacheFile.Version = version; cacheFile.Success = success; if (version >= 2) { cacheFile.ProjectFilePath = ReadString(cursor[ProjectFilePathProperty]); foreach (JToken expectedFile in cursor[ExpectedPackageFilesProperty]) { string path = ReadString(expectedFile); if (!string.IsNullOrWhiteSpace(path) && !File.Exists(path)) { cacheFile.HasAnyMissingPackageFiles = true; break; } } cacheFile.LogMessages = LockFileFormat.ReadLogMessageArray(cursor[LockFileFormat.LogsProperty] as JArray, cacheFile.ProjectFilePath); } return(cacheFile); }