Beispiel #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);
        }
Beispiel #2
0
        private void Walk(INugetDependency package)
        {
            var dependencies = package.Package.DependencySets.FirstOrDefault()?.Dependencies;

            if (dependencies == null)
            {
                return;
            }

            Parallel.ForEach(dependencies, dependency =>
            {
                try
                {
                    IPackage subPackage = ResolveDependency(dependency);
                    var subDependency   = new NugetDependency(subPackage);
                    Walk(subDependency);
                    package.FoundDependencies.Add(subDependency);
                }
                catch (UnableToResolvePackageDependencyException e)
                {
                    Log.Error(e.Message);
                    package.UnresolvedDependencies.Add(dependency);
                }
                catch (UnableToRetrievePackageException e)
                {
                    Log.Error(e.Message);
                    package.UnresolvedDependencies.Add(dependency);
                }
                catch (ShortCircuitingResolveDependencyException e)
                {
                    Log.Error(e.Message);
                    package.UnresolvedDependencies.Add(dependency);
                }
            });
        }
 public void AddDependency(LockFileTargetLibrary projectLibrary, Stack <LockFileTargetLibrary> depChain, PackageSpec project)
 {
     if (!m_assemblyLookup.TryGetValue(projectLibrary.Name, out var nugetDependency))
     {
         nugetDependency = new NugetDependency(projectLibrary.Name);
         m_assemblyLookup[projectLibrary.Name] = nugetDependency;
     }
     nugetDependency.AddOccurrence(projectLibrary.Version, depChain.Reverse().ToList(), project);
 }
Beispiel #4
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);
        }
        public DependencyResult Process()
        {
            try
            {
                var tree = new NugetTreeResolver(NugetSearchService);

                Project proj = new Project(ProjectPath);

                List <NugetDependency> deps = new List <NugetDependency>();
                foreach (ProjectItem reference in proj.GetItemsIgnoringCondition("PackageReference"))
                {
                    var versionMetaData = reference.Metadata.Where(meta => meta.Name == "Version").FirstOrDefault().EvaluatedValue;
                    NuGet.Versioning.VersionRange version;
                    if (NuGet.Versioning.VersionRange.TryParse(versionMetaData, out version))
                    {
                        var dep = new NugetDependency(reference.EvaluatedInclude, version);
                        deps.Add(dep);
                    }
                    else
                    {
                        Console.WriteLine("Framework dependency had no version, will not be included: " + reference.EvaluatedInclude);
                    }
                }
                foreach (ProjectItem reference in proj.GetItemsIgnoringCondition("Reference"))
                {
                    if (reference.Xml != null && !String.IsNullOrWhiteSpace(reference.Xml.Include) && reference.Xml.Include.Contains("Version="))
                    {
                        string packageInfo = reference.Xml.Include;

                        var artifact = packageInfo.Substring(0, packageInfo.IndexOf(","));

                        string versionKey                 = "Version=";
                        int    versionKeyIndex            = packageInfo.IndexOf(versionKey);
                        int    versionStartIndex          = versionKeyIndex + versionKey.Length;
                        string packageInfoAfterVersionKey = packageInfo.Substring(versionStartIndex);

                        string seapirater = ",";
                        string version;
                        if (packageInfoAfterVersionKey.Contains(seapirater))
                        {
                            int firstSeapirater = packageInfoAfterVersionKey.IndexOf(seapirater);
                            version = packageInfoAfterVersionKey.Substring(0, firstSeapirater);
                        }
                        else
                        {
                            version = packageInfoAfterVersionKey;
                        }

                        var dep = new NugetDependency(artifact, NuGet.Versioning.VersionRange.Parse(version));
                        deps.Add(dep);
                    }
                }
                ProjectCollection.GlobalProjectCollection.UnloadProject(proj);

                foreach (var dep in deps)
                {
                    tree.Add(dep);
                }

                var result = new DependencyResult()
                {
                    Success      = true,
                    Packages     = tree.GetPackageList(),
                    Dependencies = new List <Inspector.Model.PackageId>()
                };

                foreach (var package in result.Packages)
                {
                    var anyPackageReferences = result.Packages.Where(pkg => pkg.Dependencies.Contains(package.PackageId)).Any();
                    if (!anyPackageReferences)
                    {
                        result.Dependencies.Add(package.PackageId);
                    }
                }

                return(result);
            }
            catch (InvalidProjectFileException e)
            {
                return(new DependencyResult()
                {
                    Success = false
                });
            }
        }
        public DependencyResult Process()
        {
            var result = new DependencyResult();
            var tree   = new NugetTreeResolver(NugetSearchService);

            // .NET core default version
            result.ProjectVersion = "1.0.0";
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

            XmlDocument doc = new XmlDocument();

            doc.Load(ProjectPath);

            XmlNodeList versionNodes = doc.GetElementsByTagName("Version");

            if (versionNodes != null && versionNodes.Count > 0)
            {
                foreach (XmlNode version in versionNodes)
                {
                    if (version.NodeType != XmlNodeType.Comment)
                    {
                        result.ProjectVersion = version.InnerText;
                    }
                }
            }
            else
            {
                string      prefix      = "1.0.0";
                string      suffix      = "";
                XmlNodeList prefixNodes = doc.GetElementsByTagName("VersionPrefix");
                if (prefixNodes != null && prefixNodes.Count > 0)
                {
                    foreach (XmlNode prefixNode in prefixNodes)
                    {
                        if (prefixNode.NodeType != XmlNodeType.Comment)
                        {
                            prefix = prefixNode.InnerText;
                        }
                    }
                }
                XmlNodeList suffixNodes = doc.GetElementsByTagName("VersionSuffix");
                if (suffixNodes != null && suffixNodes.Count > 0)
                {
                    foreach (XmlNode suffixNode in suffixNodes)
                    {
                        if (suffixNode.NodeType != XmlNodeType.Comment)
                        {
                            suffix = suffixNode.InnerText;
                        }
                    }
                }
                result.ProjectVersion = String.Format("{0}-{1}", prefix, suffix);;
            }
            XmlNodeList packagesNodes = doc.GetElementsByTagName("PackageReference");

            if (packagesNodes.Count > 0)
            {
                foreach (XmlNode package in packagesNodes)
                {
                    XmlAttributeCollection attributes = package.Attributes;
                    if (attributes != null)
                    {
                        XmlAttribute include = attributes["Include"];
                        XmlAttribute version = attributes["Version"];
                        if (include != null && version != null)
                        {
                            var dep = new NugetDependency(include.Value, NuGet.Versioning.VersionRange.Parse(version.Value));
                            tree.Add(dep);
                        }
                    }
                }
            }

            result.Packages     = tree.GetPackageList();
            result.Dependencies = new List <PackageId>();
            foreach (var package in result.Packages)
            {
                var anyPackageReferences = result.Packages.Where(pkg => pkg.Dependencies.Contains(package.PackageId)).Any();
                if (!anyPackageReferences)
                {
                    result.Dependencies.Add(package.PackageId);
                }
            }

            return(result);
        }
Beispiel #7
0
 public DependencyNotFoundException(NugetDependency package,
                                    NugetPackage parent)
     : base($"The dependency {package} of the packet with id {parent.Id} is not present.")
 {
 }