コード例 #1
0
ファイル: Common.cs プロジェクト: stazz/NuGetUtils
        private static IEnumerable <String> GetSuitableFiles(
            NuGetFramework thisFramework,
            Lazy <RuntimeGraph> runtimeGraph,
            String runtimeIdentifier,
            LockFileTargetLibrary targetLibrary,
            Lazy <IDictionary <String, LockFileLibrary> > libraries
            )
        {
            var retVal = NuGetUtility.GetRuntimeAssembliesDelegate(runtimeGraph, runtimeIdentifier, targetLibrary, libraries);

            if (!retVal.Any() && libraries.Value.TryGetValue(targetLibrary.Name, out var lib))
            {
                // targetLibrary does not list stuff like build/net45/someassembly.dll
                // So let's do manual matching
                var fwGroups = lib.Files.Where(f =>
                {
                    return(f.StartsWith(PackagingConstants.Folders.Build, StringComparison.OrdinalIgnoreCase) &&
                           PackageHelper.IsAssembly(f) &&
                           Path.GetDirectoryName(f).Length > PackagingConstants.Folders.Build.Length + 1);
                }).GroupBy(f =>
                {
                    try
                    {
                        return(NuGetFramework.ParseFolder(f.Split('/')[1]));
                    }
                    catch
                    {
                        return(null);
                    }
                })
                               .Where(g => g.Key != null)
                               .Select(g => new FrameworkSpecificGroup(g.Key, g));

                var matchingGroup = NuGetFrameworkUtility.GetNearest(
                    fwGroups,
                    thisFramework,
                    g => g.TargetFramework);
                retVal = matchingGroup?.Items;
            }

            return(retVal);
        }