internal static async Task CreateRelease() { try { string version = BuildConfig.GetAppVersionString(); var newRelease = new NewRelease(version); newRelease.Name = $"New Update {version}"; newRelease.Body = $"Update for version {version}"; newRelease.Draft = false; newRelease.Prerelease = false; var gitHub = new GitHubClient(new ProductHeaderValue(BuildConfig.GetGitAppName())); gitHub.Credentials = new Credentials(BuildConfig.GetGitToken()); bool success = false; int maxTries = 2; int current = 0; Release release = null; while (!success && current++ < maxTries) { release = await gitHub.Repository.Release.Create("clauderoy790", BuildConfig.GetGitAppName(), newRelease); success = release != null && !string.IsNullOrEmpty(release.UploadUrl); } if (!success) { throw new Exception($"Failed to create new releaes, tried {current} times."); } var files = Directory.GetFiles(BuildConfig.GetGitRepoLocalPath()); foreach (var file in files) { if (!BuildConfig.ShouldIncludeFileInReleaseAsset(file)) { continue; } using (var fs = File.OpenRead(file)) { FileInfo info = new FileInfo(file); var assetUpload = new ReleaseAssetUpload() { FileName = info.Name, ContentType = MimeMapping.GetMimeMapping(info.Name), RawData = fs }; var asset = await gitHub.Repository.Release.UploadAsset(release, assetUpload); Console.WriteLine($"Uploaded asset {info.Name} to release {version} successfully"); }; } } catch (Exception ex) { Console.WriteLine($"Failed to create release: {ex.Message}"); } Console.WriteLine("Release creation done"); }