コード例 #1
0
ファイル: Generations.cs プロジェクト: layomia/dotnet_arcade
        public static Version DetermineGenerationForFramework(NuGetFramework framework, bool useNetPlatform)
        {
            FrameworkExpander expander = new FrameworkExpander();
            var generationFramework    = useNetPlatform ? FrameworkConstants.FrameworkIdentifiers.NetPlatform : FrameworkConstants.FrameworkIdentifiers.NetStandard;
            var generationFxs          = expander.Expand(framework).Where(fx => fx.Framework == generationFramework).Select(fx => fx.Version);

            return(generationFxs.Max());
        }
コード例 #2
0
        public void FrameworkExpander_Win()
        {
            NuGetFramework framework = NuGetFramework.Parse("win");

            FrameworkExpander expander = new FrameworkExpander();
            var expanded = expander.Expand(framework).ToArray();

            Assert.Equal <int>(7, expanded.Length);
        }
コード例 #3
0
        public void FrameworkExpander_NetCore45()
        {
            NuGetFramework framework = NuGetFramework.Parse("nfcore45");

            FrameworkExpander expander = new FrameworkExpander();
            var expanded = expander.Expand(framework).ToArray();

            Assert.Equal(0, expanded.Length);
        }
コード例 #4
0
        public void FrameworkExpander_NetCore45()
        {
            NuGetFramework framework = NuGetFramework.Parse("nfcore45");

            FrameworkExpander expander = new FrameworkExpander();
            var expanded = expander.Expand(framework).ToArray();

            Assert.Equal(1, expanded.Length);
            Assert.Equal("native, Version=v0.0", expanded[0].ToString());
        }
コード例 #5
0
        public void FrameworkExpander_Indirect()
        {
            NuGetFramework framework = NuGetFramework.Parse("win9");
            NuGetFramework indirect  = new NuGetFramework(".NETCore", new Version(4, 5));

            FrameworkExpander expander = new FrameworkExpander();
            var expanded = expander.Expand(framework).ToArray();

            Assert.True(expanded.Contains(indirect, NuGetFramework.Comparer), String.Join("|", expanded.Select(e => e.ToString())));
        }
コード例 #6
0
        public void FrameworkExpander_UAPWIN()
        {
            NuGetFramework framework = NuGetFramework.Parse("UAP10.0");
            NuGetFramework indirect  = new NuGetFramework("Windows", new Version(8, 1, 0, 0));

            FrameworkExpander expander = new FrameworkExpander();
            var expanded = expander.Expand(framework).ToArray();

            Assert.True(expanded.Contains(indirect, NuGetFramework.Comparer), String.Join("|", expanded.Select(e => e.ToString())));
        }
コード例 #7
0
        public void FrameworkExpander_Basic()
        {
            NuGetFramework framework = NuGetFramework.Parse("net45");

            FrameworkExpander expander = new FrameworkExpander();
            var expanded = expander.Expand(framework).ToArray();

            Assert.Equal(2, expanded.Length);
            Assert.Equal(".NETFramework,Version=v4.5,Profile=Client", expanded[0].ToString());
            Assert.Equal(".NETFramework,Version=v4.5,Profile=Full", expanded[1].ToString());
        }
コード例 #8
0
        private static IEnumerable <FrameworkEnumeratorData> ExpandByUsingFrameworkExpander(
            HashSet <FrameworkEnumeratorData> existing,
            FrameworkEnumeratorData data,
            FrameworkExpander expander)
        {
            var expanded = expander
                           .Expand(data.Framework.NuGetFramework)
                           .Select(GetFrameworkEnumeratorData);

            if (expanded.Any())
            {
                foreach (var added in AddFrameworks(existing, expanded))
                {
                    yield return(added);
                }
            }
        }
