示例#1
0
        private List <NugetDependency> GetDependencies()
        {
            NuGet.PackageReferenceFile    configFile = new NuGet.PackageReferenceFile(PackagesConfigPath);
            List <NuGet.PackageReference> packages   = new List <NuGet.PackageReference>(configFile.GetPackageReferences());

            var dependencies = new List <NugetDependency>();

            foreach (var packageRef in packages)
            {
                string componentName = packageRef.Id;
                var    version       = new NuGet.Versioning.NuGetVersion(packageRef.Version.Version, packageRef.Version.SpecialVersion, packageRef.Version.Metadata);
                var    versionRange  = new NuGet.Versioning.VersionRange(version, true, version, true);
                NuGet.Frameworks.NuGetFramework framework = null;
                if (packageRef.TargetFramework != null)
                {
                    try
                    {
                        framework = NuGet.Frameworks.NuGetFramework.Parse(packageRef.TargetFramework.FullName);
                    } catch (Exception e)
                    {
                        Console.WriteLine("Unable to parse framework: " + packageRef.TargetFramework.FullName);
                    }
                }


                var dep = new NugetDependency(componentName, versionRange, framework);
                dependencies.Add(dep);
            }

            return(dependencies);
        }
        private NuGet.Versioning.NuGetVersion BestLibraryVersion(string name, NuGet.Versioning.VersionRange range, IList <NuGet.ProjectModel.LockFileLibrary> libraries)
        {
            var versions  = libraries.Where(lib => lib.Name == name).Select(lib => lib.Version);
            var bestMatch = range.FindBestMatch(versions);

            if (bestMatch == null)
            {
                if (versions.Count() == 1)
                {
                    return(versions.First());
                }
                else
                {
                    Console.WriteLine($"WARNING: Unable to find a version to satisfy range {range.PrettyPrint()} for the dependency " + name);
                    if (range.HasUpperBound && !range.HasLowerBound)
                    {
                        Console.WriteLine($"Instead will return the maximum range demanded: " + range.MaxVersion.ToFullString());
                        return(range.MaxVersion);
                    }
                    else
                    {
                        Console.WriteLine($"Instead will return the minimum range demanded: " + range.MinVersion.ToFullString());
                        return(range.MinVersion);
                    }
                }
            }
            else
            {
                return(bestMatch);
            }
        }
示例#3
0
        public PackageDependency(string packageId, NuGet.Versioning.VersionRange allowedVersions)
        {
            Guard.NotNull(packageId, nameof(packageId));
            Guard.NotNull(allowedVersions, nameof(allowedVersions));

            PackageId       = packageId;
            AllowedVersions = allowedVersions;
        }
示例#4
0
        public void ReplaceMaxVersion_Test(string range, string newMaxVersion)
        {
            var versionRange = NuGet.Versioning.VersionRange.Parse(range);
            var maxVersion   = NuGet.Versioning.NuGetVersion.Parse(newMaxVersion);

            var expected = new NuGet.Versioning.VersionRange(versionRange.MinVersion, true, NuGet.Versioning.NuGetVersion.Parse(newMaxVersion));

            var result = versionRange.ReplaceMaxVersion(maxVersion);

            Assert.Equal(expected, result);
        }
        public string GetBestVersion(string name, NuGet.Versioning.VersionRange range)
        {
            var allVersions = versions.Keys.Where(key => key.Name == name).Select(key => versions[key]);

            var best = range.FindBestMatch(allVersions.Select(ver => ver.version));

            foreach (var pair in versions)
            {
                if (pair.Key.Name == name && pair.Value.version == best)
                {
                    return(pair.Key.Version);
                }
            }

            return(null);
        }
        public ProjectFileDependency ParseProjectFileDependencyGroup(String projectFileDependency)
        {
            //Reverse engineered from: https://github.com/NuGet/NuGet.Client/blob/538727480d93b7d8474329f90ccb9ff3b3543714/src/NuGet.Core/NuGet.LibraryModel/LibraryRange.cs#L68
            //With some hints from https://github.com/dotnet/NuGet.BuildTasks/pull/23/files
            int firstSpace = projectFileDependency.IndexOf(' ');

            if (firstSpace <= -1)
            {
                return(new ProjectFileDependency(projectFileDependency, NuGet.Versioning.VersionRange.All));
            }
            else
            {
                var name       = projectFileDependency.Substring(0, firstSpace);
                var versionRaw = projectFileDependency.Substring(firstSpace).Trim();
                NuGet.Versioning.VersionRange nugetVersion;
                if (versionRaw.StartsWith(">= "))
                {
                    nugetVersion = MinVersionOrFloat(versionRaw.Substring(3).Trim(), true /* Include min version. */);
                }
                else if (versionRaw.StartsWith("> "))
                {
                    nugetVersion = MinVersionOrFloat(versionRaw.Substring(2).Trim(), false /* Do not include min version. */);
                }
                else if (versionRaw.StartsWith("<= "))
                {
                    var maxVersion = NuGet.Versioning.NuGetVersion.Parse(versionRaw.Substring(3).Trim());
                    nugetVersion = new NuGet.Versioning.VersionRange(null, false, maxVersion, true /* Include Max */);
                }
                else if (versionRaw.StartsWith("< "))
                {
                    var maxVersion = NuGet.Versioning.NuGetVersion.Parse(versionRaw.Substring(2).Trim());
                    nugetVersion = new NuGet.Versioning.VersionRange(null, false, maxVersion, false /* Do NOT Include Max */);
                }
                else
                {
                    nugetVersion = NuGet.Versioning.VersionRange.All;
                }
                return(new ProjectFileDependency(name, nugetVersion));
            }
        }
