Beispiel #1
0
        SourcePackage GetPackage(PackageReference reference)
        {
            SourcePackage result;

            if (_cache.TryGetValue(reference.PackageName, out result))
            {
                if (result == null)
                {
                    Log.Error(reference.Source, null, "Circular reference to " + reference.Quote());
                    return(new SourcePackage(reference.PackageName, reference.PackageVersion));
                }

                result.Flags |= SourcePackageFlags.Cached;
                result.Flags &= ~SourcePackageFlags.Startup;
                return(result);
            }

            var package = GetFile(reference);

            if (package == null)
            {
                Log.Error(reference.Source, ErrorCode.E0100, "Package " + reference.Quote() + " was not found");
                return(new SourcePackage(reference.PackageName, reference.PackageVersion));
            }

            result = package.CreateSourcePackage();
            _cache[reference.PackageName] = null;

            foreach (var r in package.References)
            {
                result.References.Add(GetPackage(r));
            }

            _cache[reference.PackageName] = result;
            return(result);
        }