コード例 #9
0
        public void FrameworkExpander_Basic()
        {
            NuGetFramework framework = NuGetFramework.Parse("net45");

            FrameworkExpander expander = new FrameworkExpander();
            var expanded = expander
                           .Expand(framework)
                           .OrderBy(f => f, new NuGetFrameworkSorter())
                           .ToArray();

            Assert.Equal(7, expanded.Length);
            Assert.Equal(".NETFramework,Version=v4.5,Profile=Client", expanded[0].ToString());
            Assert.Equal(".NETFramework,Version=v4.5,Profile=Full", expanded[1].ToString());
            Assert.Equal(".NETPlatform,Version=v5.0", expanded[2].ToString()); // dotnet
            Assert.Equal(new Version(0, 0, 0, 0), expanded[2].Version);
            Assert.Equal(".NETPlatform,Version=v5.0", expanded[3].ToString()); // dotnet5
            Assert.Equal(new Version(5, 0, 0, 0), expanded[3].Version);
            Assert.Equal(".NETPlatform,Version=v5.2", expanded[4].ToString());
            Assert.Equal(".NETStandard,Version=v1.0", expanded[5].ToString());
            Assert.Equal(".NETStandard,Version=v1.1", expanded[6].ToString());
        }
コード例 #10
0
        public IEnumerable <FrameworkEnumeratorData> Expand(IEnumerable <FrameworkEnumeratorData> frameworks, FrameworkExpansionOptions options)
        {
            var existing = new HashSet <FrameworkEnumeratorData>();

            foreach (var data in frameworks)
            {
                var originalAdded = AddFramework(existing, data);
                if (originalAdded != null)
                {
                    yield return(originalAdded);
                }

                if (options.HasFlag(FrameworkExpansionOptions.RoundTripDotNetFrameworkName))
                {
                    foreach (var added in ExpandByRoundTrippingDotNetFrameworkName(existing, data))
                    {
                        yield return(added);
                    }
                }

                if (options.HasFlag(FrameworkExpansionOptions.RoundTripShortFolderName))
                {
                    foreach (var added in ExpandByRoundTrippingShortFolderName(existing, data))
                    {
                        yield return(added);
                    }
                }

                if (options.HasFlag(FrameworkExpansionOptions.FrameworkExpander))
                {
                    var expander = new FrameworkExpander();

                    foreach (var added in ExpandByUsingFrameworkExpander(existing, data, expander))
                    {
                        yield return(added);
                    }
                }
            }
        }
コード例 #11
0
        public void FrameworkExpander_Win()
        {
            NuGetFramework framework = NuGetFramework.Parse("win");

            FrameworkExpander expander = new FrameworkExpander();
            var expanded = expander
                           .Expand(framework)
                           .OrderBy(f => f, new NuGetFrameworkSorter())
                           .ToArray();

            Assert.Equal(10, expanded.Length);
            Assert.Equal(".NETCore,Version=v0.0", expanded[0].ToString());
            Assert.Equal(".NETCore,Version=v4.5", expanded[1].ToString());
            Assert.Equal(".NETPlatform,Version=v5.0", expanded[2].ToString()); // dotnet
            Assert.Equal(new Version(0, 0, 0, 0), expanded[2].Version);
            Assert.Equal(".NETPlatform,Version=v5.0", expanded[3].ToString()); // dotnet5
            Assert.Equal(new Version(5, 0, 0, 0), expanded[3].Version);
            Assert.Equal(".NETPlatform,Version=v5.2", expanded[4].ToString());
            Assert.Equal(".NETStandard,Version=v1.0", expanded[5].ToString());
            Assert.Equal(".NETStandard,Version=v1.1", expanded[6].ToString());
            Assert.Equal("Windows,Version=v8.0", expanded[7].ToString());
            Assert.Equal("WinRT,Version=v0.0", expanded[8].ToString());
            Assert.Equal("WinRT,Version=v4.5", expanded[9].ToString());
        }
