Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorIan Toal <iantoal@microsoft.com>2019-09-17 22:38:19 +0300
committerGitHub <noreply@github.com>2019-09-17 22:38:19 +0300
commitbaba2fc9a7ff402b8193c42696d1ecb38fcfd7e6 (patch)
tree31f152fef30f24a4b8ae77515ad9bab1d782069a /main
parent9033e0ae39685a42742b18b4dc3e5269e9f8ee1b (diff)
Filter DotNetCore TargetFramework list selection to only include those with supported Sdks (#8740)
* Filter DotNetCore TargetFramework list selection to only include those with supported Sdks Fixes: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/983548 * Fix failures in DotNetCoreProjectTemplateWizardTests caused by newly introduced logic to match Runtime version to corresponding Sdk version. Backed off the strict runtime filtering logic to only apply to supported SDK/Runtime versions (2.1 and above). Updated the tests to explicitly set the Sdk version and ensured that the Runtime and Version pairs matched actual shipped versions.
Diffstat (limited to 'main')
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Templating/DotNetCoreProjectTemplateWizard.cs8
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectSupportedTargetFrameworksTests.cs35
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectTemplateWizardTests.cs26
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs17
4 files changed, 75 insertions, 11 deletions
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Templating/DotNetCoreProjectTemplateWizard.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Templating/DotNetCoreProjectTemplateWizard.cs
index 0ffb098bd9..f89d775186 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Templating/DotNetCoreProjectTemplateWizard.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Templating/DotNetCoreProjectTemplateWizard.cs
@@ -84,7 +84,7 @@ namespace MonoDevelop.DotNetCore.Templating
RemoveUnsupportedNetStandardTargetFrameworksForFSharp (targetFrameworks);
}
} else {
- targetFrameworks = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworks ().ToList ();
+ targetFrameworks = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworksWithSdkSupport ().ToList ();
if (!SupportsNetCore1x ()) {
RemoveUnsupportedNetCoreApp1xTargetFrameworks (targetFrameworks);
@@ -123,7 +123,7 @@ namespace MonoDevelop.DotNetCore.Templating
Parameters [parameter] = "true";
} else {
if (!SupportsNetCore1x ()) {
- var highestFramework = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworks ().FirstOrDefault ();
+ var highestFramework = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworksWithSdkSupport ().FirstOrDefault ();
if (highestFramework != null && highestFramework.IsNetCoreAppOrHigher (DotNetCoreVersion.Parse ("2.0"))) {
var parameter = highestFramework.GetParameterName ();
if (!string.IsNullOrEmpty (parameter))
@@ -132,7 +132,7 @@ namespace MonoDevelop.DotNetCore.Templating
Parameters [defaultParameterNetCore20] = "true";
}
} else {
- var highestFramework = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworks ().FirstOrDefault ();
+ var highestFramework = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworksWithSdkSupport ().FirstOrDefault ();
if (highestFramework != null) {
var parameter = highestFramework.GetParameterName ();
if (!string.IsNullOrEmpty (parameter))
@@ -154,7 +154,7 @@ namespace MonoDevelop.DotNetCore.Templating
if (!IsSupportedParameter ("NetCoreLibrary"))
return;
- var highestFramework = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworks ().FirstOrDefault ();
+ var highestFramework = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworksWithSdkSupport ().FirstOrDefault ();
if (highestFramework != null) {
Parameters ["framework"] = highestFramework.Id.ShortName;
} else {
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectSupportedTargetFrameworksTests.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectSupportedTargetFrameworksTests.cs
index abde687122..e7ddbed3a3 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectSupportedTargetFrameworksTests.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectSupportedTargetFrameworksTests.cs
@@ -114,5 +114,40 @@ namespace MonoDevelop.DotNetCore.Tests
Assert.AreEqual (".NETCoreApp,Version=v2.1", frameworks [0].Id.ToString ());
Assert.AreEqual (1, frameworks.Count);
}
+
+ [Test]
+ public void GetNetCoreAppTargetFrameworksWithSdkSupport_NetCore30RuntimeInstalled_NoSdkInstalled ()
+ {
+ DotNetCoreRuntimesInstalled ("3.0.0-preview-27324-5");
+ DotNetCoreSdksNotInstalled ();
+
+ var frameworks = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworksWithSdkSupport ().ToList ();
+
+ Assert.AreEqual (0, frameworks.Count);
+ }
+
+ [Test]
+ public void GetNetCoreAppTargetFrameworksWithSdkSupport_NetCore30And22RuntimeInstalled_30SdkInstalled ()
+ {
+ DotNetCoreRuntimesInstalled ("3.0.0-preview-27324-5", "2.2.7");
+ DotNetCoreSdksInstalled ("3.0.0-preview-27324-5");
+
+ var frameworks = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworksWithSdkSupport ().ToList ();
+
+ Assert.AreEqual (".NETCoreApp,Version=v3.0", frameworks [0].Id.ToString ());
+ Assert.AreEqual (1, frameworks.Count);
+ }
+
+ [Test]
+ public void GetNetCoreAppTargetFrameworksWithSdkSupport_NetCore30And22RuntimeInstalled_22SdkInstalled ()
+ {
+ DotNetCoreRuntimesInstalled ("3.0.0-preview-27324-5", "2.2.7");
+ DotNetCoreSdksInstalled ("2.2.401");
+
+ var frameworks = DotNetCoreProjectSupportedTargetFrameworks.GetNetCoreAppTargetFrameworksWithSdkSupport ().ToList ();
+
+ Assert.AreEqual (".NETCoreApp,Version=v2.2", frameworks [0].Id.ToString ());
+ Assert.AreEqual (1, frameworks.Count);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectTemplateWizardTests.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectTemplateWizardTests.cs
index 7657434a34..b74da57284 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectTemplateWizardTests.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreProjectTemplateWizardTests.cs
@@ -176,7 +176,8 @@ namespace MonoDevelop.DotNetCore.Tests
public void NetCoreApp_NetCore20Installed ()
{
CreateWizard ();
- DotNetCoreRuntimesInstalled ("2.0.1");
+ DotNetCoreRuntimesInstalled ("2.0.3");
+ DotNetCoreSdksInstalled ("2.1.2");
int pages = wizard.TotalPages;
@@ -194,7 +195,8 @@ namespace MonoDevelop.DotNetCore.Tests
public void NetCoreApp_NetCore11Installed ()
{
CreateWizard ();
- DotNetCoreRuntimesInstalled ("1.1.0");
+ DotNetCoreRuntimesInstalled ("1.1.1");
+ DotNetCoreSdksInstalled ("1.0.1");
int pages = wizard.TotalPages;
@@ -219,7 +221,8 @@ namespace MonoDevelop.DotNetCore.Tests
public void NetCoreApp_NetCore20AndNetCore1xInstalled ()
{
CreateWizard ();
- DotNetCoreRuntimesInstalled ("2.0.1", "1.1.0", "1.0.2");
+ DotNetCoreRuntimesInstalled ("2.0.3", "1.1.2", "1.0.4");
+ DotNetCoreSdksInstalled ("2.1.2", "1.0.4", "1.0.1");
int pages = wizard.TotalPages;
@@ -276,6 +279,7 @@ namespace MonoDevelop.DotNetCore.Tests
CreateWizard ();
AddSupportedParameters (supportedParameters);
DotNetCoreRuntimesInstalled ("1.1.2");
+ DotNetCoreSdksInstalled ("1.0.4");
int pages = wizard.TotalPages;
@@ -296,6 +300,7 @@ namespace MonoDevelop.DotNetCore.Tests
CreateWizard ();
AddSupportedParameters (supportedParameters);
DotNetCoreRuntimesInstalled ("2.0.5", "1.1.2");
+ DotNetCoreSdksInstalled ("2.1.4", "1.0.4");
int pages = wizard.TotalPages;
@@ -321,7 +326,8 @@ namespace MonoDevelop.DotNetCore.Tests
{
CreateWizard ();
AddSupportedParameters ("NetCoreLibrary");
- DotNetCoreRuntimesInstalled ("2.0.1");
+ DotNetCoreRuntimesInstalled ("2.0.3");
+ DotNetCoreSdksInstalled ("2.0.3");
int pages = wizard.TotalPages;
@@ -358,6 +364,7 @@ namespace MonoDevelop.DotNetCore.Tests
{
CreateWizard ();
DotNetCoreRuntimesInstalled ("2.1.1");
+ DotNetCoreSdksInstalled ("2.1.301");
int pages = wizard.TotalPages;
@@ -386,6 +393,7 @@ namespace MonoDevelop.DotNetCore.Tests
CreateWizard ();
AddSupportedParameters ("NetCoreLibrary");
DotNetCoreRuntimesInstalled ("2.1.2");
+ DotNetCoreSdksInstalled ("2.1.302");
int pages = wizard.TotalPages;
@@ -416,6 +424,7 @@ namespace MonoDevelop.DotNetCore.Tests
CreateWizard ();
AddSupportedParameters (supportedParameters);
DotNetCoreRuntimesInstalled ("2.1.5", "1.1.2");
+ DotNetCoreSdksInstalled ("2.1.403", "1.0.4");
int pages = wizard.TotalPages;
@@ -437,6 +446,7 @@ namespace MonoDevelop.DotNetCore.Tests
//NOTE: since we are now checking unsupported runtime version
// here we set the latest supported one
DotNetCoreRuntimesInstalled ("3.0.0-preview-27324-5");
+ DotNetCoreSdksInstalled ("3.0.0-preview-27324-5");
int pages = wizard.TotalPages;
@@ -469,6 +479,7 @@ namespace MonoDevelop.DotNetCore.Tests
{
CreateWizard ();
DotNetCoreRuntimesInstalled ("2.2.0");
+ DotNetCoreSdksInstalled ("2.2.101");
int pages = wizard.TotalPages;
@@ -498,7 +509,8 @@ namespace MonoDevelop.DotNetCore.Tests
{
CreateWizard ();
AddSupportedParameters ("NetCoreLibrary");
- DotNetCoreRuntimesInstalled ("2.2.100");
+ DotNetCoreRuntimesInstalled ("2.2.6");
+ DotNetCoreSdksInstalled ("2.2.401");
int pages = wizard.TotalPages;
@@ -531,6 +543,7 @@ namespace MonoDevelop.DotNetCore.Tests
CreateWizard ();
AddSupportedParameters (supportedParameters);
DotNetCoreRuntimesInstalled ("2.2.3", "1.1.2");
+ DotNetCoreSdksInstalled ("2.2.202", "1.0.4");
int pages = wizard.TotalPages;
@@ -550,7 +563,8 @@ namespace MonoDevelop.DotNetCore.Tests
public void NetCoreApp_NetCore21AndNetCore20Installed ()
{
CreateWizard ();
- DotNetCoreRuntimesInstalled ("2.1.300", "2.0.1");
+ DotNetCoreRuntimesInstalled ("2.1.0", "2.0.3");
+ DotNetCoreSdksInstalled ("2.1.300", "2.0.3");
int pages = wizard.TotalPages;
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs
index 3084df3e50..468cfd1aa8 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs
@@ -52,7 +52,7 @@ namespace MonoDevelop.DotNetCore
if (framework.IsNetStandard ()) {
return GetNetStandardTargetFrameworks ();
} else if (framework.IsNetCoreApp ()) {
- return GetNetCoreAppTargetFrameworks ();
+ return GetNetCoreAppTargetFrameworksWithSdkSupport ();
} else if (framework.IsNetFramework ()) {
return GetNetFrameworkTargetFrameworks ();
}
@@ -97,6 +97,21 @@ namespace MonoDevelop.DotNetCore
}
}
+ public static IEnumerable<TargetFramework> GetNetCoreAppTargetFrameworksWithSdkSupport ()
+ {
+ foreach (var runtimeVersion in GetMajorRuntimeVersions ()) {
+ // In DotNetCore version 2.1 and above the Runtime always ships in an Sdk with the same Major.Minor version. For older versions, this
+ // rule does not apply, but as these versions have been deprecated we will not worry about explicit filtering support here as this
+ // may cause regressions.
+ if ((runtimeVersion.Major == 2 && runtimeVersion.Minor >= 1) || runtimeVersion.Major >= 3) {
+ if (DotNetCoreSdk.Versions.Any (sdkVersion => runtimeVersion.Major == sdkVersion.Major && runtimeVersion.Minor == sdkVersion.Minor))
+ yield return CreateTargetFramework (".NETCoreApp", runtimeVersion.ToString (2));
+ } else {
+ yield return CreateTargetFramework (".NETCoreApp", runtimeVersion.ToString (2));
+ }
+ }
+ }
+
static IEnumerable<Version> GetMajorRuntimeVersions ()
{
return DotNetCoreRuntime.Versions