public void FrameworkReducer_JsonNetGetNearestLibGroup(string projectFramework, string expectedFramework) { // Arrange // Get nearest lib group for newtonsoft.json 7.0.1-beta2 FrameworkReducer reducer = new FrameworkReducer(); var project = NuGetFramework.Parse(projectFramework); List<NuGetFramework> frameworks = new List<NuGetFramework>() { NuGetFramework.Parse("net20"), NuGetFramework.Parse("net35"), NuGetFramework.Parse("net40"), NuGetFramework.Parse("net45"), NuGetFramework.Parse("portable-net40+wp80+win8+wpa81+sl5"), NuGetFramework.Parse("portable-net45+wp80+win8+wpa81+aspnetcore50") }; // Act var result = reducer.GetNearest(project, frameworks); // Assert Assert.Equal(expectedFramework, result.GetShortFolderName()); }
public CompatibilityTable(IEnumerable<NuGetFramework> frameworks, IFrameworkNameProvider mappings, IFrameworkCompatibilityProvider compat) { _compat = compat; _mappings = mappings; _table = GetTable(frameworks, _mappings, _compat); _reducer = new FrameworkReducer(_mappings, _compat); }
public IEnumerable<string> GetCompatibleAssemblyPaths() { List<string> assemblyPaths = new List<string>(); FrameworkReducer reducer = new FrameworkReducer(); NuGetFramework targetFramework = new NuGetFramework(".NETFramework", Version.Parse("4.5")); // If alternate versions of Wyam are developed (I.e., for DNX), this will need to be switched NuGetFrameworkFullComparer frameworkComparer = new NuGetFrameworkFullComparer(); IPackageRepository packageRepository = PackageRepositoryFactory.Default.CreateRepository(Path); PackageManager packageManager = new PackageManager(packageRepository, Path); foreach (IPackage package in packageManager.LocalRepository.GetPackages()) { List<KeyValuePair<IPackageFile, NuGetFramework>> filesAndFrameworks = package.GetLibFiles() .Select(x => new KeyValuePair<IPackageFile, NuGetFramework>(x, new NuGetFramework(x.TargetFramework.Identifier, x.TargetFramework.Version, x.TargetFramework.Profile))) .ToList(); NuGetFramework targetPackageFramework = reducer.GetNearest(targetFramework, filesAndFrameworks.Select(x => x.Value)); if (targetPackageFramework != null) { assemblyPaths.AddRange(filesAndFrameworks .Where(x => frameworkComparer.Equals(targetPackageFramework, x.Value)) .Select(x => System.IO.Path.Combine(Path, String.Format(CultureInfo.InvariantCulture, "{0}.{1}", package.Id, package.Version), x.Key.Path)) .Where(x => System.IO.Path.GetExtension(x) == ".dll")); } } return assemblyPaths; }
public DependencyInfoResourceV2(IPackageRepository repo) { V2Client = repo; _rangeSearched = new ConcurrentDictionary<string, VersionRange>(StringComparer.OrdinalIgnoreCase); _found = new ConcurrentDictionary<string, HashSet<PackageDependencyInfo>>(StringComparer.OrdinalIgnoreCase); _lockObjsById = new ConcurrentDictionary<string, object>(StringComparer.OrdinalIgnoreCase); _frameworkReducer = new FrameworkReducer(); _packageDepComparer = new PackageDependencyComparer(); _versionComparer = VersionComparer.VersionRelease; _versionRangeComparer = VersionRangeComparer.VersionRelease; _useFindById = !(repo is DataServicePackageRepository); }
public void FrameworkReducer_GetNearestUAPTie2() { FrameworkReducer reducer = new FrameworkReducer(); var project = NuGetFramework.Parse("UAP10.0"); var win = NuGetFramework.Parse("win"); var wpa81 = NuGetFramework.Parse("wpa81"); var native = NuGetFramework.Parse("native"); var netcore = NuGetFramework.Parse("netcore"); var net45 = NuGetFramework.Parse("net45"); var all = new NuGetFramework[] { native, netcore, win, net45, wpa81 }; var result = reducer.GetNearest(project, all); Assert.Equal(netcore, result); }
internal static FrameworkSpecificGroup GetMostCompatibleGroup(NuGetFramework projectTargetFramework, IEnumerable<FrameworkSpecificGroup> itemGroups, bool altDirSeparator = false) { FrameworkReducer reducer = new FrameworkReducer(); NuGetFramework mostCompatibleFramework = reducer.GetNearest(projectTargetFramework, itemGroups.Select(i => i.TargetFramework)); if (mostCompatibleFramework != null) { IEnumerable<FrameworkSpecificGroup> mostCompatibleGroups = itemGroups.Where(i => i.TargetFramework.Equals(mostCompatibleFramework)); var mostCompatibleGroup = mostCompatibleGroups.SingleOrDefault(); if (IsValid(mostCompatibleGroup)) { mostCompatibleGroup = new FrameworkSpecificGroup(mostCompatibleGroup.TargetFramework, GetValidPackageItems(mostCompatibleGroup.Items).Select(item => altDirSeparator ? PathUtility.ReplaceDirSeparatorWithAltDirSeparator(item) : PathUtility.ReplaceAltDirSeparatorWithDirSeparator(item))); } return mostCompatibleGroup; } return null; }
public void FrameworkReducer_GetNearestAspNeg(string project, string framework) { FrameworkReducer reducer = new FrameworkReducer(); List<NuGetFramework> frameworks = new List<NuGetFramework>() { NuGetFramework.Parse(framework), }; NuGetFramework projectFramework = NuGetFramework.Parse(project); var result = reducer.GetNearest(projectFramework, frameworks); Assert.Null(result); }
public void FrameworkReducer_GetNearestAzureRepro() { FrameworkReducer reducer = new FrameworkReducer(); List<NuGetFramework> frameworks = new List<NuGetFramework>() { NuGetFramework.Parse("net40"), NuGetFramework.Parse("portable-net45+wp8+win8+wpa"), NuGetFramework.Parse("sl4") }; NuGetFramework projectFramework = NuGetFramework.Parse("net45"); var result = reducer.GetNearest(projectFramework, frameworks); Assert.Equal("net4", result.GetShortFolderName()); }
public void FrameworkReducer_GetNearestWithUnsupported3() { FrameworkReducer reducer = new FrameworkReducer(); var all = new NuGetFramework[] { NuGetFramework.UnsupportedFramework }; var result = reducer.GetNearest(NuGetFramework.UnsupportedFramework, all); Assert.Equal(NuGetFramework.UnsupportedFramework, result); }
public void FrameworkReducer_ReduceUpwardsNonSingle() { FrameworkReducer reducer = new FrameworkReducer(); var net35 = NuGetFramework.Parse("net35"); var net40 = NuGetFramework.Parse("net40"); var net45 = NuGetFramework.Parse("net45"); var net451 = NuGetFramework.Parse("net451"); var net453 = NuGetFramework.Parse("net453"); var wp8 = NuGetFramework.Parse("wp8"); var wp81 = NuGetFramework.Parse("wp81"); var all = new NuGetFramework[] { net35, net40, net45, net451, net453, wp8, wp81 }; var result = reducer.ReduceUpwards(all); Assert.Equal(net453, result.First()); Assert.Equal(wp81, result.Skip(1).First()); }
public void FrameworkReducer_ReduceNonSingle() { FrameworkReducer reducer = new FrameworkReducer(); var sl3wp = NuGetFramework.Parse("sl3-wp"); var wp7 = NuGetFramework.Parse("wp7"); var win81 = NuGetFramework.Parse("win81"); var all = new NuGetFramework[] { sl3wp, wp7, win81 }; var result = reducer.Reduce(all); Assert.Equal(win81, result.First()); Assert.Equal(wp7, result.Skip(1).First()); }
public void FrameworkReducer_ReduceUpEqual() { FrameworkReducer reducer = new FrameworkReducer(); var framework1 = NuGetFramework.Parse("net40"); var framework2 = NuGetFramework.Parse("net40"); var all = new NuGetFramework[] { framework1, framework2 }; var result = reducer.ReduceUpwards(all); Assert.Equal(framework2, result.Single()); }
public void FrameworkReducer_ReduceToHighest() { // both frameworks are equivalent var fw1 = new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Windows, FrameworkConstants.EmptyVersion); var fw2 = FrameworkConstants.CommonFrameworks.Win8; var packageFrameworks = new List<NuGetFramework>() { fw1, fw2 }; FrameworkReducer reducer = new FrameworkReducer(); // the non-zero version should win in both cases var upwards = reducer.ReduceUpwards(packageFrameworks).Single(); var downwards = reducer.ReduceUpwards(packageFrameworks).Single(); Assert.Equal(fw2, upwards); Assert.Equal(fw2, downwards); }
public void FrameworkReducer_GetNearestAny() { FrameworkReducer reducer = new FrameworkReducer(); var dnxcore50 = NuGetFramework.Parse("dnxcore50"); var core50 = NuGetFramework.Parse("core50"); var all = new NuGetFramework[] { dnxcore50, core50 }; var result = reducer.GetNearest(NuGetFramework.AnyFramework, all); Assert.Equal(dnxcore50, result); }
public void FrameworkReducer_GetNearestPCLtoPCL2() { var project = NuGetFramework.Parse("portable-net45+sl5+monotouch+monoandroid"); var packageFrameworks = new List<NuGetFramework>() { NuGetFramework.Parse("portable-net45+sl5"), NuGetFramework.Parse("portable-net40+sl5+monotouch"), NuGetFramework.Parse("portable-net40+sl4+monotouch+monoandroid"), NuGetFramework.Parse("portable-net40+sl4+monotouch+monoandroid+wp71"), }; FrameworkReducer reducer = new FrameworkReducer(); var nearest = reducer.GetNearest(project, packageFrameworks); Assert.Equal(packageFrameworks[0], nearest); }
public void FrameworkReducer_ReduceUpEquivalent() { FrameworkReducer reducer = new FrameworkReducer(); var framework1 = NuGetFramework.Parse("net40"); var framework2 = NuGetFramework.Parse("net40-client"); var all = new NuGetFramework[] { framework1, framework2 }; var result = reducer.ReduceUpwards(all).ToArray(); Assert.Equal(2, result.Length); Assert.Equal(framework1, result.First()); Assert.Equal(framework2, result.Last()); }
public void FrameworkReducer_GetNearestPCLtoPCL() { // Arrange var project = NuGetFramework.Parse("portable-net45+win81"); var packageFrameworks = new List<NuGetFramework>() { NuGetFramework.Parse("portable-net45+win8"), NuGetFramework.Parse("portable-net40+win8"), NuGetFramework.Parse("portable-net40+win81"), }; FrameworkReducer reducer = new FrameworkReducer(); // Act var nearest = reducer.GetNearest(project, packageFrameworks); // Assert // net45+win8 is nearest since net45 wins over net40 Assert.Equal(packageFrameworks[0], nearest); }
public void FrameworkReducer_ReducePCL() { FrameworkReducer reducer = new FrameworkReducer(); var framework1 = NuGetFramework.Parse("portable-net45+win8"); var framework2 = NuGetFramework.Parse("portable-win+net45"); var all = new NuGetFramework[] { framework1, framework2 }; var result = reducer.Reduce(all); Assert.Equal(framework1, result.Single()); }
public void FrameworkReducer_GetNearestPCLtoPCLVersions() { var project = NuGetFramework.Parse("portable-net45+win81"); var packageFrameworks = new List<NuGetFramework>() { NuGetFramework.Parse("portable-net40+win81+sl5"), NuGetFramework.Parse("portable-net45+win8+sl5"), NuGetFramework.Parse("portable-net45+win81+wpa81+monotouch+monoandroid"), }; FrameworkReducer reducer = new FrameworkReducer(); var nearest = reducer.GetNearest(project, packageFrameworks); // portable-net45+win81+wpa81+monotouch+monoandroid is nearest to the original Assert.Equal(packageFrameworks[2], nearest); }
public void FrameworkReducer_ReduceSingle() { FrameworkReducer reducer = new FrameworkReducer(); var sl3wp = NuGetFramework.Parse("sl3-wp"); var wp7 = NuGetFramework.Parse("wp7"); var all = new NuGetFramework[] { sl3wp, wp7 }; var result = reducer.Reduce(all); Assert.Equal(wp7, result.Single()); }
public void FrameworkReducer_GetNearestNonPCLtoPCL() { var project = NuGetFramework.Parse("win9"); var packageFrameworks = new List<NuGetFramework>() { NuGetFramework.Parse("portable-net45+win8"), NuGetFramework.Parse("portable-net45+win82"), NuGetFramework.Parse("portable-net45+win81"), NuGetFramework.Parse("portable-net45+win91"), }; FrameworkReducer reducer = new FrameworkReducer(); var nearest = reducer.GetNearest(project, packageFrameworks); // win82 is the best match for win9 Assert.Equal(packageFrameworks[1], nearest); }
public void FrameworkReducer_ReduceDownwardsBasic() { FrameworkReducer reducer = new FrameworkReducer(); var net35 = NuGetFramework.Parse("net35"); var net40 = NuGetFramework.Parse("net40"); var net45 = NuGetFramework.Parse("net45"); var net451 = NuGetFramework.Parse("net451"); var net453 = NuGetFramework.Parse("net453"); var all = new NuGetFramework[] { net35, net40, net45, net451, net453 }; var result = reducer.ReduceDownwards(all); Assert.Equal(net35, result.Single()); }
public void FrameworkReducer_GetNearestNonPCLtoPCLBasedOnOtherVersions() { // Arrange var project = NuGetFramework.Parse("win8"); var packageFrameworks = new List<NuGetFramework>() { NuGetFramework.Parse("portable-net45+win8+wpa81"), NuGetFramework.Parse("portable-net45+win8+wpa82"), NuGetFramework.Parse("portable-net45+win8+wpa9"), NuGetFramework.Parse("portable-net45+win8+wpa10.0"), NuGetFramework.Parse("portable-net45+win8+wpa11.0+sl5") }; FrameworkReducer reducer = new FrameworkReducer(); // Act var nearest = reducer.GetNearest(project, packageFrameworks); // Assert // portable-net45+win8+wpa10.0 is the best match since it has the highest // version of WPA, and the least frameworks Assert.Equal(packageFrameworks[3], nearest); }
public void FrameworkReducer_GetNearest2() { FrameworkReducer reducer = new FrameworkReducer(); var net35 = NuGetFramework.Parse("net35"); var net40 = NuGetFramework.Parse("net40"); var net45 = NuGetFramework.Parse("net45"); var net451 = NuGetFramework.Parse("net451"); var net453 = NuGetFramework.Parse("net453"); var all = new NuGetFramework[] { net35, net40, net45, net451, net453 }; var result = reducer.GetNearest(net451, all); Assert.Equal(net451, result); }
public void FrameworkReducer_GetNearestNonPCLtoPCLUncertain() { // Arrange var project = NuGetFramework.Parse("win8"); var packageFrameworks = new List<NuGetFramework>() { NuGetFramework.Parse("portable-net45+win8+sl6"), NuGetFramework.Parse("portable-net45+win8+dnxcore50"), NuGetFramework.Parse("portable-net45+win8+native"), }; FrameworkReducer reducer = new FrameworkReducer(); // Act var nearest = reducer.GetNearest(project, packageFrameworks); // Assert // There is no certain way to relate these frameworks to each other, but the same one // should always come back from this compare. Assert.Equal(packageFrameworks[1], nearest); }
public void FrameworkReducer_GetNearestWithAnyOnly() { FrameworkReducer reducer = new FrameworkReducer(); var net45 = NuGetFramework.Parse("net45"); var all = new NuGetFramework[] { NuGetFramework.AnyFramework }; var result = reducer.GetNearest(net45, all); Assert.Equal(NuGetFramework.AnyFramework, result); }
public void FrameworkReducer_GetNearestChooseFrameworkName() { FrameworkReducer reducer = new FrameworkReducer(); var framework1 = NuGetFramework.Parse("net40"); var framework2 = NuGetFramework.Parse("nfcore45"); var project = NuGetFramework.Parse("net451"); var all = new NuGetFramework[] { framework1, framework2 }; var result = reducer.GetNearest(project, all); Assert.Equal(framework1, result); }
public void FrameworkReducer_GetNearestDnx(string project, string framework) { FrameworkReducer reducer = new FrameworkReducer(); List<NuGetFramework> frameworks = new List<NuGetFramework>() { NuGetFramework.Parse(framework), }; NuGetFramework projectFramework = NuGetFramework.Parse(project); var result = reducer.GetNearest(projectFramework, frameworks); Assert.True(NuGetFramework.Parse(framework).Equals(result)); }
public void FrameworkReducer_GetNearestEquivalent() { FrameworkReducer reducer = new FrameworkReducer(); var framework1 = NuGetFramework.Parse("net40"); var framework2 = NuGetFramework.Parse("net40-client"); var project = NuGetFramework.Parse("net45"); var all = new NuGetFramework[] { framework1, framework2 }; var result = reducer.GetNearest(project, all); Assert.Equal(framework1, result); }
/// <summary> /// Adds refresh files to the specified project for all assemblies references belonging to the packages specified by packageNames. /// </summary> /// <param name="project">The project.</param> /// <param name="packagesFileSystem">The file system pointing to 'packages' folder under the solution.</param> /// <param name="packageNames">The package names.</param> private void AddRefreshFilesForReferences(Project project, string repositoryPath, IEnumerable<PackageIdentity> packageNames) { if (project == null) { throw new ArgumentNullException("project"); } if (repositoryPath == null) { throw new ArgumentNullException("repositoryPath"); } if (!packageNames.Any()) { return; } VSAPIProjectContext context = new VSAPIProjectContext(); WebSiteProjectSystem projectSystem = new WebSiteProjectSystem(project, context); var root = EnvDTEProjectUtility.GetFullPath(project); foreach (var packageName in packageNames) { string packagePath = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", packageName.Id, packageName.Version); DirectoryInfo packageFolder = new DirectoryInfo(Path.Combine(repositoryPath, packagePath)); PackageFolderReader reader = new PackageFolderReader(packageFolder); var frameworkGroups = reader.GetReferenceItems(); var groups = reader.GetReferenceItems(); var fwComparer = new NuGetFrameworkFullComparer(); FrameworkReducer reducer = new FrameworkReducer(); NuGetFramework targetGroupFramework = reducer.GetNearest(projectSystem.TargetFramework, groups.Select(e => e.TargetFramework)); if (targetGroupFramework != null) { var refGroup = groups.Where(e => fwComparer.Equals(targetGroupFramework, e.TargetFramework)).FirstOrDefault(); foreach (string refItem in refGroup.Items) { string sourcePath = Path.Combine(packageFolder.FullName, refItem.Replace('/', Path.DirectorySeparatorChar)); // create one refresh file for each assembly reference, as per required by Website projects // projectSystem.CreateRefreshFile(assemblyPath); RefreshFileUtility.CreateRefreshFile(projectSystem, sourcePath, context); } } } }
public CompatibilityListProvider(IFrameworkNameProvider nameProvider, IFrameworkCompatibilityProvider compatibilityProvider) { _nameProvider = nameProvider; _compatibilityProvider = compatibilityProvider; _reducer = new FrameworkReducer(_nameProvider, _compatibilityProvider); }