Пример #1
0
        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);
        }
Пример #2
0
        private static void LoadDependencyPackages(List <NugetPackageInfo> packages, String projectFilePath)
        {
            var dependencyPackage = NugetPackageInfo.Create(projectFilePath);

            if (dependencyPackage == null)
            {
                return;
            }

            packages.Add(dependencyPackage);
        }
Пример #3
0
        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);
        }