Пример #1
0
 /// <summary>
 /// Find all possible dependencies for package id.
 /// </summary>
 private List <RuntimePackageDependency> FindRuntimeDependenciesInternal(RuntimeDependencyKey key)
 {
     // Find all compatible RIDs
     foreach (var expandedRuntime in ExpandRuntimeCached(key.RuntimeName))
     {
         RuntimeDescription runtimeDescription;
         if (Runtimes.TryGetValue(expandedRuntime, out runtimeDescription))
         {
             if (runtimeDescription.RuntimeDependencySets.TryGetValue(key.PackageId, out var dependencySet))
             {
                 return(dependencySet.Dependencies.Values.AsList());
             }
         }
     }
     return(new List <RuntimePackageDependency>());
 }
Пример #2
0
        public IEnumerable <RuntimePackageDependency> FindRuntimeDependencies(string runtimeName, string packageId)
        {
            if (_packagesWithDependencies == null)
            {
                // Find all packages that have runtime dependencies and cache this index.
                _packagesWithDependencies = new HashSet <string>(
                    Runtimes.SelectMany(e => e.Value.RuntimeDependencySets.Select(f => f.Key)),
                    StringComparer.OrdinalIgnoreCase);
            }

            if (_packagesWithDependencies.Contains(packageId))
            {
                var key = new RuntimeDependencyKey(runtimeName, packageId);

                return(_dependencyCache.GetOrAdd(key, k => FindRuntimeDependenciesInternal(k)));
            }

            return(Enumerable.Empty <RuntimePackageDependency>());
        }