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(); }