Exemple #1
0
        public override IEnumerable<FrameworkName> GetSupportedFrameworks()
        {
            IEnumerable<FrameworkName> fileFrameworks;
            #if LOADER
            using (Stream stream = _streamFactory())
            {
                var package = new ZipArchive(stream);

                string effectivePath;
                fileFrameworks = from part in package.Entries
                                 let path = part.FullName.Replace('/', '\\')
                                 where IsPackageFile(part)
                                 select VersionUtility.ParseFrameworkNameFromFilePath(path, out effectivePath);

            }
            #else
            IEnumerable<IPackageFile> cachedFiles;
            if (_enableCaching && MemoryCache.Instance.TryGetValue(GetFilesCacheKey(), out cachedFiles))
            {
                fileFrameworks = cachedFiles.Select(c => c.TargetFramework);
            }
            else
            {
                using (Stream stream = _streamFactory())
                {
                    var package = Package.Open(stream);

                    string effectivePath;
                    fileFrameworks = from part in package.GetParts()
                                     where IsPackageFile(part)
                                     select VersionUtility.ParseFrameworkNameFromFilePath(UriUtility.GetPath(part.Uri), out effectivePath);

                }
            }
            #endif

            return base.GetSupportedFrameworks()
                       .Concat(fileFrameworks)
                       .Where(f => f != null)
                       .Distinct();
        }