private static void GeneratePackagePages(string outputFilePath, Dictionary<PackageKey, FeedPackage> feedPackages) { foreach (var package in feedPackages.Where(pckge => pckge.Value.CurrentVersion != null)) { using (var stringWriter = new StringWriter()) { using (var writer = new HtmlTextWriter(stringWriter)) { writer.RenderBeginTag(HtmlTextWriterTag.H1); { writer.WriteLine("Nuget Package Report for {0} {1}", package.Value.CurrentVersion.Id, package.Value.CurrentVersion.Version); } writer.RenderEndTag(); writer.WriteBreak(); writer.WriteBreak(); writer.WritePackageInfoLine("Description", package.Value.CurrentVersion.Description); writer.WritePackageInfoLine("Created", package.Value.CurrentVersion.Created.ToShortDateString()); writer.WritePackageInfoLine("Last Updated", package.Value.CurrentVersion.LastUpdated.ToShortDateString()); writer.WritePackageInfoLine("Release Notes", package.Value.CurrentVersion.ReleaseNotes); writer.RenderBeginTag(HtmlTextWriterTag.B); { writer.WriteLine("License Url"); } writer.RenderEndTag(); writer.WriteBreak(); if (!string.IsNullOrEmpty(package.Value.CurrentVersion.LicenseUrl)) { writer.WriteUrlLink(package.Value.CurrentVersion.LicenseUrl, package.Value.CurrentVersion.LicenseUrl); } else { writer.WriteLine("No License Url"); } writer.WriteBreak(); writer.WriteBreak(); writer.RenderBeginTag(HtmlTextWriterTag.B); { writer.WriteLine("Project Url"); } writer.RenderEndTag(); writer.WriteBreak(); if (!string.IsNullOrEmpty(package.Value.CurrentVersion.ProjectUrl)) { writer.WriteUrlLink(package.Value.CurrentVersion.ProjectUrl, package.Value.CurrentVersion.ProjectUrl); } else { writer.WriteLine("No Project Url"); } writer.WriteBreak(); writer.WriteBreak(); writer.RenderBeginTag(HtmlTextWriterTag.B); { writer.WriteLine("Gallery Details Url"); } writer.RenderEndTag(); writer.WriteBreak(); if (!string.IsNullOrEmpty(package.Value.CurrentVersion.GalleryDetailsUrl)) { writer.WriteUrlLink(package.Value.CurrentVersion.GalleryDetailsUrl, package.Value.CurrentVersion.GalleryDetailsUrl); } else { writer.WriteLine("No Gallery Details Url"); } writer.WriteBreak(); writer.WriteBreak(); var content = writer.InnerWriter.ToString(); var path = Path.Combine(outputFilePath, string.Format("{0}{1}.html", package.Value.CurrentVersion.Id, package.Value.CurrentVersion.Version)); File.WriteAllText(path, content); } } } }