public void GetTargetFrameworkInfos_WithUAPProject_InfersUAPTargetFramework() { // Arrange string key = string.Empty; var runtimeIdentifierGraphPath = Path.Combine(Path.GetTempPath(), "runtime.json"); var project = new MockMSBuildProject("Project-core", new Dictionary <string, string> { { "AssetTargetFallback", "" }, { "PackageTargetFallback", "" }, { "TargetFramework", key }, { "TargetFrameworkIdentifier", FrameworkConstants.FrameworkIdentifiers.NetCore }, { "TargetFrameworkVersion", "v5.0" }, { "TargetFrameworkMoniker", $"{FrameworkConstants.FrameworkIdentifiers.NetCore},Version=5.0" }, { "TargetPlatformIdentifier", "UAP" }, { "TargetPlatformVersion", "10.1608.1" }, { "TargetPlatformMoniker", "UAP,Version=10.1608.1" } }, new Dictionary <string, IList <IMSBuildItem> > { ["PackageReference"] = new List <IMSBuildItem> { new MSBuildItem("PackageA", new Dictionary <string, string> { ["Version"] = "2.0.0" }), } }); // Act List <TargetFrameworkInformation> targetFrameworkInfos = MSBuildStaticGraphRestore.GetTargetFrameworkInfos( new Dictionary <string, IMSBuildProject>() { { string.Empty, project } }, isCpvmEnabled: false); // Assert targetFrameworkInfos.Should().HaveCount(1); TargetFrameworkInformation targetFrameworkInformation = targetFrameworkInfos.Single(f => f.TargetAlias == key); targetFrameworkInformation.Dependencies.Should().HaveCount(1); targetFrameworkInformation.Dependencies.Single().Name.Should().Be("PackageA"); targetFrameworkInformation.Dependencies.Single().LibraryRange.VersionRange.OriginalString.Should().Be("2.0.0"); targetFrameworkInformation.FrameworkName.GetShortFolderName().Should().Be("uap10.1608.1"); targetFrameworkInformation.AssetTargetFallback.Should().BeFalse(); }
public void GetTargetFrameworkInfos_WithCustomAliases_InfersCorrectTargetFramework() { // Arrange string latestNet = "latestNet"; string latestCore = "latestCore"; var atf = "net472"; var runtimeIdentifierGraphPath = Path.Combine(Path.GetTempPath(), "runtime.json"); var innerNodes = new Dictionary <string, IMSBuildProject> { [latestCore] = new MockMSBuildProject("Project-core", new Dictionary <string, string> { { "AssetTargetFallback", atf }, { "PackageTargetFallback", "" }, { "TargetFramework", latestCore }, { "TargetFrameworkIdentifier", FrameworkConstants.FrameworkIdentifiers.NetCoreApp }, { "TargetFrameworkVersion", "v5.0" }, { "TargetFrameworkMoniker", $"{FrameworkConstants.FrameworkIdentifiers.NetCoreApp},Version=5.0" }, { "TargetPlatformIdentifier", "android" }, { "TargetPlatformVersion", "21.0" }, { "TargetPlatformMoniker", "android,Version=21.0" }, { "RuntimeIdentifierGraphPath", runtimeIdentifierGraphPath } }, new Dictionary <string, IList <IMSBuildItem> > { ["PackageReference"] = new List <IMSBuildItem> { new MSBuildItem("PackageA", new Dictionary <string, string> { ["Version"] = "2.0.0" }), } }), [latestNet] = new MockMSBuildProject("Project-net", new Dictionary <string, string> { { "AssetTargetFallback", "" }, { "PackageTargetFallback", "" }, { "TargetFramework", latestNet }, { "TargetFrameworkIdentifier", FrameworkConstants.FrameworkIdentifiers.Net }, { "TargetFrameworkVersion", "v4.6.1" }, { "TargetFrameworkMoniker", $"{FrameworkConstants.FrameworkIdentifiers.Net},Version=4.6.1" }, { "TargetPlatformIdentifier", "" }, { "TargetPlatformVersion", "" }, { "TargetPlatformMoniker", "" }, { "RuntimeIdentifierGraphPath", runtimeIdentifierGraphPath } }, new Dictionary <string, IList <IMSBuildItem> > { ["PackageReference"] = new List <IMSBuildItem> { new MSBuildItem("PackageB", new Dictionary <string, string> { ["Version"] = "2.1.0" }), }, }), }; // Act List <TargetFrameworkInformation> targetFrameworkInfos = MSBuildStaticGraphRestore.GetTargetFrameworkInfos(innerNodes, isCpvmEnabled: false); // Assert targetFrameworkInfos.Should().HaveCount(2); TargetFrameworkInformation coreTFI = targetFrameworkInfos.Single(f => f.TargetAlias == latestCore); TargetFrameworkInformation netTFI = targetFrameworkInfos.Single(f => f.TargetAlias == latestNet); coreTFI.Dependencies.Should().HaveCount(1); coreTFI.Dependencies.Single().Name.Should().Be("PackageA"); coreTFI.Dependencies.Single().LibraryRange.VersionRange.OriginalString.Should().Be("2.0.0"); coreTFI.RuntimeIdentifierGraphPath.Should().Be(runtimeIdentifierGraphPath); coreTFI.FrameworkName.GetShortFolderName().Should().Be("net5.0-android21.0"); coreTFI.AssetTargetFallback.Should().BeTrue(); AssetTargetFallbackFramework assetTargetFallbackFramework = (AssetTargetFallbackFramework)coreTFI.FrameworkName; assetTargetFallbackFramework.Fallback.Should().HaveCount(1); assetTargetFallbackFramework.Fallback.Single().GetShortFolderName().Should().Be("net472"); netTFI.Dependencies.Should().HaveCount(1); netTFI.Dependencies.Single().Name.Should().Be("PackageB"); netTFI.Dependencies.Single().LibraryRange.VersionRange.OriginalString.Should().Be("2.1.0"); netTFI.RuntimeIdentifierGraphPath.Should().Be(runtimeIdentifierGraphPath); netTFI.FrameworkName.Should().Be(FrameworkConstants.CommonFrameworks.Net461); netTFI.AssetTargetFallback.Should().BeFalse(); }
public void GetTargetFrameworkInfos_TheCentralVersionInformationIsAdded() { // Arrange string netstandard22 = "netstandard2.2"; string netstandard20 = "netstandard2.0"; string netstandard23 = "netstandard2.3"; var innerNodes = new Dictionary <string, IMSBuildProject> { [netstandard20] = new MockMSBuildProject("Project-netstandard2.0", new Dictionary <string, string>(), new Dictionary <string, IList <IMSBuildItem> > { ["PackageReference"] = new List <IMSBuildItem> { new MSBuildItem("PackageA", new Dictionary <string, string> { ["IsImplicitlyDefined"] = bool.TrueString }), }, ["PackageVersion"] = new List <IMSBuildItem> { new MSBuildItem("PackageA", new Dictionary <string, string> { ["Version"] = "2.0.0" }), new MSBuildItem("PackageB", new Dictionary <string, string> { ["Version"] = "3.0.0" }), }, }), [netstandard22] = new MockMSBuildProject("Project-netstandard2.2", new Dictionary <string, string>(), new Dictionary <string, IList <IMSBuildItem> > { ["PackageReference"] = new List <IMSBuildItem> { new MSBuildItem("PackageA", new Dictionary <string, string> { ["Version"] = "11.0.0", ["IsImplicitlyDefined"] = bool.FalseString }), }, ["PackageVersion"] = new List <IMSBuildItem> { new MSBuildItem("PackageA", new Dictionary <string, string> { ["Version"] = "2.2.2" }), new MSBuildItem("PackageB", new Dictionary <string, string> { ["Version"] = "3.2.0" }), }, }), [netstandard23] = new MockMSBuildProject("Project-netstandard2.3", new Dictionary <string, string>(), new Dictionary <string, IList <IMSBuildItem> > { ["PackageReference"] = new List <IMSBuildItem> { new MSBuildItem("PackageA", new Dictionary <string, string> { ["IsImplicitlyDefined"] = bool.FalseString }), }, ["PackageVersion"] = new List <IMSBuildItem> { new MSBuildItem("PackageA", new Dictionary <string, string> { ["Version"] = "2.0.0" }), new MSBuildItem("PackageB", new Dictionary <string, string> { ["Version"] = "3.0.0" }), }, }), }; var targetFrameworkInfos = MSBuildStaticGraphRestore.GetTargetFrameworkInfos(innerNodes, isCpvmEnabled: true); // Assert Assert.Equal(3, targetFrameworkInfos.Count); var framework20 = targetFrameworkInfos.Single(f => f.TargetAlias == netstandard20); var framework22 = targetFrameworkInfos.Single(f => f.TargetAlias == netstandard22); var framework23 = targetFrameworkInfos.Single(f => f.TargetAlias == netstandard23); Assert.Equal(1, framework20.Dependencies.Count); Assert.Equal("PackageA", framework20.Dependencies.First().Name); Assert.Null(framework20.Dependencies.First().LibraryRange.VersionRange); Assert.Equal(2, framework20.CentralPackageVersions.Count); Assert.Equal("2.0.0", framework20.CentralPackageVersions["PackageA"].VersionRange.OriginalString); Assert.Equal("3.0.0", framework20.CentralPackageVersions["PackageB"].VersionRange.OriginalString); Assert.Equal(1, framework22.Dependencies.Count); Assert.Equal("PackageA", framework22.Dependencies.First().Name); Assert.Equal("11.0.0", framework22.Dependencies.First().LibraryRange.VersionRange.OriginalString); Assert.Equal(2, framework22.CentralPackageVersions.Count); Assert.Equal("2.2.2", framework22.CentralPackageVersions["PackageA"].VersionRange.OriginalString); Assert.Equal("3.2.0", framework22.CentralPackageVersions["PackageB"].VersionRange.OriginalString); Assert.Equal(1, framework23.Dependencies.Count); Assert.Equal("PackageA", framework23.Dependencies.First().Name); Assert.Equal("2.0.0", framework23.Dependencies.First().LibraryRange.VersionRange.OriginalString); }