private static List <String> CreatePackage() { List <String> l = new List <string>(); foreach (var path in Directory.EnumerateFiles(RootFolderPath, "*.csproj", SearchOption.AllDirectories).OrderBy(el => el)) { if (path.Contains("_Pcl_")) { continue; } if (path.Contains(".Test.")) { continue; } var package = NugetPackageInfo.Create(path); if (package == null) { continue; } if (package.PackageBuilder.Files.Count == 0) { continue; } var fileName = String.Format("C:\\GitHub\\higty\\HigLabo\\NugetPackage\\{0}.{1}.nupkg", package.Nuspec.Id, package.Nuspec.Version); if (File.Exists(fileName) == false) { l.Add(fileName); package.CreateNupkgFile(fileName); Console.WriteLine("Created: " + fileName); } System.Threading.Thread.Sleep(100); } return(l); }
private static void LoadDependencyPackages(List <NugetPackageInfo> packages, String projectFilePath) { var dependencyPackage = NugetPackageInfo.Create(projectFilePath); if (dependencyPackage == null) { return; } packages.Add(dependencyPackage); }
public static NugetPackageInfo Create(String projectFilePath) { var n = new NugetPackageInfo(); var folderPath = Path.GetDirectoryName(projectFilePath); var di = new DirectoryInfo(folderPath); var projectName = di.Name; n.Nuspec.Id = Path.GetFileNameWithoutExtension(projectFilePath); n.Nuspec.Authors = "Higty"; n.Nuspec.Owners = "Higty"; n.Nuspec.ProjectUrl = "https://github.com/higty/higlabo"; n.Nuspec.Tags = n.Nuspec.Id; var AssemblyInfo_cs = File.ReadAllText(Path.Combine(folderPath, "Properties", "AssemblyInfo.cs")); { var sr = new StringReader(AssemblyInfo_cs); while (sr.Peek() > -1) { var line = sr.ReadLine(); if (line.StartsWith("[assembly: AssemblyVersion(")) { n.Nuspec.Version = line.ExtractString('"', '"'); } if (line.StartsWith("[assembly: AssemblyDescription(")) { n.Nuspec.Description = line.ExtractString('"', '"'); } if (line.StartsWith("[assembly: AssemblyCopyright(")) { n.Nuspec.Copyright = line.ExtractString('"', '"'); } } } if (n.Nuspec.Version.IsNullOrEmpty()) { return(null); } if (n.Nuspec.Description.IsNullOrEmpty()) { n.Nuspec.Description = "HigLabo library provide features of Mail, Ftp, Rss, ObjectMapper, Converter, ORM, ASP.NET Mvc...etc.See on GitHub(https://github.com/higty/higlabo)"; } var doc = new HtmlDocument(); doc.LoadHtml(File.ReadAllText(projectFilePath)); var outputTypeNode = doc.DocumentNode.SelectSingleNode("//propertygroup//outputtype"); var outputType = outputTypeNode.InnerText; if (outputType != "Library") { return(null); } var outputPathNode = doc.DocumentNode.SelectSingleNode("//propertygroup[contains(@condition, 'Release')]//outputpath"); var dllFolderPath = String.Format("{0}\\{1}", di.FullName, outputPathNode.InnerText); if (Directory.Exists(dllFolderPath) == false) { return(null); } var targetFrameworkVersionNode = doc.DocumentNode.SelectSingleNode("//propertygroup//targetframeworkversion"); n.TargetFrameworkVersion = targetFrameworkVersionNode.InnerText; if (n.TargetFrameworkVersion.Contains("Pcl")) { return(null); } //var dependencyNodes = doc.DocumentNode.SelectNodes("//itemgroup//projectreference"); //if (dependencyNodes != null) //{ // foreach (var node in dependencyNodes) // { // var path = node.Attributes["Include"].Value; // var u = new Uri(new Uri(projectFilePath), path); // LoadDependencyPackages(n.DependencyPackages, u.LocalPath); // } // var dd = new List<PackageDependency>(); // foreach (var item in n.DependencyPackages) // { // VersionSpec sVersion = new VersionSpec(); // sVersion.MinVersion = new SemanticVersion(item.Nuspec.Version); // sVersion.IsMinInclusive = true; // dd.Add(new PackageDependency(item.Nuspec.Id, sVersion)); // } // if (dd.Count > 0) // { // n.PackageBuilder.DependencySets.Add(new PackageDependencySet(FrameworkNames[n.TargetFrameworkVersion], dd)); // } //} //var referenceNodes = doc.DocumentNode.SelectNodes("//itemgroup//reference"); //if (referenceNodes != null) //{ // var dd = new List<PackageDependency>(); // foreach (var node in referenceNodes) // { // if (node.Attributes["Include"] == null) { continue; } // var include = node.Attributes["Include"].Value; // var p = ProjectReferenceInfo.Parse(include); // if (String.IsNullOrEmpty(p.Version)) { continue; } // VersionSpec sVersion = new VersionSpec(); // sVersion.MinVersion = new SemanticVersion(p.Version); // sVersion.IsMinInclusive = true; // dd.Add(new PackageDependency(p.ID, sVersion)); // } // if (dd.Count > 0) // { // n.PackageBuilder.DependencySets.Add(new PackageDependencySet(FrameworkNames[n.TargetFrameworkVersion], dd)); // } //} var ff = new List <ManifestFile>(); var f = new ManifestFile(); f.Source = projectName + ".dll"; f.Target = "lib\\" + FrameworkVersions[n.TargetFrameworkVersion]; ff.Add(f); n.PackageBuilder.PopulateFiles(dllFolderPath, ff); n.PackageBuilder.Populate(n.Nuspec); return(n); }