public static bool TryGetGlobalSettings(string path, out GlobalSettings globalSettings) { globalSettings = null; string globalJsonPath = null; if (Path.GetFileName(path) == GlobalFileName) { globalJsonPath = path; path = Path.GetDirectoryName(path); } else if (!HasGlobalFile(path)) { return false; } else { globalJsonPath = Path.Combine(path, GlobalFileName); } globalSettings = new GlobalSettings(); try { using (var fs = File.OpenRead(globalJsonPath)) { var reader = new StreamReader(fs); var jobject = JsonDeserializer.Deserialize(reader) as JsonObject; if (jobject == null) { throw new InvalidOperationException("The JSON file can't be deserialized to a JSON object."); } var projectSearchPaths = jobject.ValueAsStringArray("projects") ?? jobject.ValueAsStringArray("sources") ?? new string[] { }; globalSettings.ProjectSearchPaths = new List<string>(projectSearchPaths); globalSettings.PackagesPath = jobject.ValueAsString("packages"); globalSettings.FilePath = globalJsonPath; } } catch (Exception ex) { throw FileFormatException.Create(ex, globalJsonPath); } return true; }