Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
6 changes: 4 additions & 2 deletions src/Tests/Microsoft.NET.Build.Tests/Net50Targeting.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
Expand All @@ -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()
Expand All @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,35 +53,20 @@ public class TestProject

public Dictionary<string, string> AdditionalItems { get; } = new Dictionary<string, string>();

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<string> ShortTargetFrameworkIdentifiers
public IEnumerable<string> 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;
}
}
}
Expand All @@ -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;
}
Expand Down Expand Up @@ -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);
Expand Down