diff --git a/src/Tests/Microsoft.NET.Build.Tests/DeleteNuGetArtifactsFixture.cs b/src/Tests/Microsoft.NET.Build.Tests/DeleteNuGetArtifactsFixture.cs index ca80ea82323d..6c107497d314 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/DeleteNuGetArtifactsFixture.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/DeleteNuGetArtifactsFixture.cs @@ -14,7 +14,7 @@ public class ConstantStringValues public static string TestDirectoriesNamePrefix = "Nuget_reference_compat"; public static string ReferencerDirectoryName = "Reference"; public static string NuGetSharedDirectoryNamePostfix = "_NuGetDependencies"; - public static string NetstandardToken = "netstandard"; + public static string NetstandardTargetFrameworkIdentifier = ".NETStandard"; public static string DependencyDirectoryNamePrefix = "D_"; public static string ConstructNuGetPackageReferencePath(TestProject dependencyProject) diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToReferenceAProject.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToReferenceAProject.cs index 9206847cfa18..ebef0dd166cc 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToReferenceAProject.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToReferenceAProject.cs @@ -71,7 +71,7 @@ public void It_checks_for_valid_references(string referencerTarget, bool referen referencerProject.ReferencedProjects.Add(dependencyProject); // Set the referencer project as an Exe unless it targets .NET Standard - if (!referencerProject.ShortTargetFrameworkIdentifiers.Contains("netstandard")) + if (!referencerProject.TargetFrameworkIdentifiers.Contains(ConstantStringValues.NetstandardTargetFrameworkIdentifier)) { referencerProject.IsExe = true; } diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToVerifyNuGetReferenceCompat.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToVerifyNuGetReferenceCompat.cs index 3033e194c1c8..ad56684d3f0e 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToVerifyNuGetReferenceCompat.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToVerifyNuGetReferenceCompat.cs @@ -92,7 +92,7 @@ public void Nuget_reference_compat(string referencerTarget, string testDescripti } // Set the referencer project as an Exe unless it targets .NET Standard - if (!referencerProject.ShortTargetFrameworkIdentifiers.Contains(ConstantStringValues.NetstandardToken)) + if (!referencerProject.TargetFrameworkIdentifiers.Contains(ConstantStringValues.NetstandardTargetFrameworkIdentifier)) { referencerProject.IsExe = true; } diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToVerifyProjectReferenceCompat.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToVerifyProjectReferenceCompat.cs index 479fd1f76ba7..781632ec415d 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToVerifyProjectReferenceCompat.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToVerifyProjectReferenceCompat.cs @@ -63,7 +63,7 @@ public void Project_reference_compat(string referencerTarget, string testIDPostF } // Set the referencer project as an Exe unless it targets .NET Standard - if (!referencerProject.ShortTargetFrameworkIdentifiers.Contains("netstandard")) + if (!referencerProject.TargetFrameworkIdentifiers.Contains(ConstantStringValues.NetstandardTargetFrameworkIdentifier)) { referencerProject.IsExe = true; } diff --git a/src/Tests/Microsoft.NET.Build.Tests/Net50Targeting.cs b/src/Tests/Microsoft.NET.Build.Tests/Net50Targeting.cs index 01f54ac8acc2..4cf405b8bb4c 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/Net50Targeting.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/Net50Targeting.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -19,7 +20,8 @@ public Net50Targeting(ITestOutputHelper log) : base(log) { } - [Fact(Skip="Need NuGet support for net5.0 TFM")] + // Core MSBuild only until VS build we use has NuGet changes for net5.0 + [CoreMSBuildOnlyFact] public void Net50TargetFrameworkParsesAsNetCoreAppTargetFrameworkIdentifier() { var testProject = new TestProject() @@ -37,7 +39,7 @@ public void Net50TargetFrameworkParsesAsNetCoreAppTargetFrameworkIdentifier() .Should() .Pass(); - var getValuesCommand = new GetValuesCommand(Log, testAsset.TestRoot, testProject.TargetFrameworks, "TargetFrameworkIdentifier"); + var getValuesCommand = new GetValuesCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name), testProject.TargetFrameworks, "TargetFrameworkIdentifier"); getValuesCommand.Execute() .Should() .Pass(); diff --git a/src/Tests/Microsoft.NET.TestFramework/ProjectConstruction/TestProject.cs b/src/Tests/Microsoft.NET.TestFramework/ProjectConstruction/TestProject.cs index a8f71a58fa0e..bc9af651f7a6 100644 --- a/src/Tests/Microsoft.NET.TestFramework/ProjectConstruction/TestProject.cs +++ b/src/Tests/Microsoft.NET.TestFramework/ProjectConstruction/TestProject.cs @@ -53,35 +53,20 @@ public class TestProject public Dictionary AdditionalItems { get; } = new Dictionary(); - private static string GetShortTargetFrameworkIdentifier(string targetFramework) - { - int identifierLength = 0; - for (; identifierLength < targetFramework.Length; identifierLength++) - { - if (!char.IsLetter(targetFramework[identifierLength])) - { - break; - } - } - - string identifier = targetFramework.Substring(0, identifierLength); - return identifier; - } - - public IEnumerable ShortTargetFrameworkIdentifiers + public IEnumerable TargetFrameworkIdentifiers { get { if (!IsSdkProject) { // Assume .NET Framework - yield return "net"; + yield return ".NETFramework"; yield break; } foreach (var target in TargetFrameworks.Split(';')) { - yield return GetShortTargetFrameworkIdentifier(target); + yield return NuGetFramework.Parse(target).Framework; } } } @@ -96,9 +81,9 @@ public bool BuildsOnNonWindows } // Currently can't build projects targeting .NET Framework on non-Windows: https://github.com/dotnet/sdk/issues/335 - foreach (var identifier in ShortTargetFrameworkIdentifiers) + foreach (var identifier in TargetFrameworkIdentifiers) { - if (identifier.Equals("net", StringComparison.OrdinalIgnoreCase)) + if (identifier.Equals(".NETFramework", StringComparison.OrdinalIgnoreCase)) { return false; } @@ -404,8 +389,17 @@ private bool NeedsReferenceAssemblyPackages() bool needsReferenceAssemblyPackages = false; if (IsSdkProject) { - foreach (var shortFrameworkName in TargetFrameworks.Split(';').Where(tf => GetShortTargetFrameworkIdentifier(tf) == "net")) + + foreach (var shortFrameworkName in TargetFrameworks.Split(';') + //.Where(tf => GetShortTargetFrameworkIdentifier(tf) == "net") + ) { + var nugetFramework = NuGetFramework.Parse(shortFrameworkName); + if (nugetFramework.Framework != ".NETFramework") + { + continue; + } + // Normalize version to the form used in the reference assemblies path var version = NuGetFramework.Parse(shortFrameworkName).Version; version = new Version(version.Major, version.Minor, version.Build);