private Task GetBuildDefinition() { return(Task.Run(() => { if (CurrentVersion == null) { CurrentVersion = BuildsIndex.GetLast(); } if (CurrentVersion == null) { Logger.Error(null, "Cannot retrieve any new version..."); throw new NoAvailableBuildsException(); } if (!BuildsIndex.Contains(CurrentVersion) && CurrentVersion.IsLower(BuildsIndex.GetFirst())) { CurrentVersion = BuildsIndex.GetLast(); SetRepairNeeded(); } try { var downloadEntry = new DownloadEntry( Settings.GetRemoteBuildDefinitionUrl(CurrentVersion), Settings.GetRemoteBuildDefinitionUrl(CurrentVersion).Replace(Settings.RemoteUrl, string.Empty), null, null, null ); CurrentBuildDefinition = Downloader.DownloadJson <BuildDefinition>(downloadEntry, Serializer); Logger.Info("Retrieved definition for {CurrentVersion}", CurrentVersion); } catch { CurrentBuildDefinition = new BuildDefinition() { Entries = new BuildDefinitionEntry[0] }; Logger.Warning("Cannot retrieve the build definition for {CurrentVersion}", CurrentVersion); } })); }