コード例 #12
0
        private void LoadFrameworks()
        {
            _frameworks = new Dictionary <NuGetFramework, string[]>(NuGetFramework.Comparer);

            // load the specified frameworks
            foreach (var framework in Frameworks)
            {
                var runtimeIds = framework.GetMetadata("RuntimeIDs")?.Split(';');

                NuGetFramework fx;
                try
                {
                    fx = FrameworkUtilities.ParseNormalized(framework.ItemSpec);
                }
                catch (Exception ex)
                {
                    Log.LogError($"Could not parse Framework {framework.ItemSpec}. {ex}");
                    continue;
                }

                if (fx.Equals(NuGetFramework.UnsupportedFramework))
                {
                    Log.LogError($"Did not recognize {framework.ItemSpec} as valid Framework.");
                    continue;
                }

                _frameworks.Add(fx, runtimeIds);
            }

            // inspect any TFMs explicitly targeted
            var fileFrameworks = _targetPathToPackageItem.Values.Select(f => f.TargetFramework).Distinct(NuGetFramework.Comparer).Where(f => f != null);

            foreach (var fileFramework in fileFrameworks)
            {
                if (!_frameworks.ContainsKey(fileFramework))
                {
                    _frameworks.Add(fileFramework, s_noRids);
                }
            }

            // inspect any TFMs inbox
            var index           = PackageIndex.Load(PackageIndexes.Select(pi => pi.GetMetadata("FullPath")));
            var inboxFrameworks = index.GetInboxFrameworks(PackageId).NullAsEmpty();

            foreach (var inboxFramework in inboxFrameworks)
            {
                if (!_frameworks.ContainsKey(inboxFramework))
                {
                    _frameworks.Add(inboxFramework, s_noRids);
                }
            }

            // inspect for derived TFMs
            var expander = new FrameworkExpander();

            foreach (var framework in _frameworks.Keys.ToArray())
            {
                var derivedFxs = expander.Expand(framework);

                foreach (var derivedFx in derivedFxs)
                {
                    if (derivedFx.IsDesktop() && derivedFx.HasProfile)
                    {
                        // skip desktop profiles
                        continue;
                    }

                    if (derivedFx.Version.Major == 0 && derivedFx.Version.Minor == 0)
                    {
                        // skip unversioned frameworks
                        continue;
                    }

                    if (s_ignoredFrameworks.Contains(derivedFx.Framework))
                    {
                        continue;
                    }

                    if (!_frameworks.ContainsKey(derivedFx))
                    {
                        _frameworks.Add(derivedFx, s_noRids);
                    }
                }
            }
        }
コード例 #13
0
        private void LoadFrameworks()
        {
            _frameworks = new Dictionary <NuGetFramework, string[]>(NuGetFramework.Comparer);

            // load the specified frameworks
            foreach (var framework in Frameworks)
            {
                var runtimeIds = framework.GetMetadata("RuntimeIDs")?.Split(';');

                NuGetFramework fx;
                try
                {
                    fx = FrameworkUtilities.ParseNormalized(framework.ItemSpec);
                }
                catch (Exception ex)
                {
                    Log.LogError($"Could not parse Framework {framework.ItemSpec}. {ex}");
                    continue;
                }

                if (fx.Equals(NuGetFramework.UnsupportedFramework))
                {
                    Log.LogError($"Did not recognize {framework.ItemSpec} as valid Framework.");
                    continue;
                }

                _frameworks.Add(fx, runtimeIds);
            }

            // inspect any TFMs explicitly targeted
            var fileFrameworks = _targetPathToPackageItem.Values.Select(f => f.TargetFramework).Distinct(NuGetFramework.Comparer).Where(f => f != null);

            foreach (var fileFramework in fileFrameworks)
            {
                if (!_frameworks.ContainsKey(fileFramework))
                {
                    _frameworks.Add(fileFramework, s_noRids);
                }
            }

            // inspect any TFMs inbox
            var frameworkData   = FrameworkSet.Load(FrameworkListsPath);
            var inboxFrameworks = frameworkData.Frameworks.SelectMany(f => f.Value)
                                  .Where(fx => fx.Assemblies.ContainsKey(PackageId))
                                  .Select(fx => NuGetFramework.Parse(fx.FrameworkName.FullName));

            foreach (var inboxFramework in inboxFrameworks)
            {
                if (!_frameworks.ContainsKey(inboxFramework))
                {
                    _frameworks.Add(inboxFramework, s_noRids);
                }
            }

            // inspect for derived TFMs
            var expander = new FrameworkExpander();

            foreach (var framework in _frameworks.Keys.ToArray())
            {
                var derivedFxs = expander.Expand(framework);

                foreach (var derivedFx in derivedFxs)
                {
                    if (!_frameworks.ContainsKey(derivedFx))
                    {
                        _frameworks.Add(derivedFx, s_noRids);
                    }
                }
            }
        }
コード例 #14
0
        private static ISet <NuGetFramework> ExpandTargetFramework(NuGetFramework targetFramework)
        {
            var expander = new FrameworkExpander();

            return(new HashSet <NuGetFramework>(expander.Expand(targetFramework)));
        }