示例#7
0
        private List <NugetDependency> GetDependencies()
        {
            System.IO.Stream        stream   = new System.IO.FileStream(PackagesConfigPath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            PackagesConfigReader    reader   = new PackagesConfigReader(stream);
            List <PackageReference> packages = reader.GetPackages().ToList();

            var dependencies = new List <NugetDependency>();

            foreach (var packageRef in packages)
            {
                string componentName = packageRef.PackageIdentity.Id;
                var    version       = packageRef.PackageIdentity.Version;
                var    versionRange  = new NuGet.Versioning.VersionRange(version, true, version, true);
                var    framework     = NuGet.Frameworks.NuGetFramework.Parse(packageRef.TargetFramework.Framework);

                //TODO: Check that this works.
                var dep = new NugetDependency(componentName, versionRange, framework);
                dependencies.Add(dep);
            }

            return(dependencies);
        }
示例#8
0
        private static string ToPunditFileSearchVersion(NuGet.Versioning.VersionRange range)
        {
            if (range.MaxVersion != null)
            {
                if (range.MinVersion.Major < range.MaxVersion.Major)
                {
                    return(range.MinVersion.Major + ".*");
                }

                if (range.MinVersion.Minor < range.MaxVersion.Minor)
                {
                    return(range.MinVersion.Major + "." + range.MinVersion.Minor + ".*");
                }

                if (range.MinVersion.Patch < range.MaxVersion.Patch)
                {
                    return(range.MinVersion.Major + "." + range.MinVersion.Minor + "." + range.MinVersion.Patch + "-*");
                }
            }

            return(range.MinVersion.Major + "." + range.MinVersion.Minor + "." + range.MinVersion.Patch + "-" +
                   range.MinVersion.Revision);
        }
示例#9
0
 public RuntimePackageDependency(string id, NuGet.Versioning.VersionRange versionRange)
 {
 }
 public LibraryRange(string name, NuGet.Versioning.VersionRange versionRange, NuGet.LibraryModel.LibraryDependencyTarget typeConstraint)
 {
 }
示例#11
0
 public static bool TryParse(string value, out NuGet.Versioning.VersionRange versionRange)
 {
     throw null;
 }
 public static bool IsGreaterThanOrEqualTo(NuGet.Versioning.VersionRange nearVersion, NuGet.Versioning.VersionRange farVersion)
 {
     throw null;
 }
 public DownloadDependency(string name, NuGet.Versioning.VersionRange versionRange)
 {
 }
示例#14
0
 public VersionRangeExtended(NuGet.Versioning.NuGetVersion minVersion)
 {
     NuGetVersionRange = new NuGet.Versioning.VersionRange(minVersion);
 }
示例#15
0
 public bool Equals(NuGet.Versioning.VersionRange other)
 {
     throw null;
 }
示例#16
0
 public static T FindBestMatch <T>(this System.Collections.Generic.IEnumerable <T> items, NuGet.Versioning.VersionRange ideal, System.Func <T, NuGet.Versioning.NuGetVersion> selector) where T : class
 {
     throw null;
 }
示例#17
0
 public VersionRange(NuGetVersionRange versionRange)
 {
     NuGetVersionRange = versionRange;
     MaxVersion        = new Version(NuGetVersionRange.MaxVersion);
     MinVersion        = new Version(NuGetVersionRange.MinVersion);
 }
示例#18
0
 public PackageDependency(string id, NuGet.Versioning.VersionRange versionRange, System.Collections.Generic.IReadOnlyList <string> include, System.Collections.Generic.IReadOnlyList <string> exclude)
 {
 }
示例#19
0
        public VersionRange Parse(string input)
        {
            var nuGetVersionRange = NuGetVersionRange.Parse(input);

            return(new VersionRange(nuGetVersionRange));
        }
示例#20
0
 public VersionRangeExtended(NuGet.Versioning.NuGetVersion minVersion, NuGet.Versioning.NuGetVersion maxVersion, string originalString)
 {
     NuGetVersionRange = new NuGet.Versioning.VersionRange(minVersion, true, maxVersion, false, null, originalString);
 }
示例#21
0
 internal PackageReference(string name, NuGet.Versioning.VersionRange versionRange)
 {
     _path = NuGetHelper.GetPath(name, versionRange, out _version);
     _name = name;
 }
示例#22
0
 public VersionRange(NuGet.Versioning.VersionRange range, NuGet.Versioning.FloatRange floatRange) : base(default(NuGet.Versioning.NuGetVersion), default(bool), default(NuGet.Versioning.NuGetVersion), default(bool))
 {
 }
 public ProjectFileDependency(string name, NuGet.Versioning.VersionRange versionRange)
 {
     this.name         = name;
     this.versionRange = versionRange;
 }
示例#24
0
 public static bool TryParse(string value, bool allowFloating, out NuGet.Versioning.VersionRange versionRange)
 {
     versionRange = default(NuGet.Versioning.VersionRange); throw null;
 }
示例#25
0
 public static NuGet.Versioning.INuGetVersionable FindBestMatch(this System.Collections.Generic.IEnumerable <NuGet.Versioning.INuGetVersionable> items, NuGet.Versioning.VersionRange ideal)
 {
     throw null;
 }
示例#26
0
 public VersionRangeExtended(NuGet.Versioning.VersionRange range)
 {
     NuGetVersionRange = range;
 }