diff options
author | Mikayla Hutchinson <m.j.hutchinson@gmail.com> | 2016-09-22 01:56:43 +0300 |
---|---|---|
committer | Mikayla Hutchinson <m.j.hutchinson@gmail.com> | 2016-09-22 01:56:43 +0300 |
commit | 95e0245efb4018a57b554082b1d082f6b96a7908 (patch) | |
tree | 5c155a632ed2758f90f031d0939cdfdf76232117 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels | |
parent | 2c14102561f7b5c14cd45ca72c865fa1c82689cc (diff) |
[netstandard] Auto-reference PCL compat library
For netstandard projects to be able to reference a PCL, they
need to reference Microsoft.NETCore.Portable.Compatibility, but
it's not obvious, so add it by default.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs index e2d7fd974c..a194bb88bc 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs @@ -82,6 +82,8 @@ namespace MonoDevelop.Ide.Projects.OptionPanels const string NetStandardPackageName = "NETStandard.Library"; const string NetStandardPackageVersion = "1.6.0"; const string NetStandardDefaultFramework = "netstandard1.3"; + const string NetStandardPclCompatPackageName = "Microsoft.NETCore.Portable.Compatibility"; + const string NetStandardPclCompatPackageVersion = "1.0.1"; ComboBox netStandardCombo; Entry targetFrameworkEntry; @@ -314,16 +316,17 @@ namespace MonoDevelop.Ide.Projects.OptionPanels json ["dependencies"] = deps; } - var existingRefVersion = deps.Property (NetStandardPackageName)?.Value?.Value<string> (); - string newRefVersion = EnsureMinimumVersion (NetStandardPackageVersion, existingRefVersion); - if (existingRefVersion != newRefVersion) { - deps [NetStandardPackageName] = newRefVersion; + //make sure NETStandard.Library has the version we need + if (EnsurePackageHasVersion (deps, NetStandardPackageName, NetStandardPackageVersion)) { + //if we had to fix that, also add to optional Microsoft.NETCore.Portable.Compatibility + EnsurePackageHasVersion (deps, NetStandardPclCompatPackageName, NetStandardPclCompatPackageVersion); changed = true; } } else { //not netstandard, remove the netstandard nuget package ref if (deps != null) { deps.Property (NetStandardPackageName)?.Remove (); + deps.Property (NetStandardPclCompatPackageName)?.Remove (); } } @@ -350,6 +353,17 @@ namespace MonoDevelop.Ide.Projects.OptionPanels } } + static bool EnsurePackageHasVersion (JObject dependencies, string packageName, string version) + { + var existingRefVersion = dependencies.Property (packageName)?.Value?.Value<string> (); + string newRefVersion = EnsureMinimumVersion (version, existingRefVersion); + if (existingRefVersion != newRefVersion) { + dependencies [packageName] = newRefVersion; + return true; + } + return false; + } + static ProjectFile MigrateToProjectJson (DotNetProject project) { var projectJsonName = project.BaseDirectory.Combine ("project.json"); |