public SupportsFramework ( MonoDevelop.Core.Assemblies.TargetFramework framework ) : bool | ||
framework | MonoDevelop.Core.Assemblies.TargetFramework | |
return | bool |
public RuntimeOptionsPanelWidget (DotNetProject project, IEnumerable<ItemConfiguration> configurations) { Build (); this.project = project; if (project != null) { // Get the list of available versions, and add only those supported by the target language. foreach (TargetFramework fx in Runtime.SystemAssemblyService.GetTargetFrameworks ()) { if (fx != project.TargetFramework) { if (!project.TargetRuntime.IsInstalled (fx)) continue; if (!project.SupportsFramework (fx)) continue; } runtimeVersionCombo.AppendText (fx.Name); if (project.TargetFramework == fx) runtimeVersionCombo.Active = supportedVersions.Count; supportedVersions.Add (fx); } if (supportedVersions.Count <= 1) Sensitive = false; } else Sensitive = false; }
public RuntimeOptionsPanelWidget (DotNetProject project, IEnumerable<ItemConfiguration> configurations) { Build (); this.project = project; if (project == null) { Sensitive = false; return; } frameworks = Runtime.SystemAssemblyService.GetTargetFrameworks () .Where (fx => !fx.Hidden && project.TargetRuntime.IsInstalled (fx) && project.SupportsFramework (fx)) .ToList (); bool notInstalled = false; if (!frameworks.Any (fx => fx.Id == project.TargetFramework.Id)) { notInstalled = true; frameworks.Add (project.TargetFramework); } //sort by id ascending, version descending, profile ascending frameworks.Sort ((x, y) => { var cmp = string.CompareOrdinal (x.Id.Identifier, y.Id.Identifier); if (cmp != 0) return cmp; cmp = string.CompareOrdinal (y.Id.Version, x.Id.Version); if (cmp != 0) return cmp; return string.CompareOrdinal (x.Id.Profile, y.Id.Profile); }); for (int i = 0; i < frameworks.Count; i++) { var fx = frameworks[i]; if (project.TargetFramework.Id == fx.Id) { string name = notInstalled? GettextCatalog.GetString ("{0} (Not installed)", fx.Name) : fx.Name; runtimeVersionCombo.AppendText (name); runtimeVersionCombo.Active = i; } else { runtimeVersionCombo.AppendText (fx.Name); } } Sensitive = frameworks.Count > 1; }
static void SetClosestSupportedTargetFramework (FileFormat format, DotNetProject project) { // If the solution format can't write this project due to an unsupported framework, try finding the // closest valid framework. DOn't worry about whether it's installed, that's up to the user to correct. TargetFramework curFx = project.TargetFramework; var candidates = Runtime.SystemAssemblyService.GetTargetFrameworks () .Where (fx => //only frameworks with the same ID, else version comparisons are meaningless fx.Id.Identifier == curFx.Id.Identifier && //don't consider profiles, only full frameworks fx.Id.Profile == null && //and the project and format must support the framework project.SupportsFramework (fx) && format.SupportsFramework (fx)) //FIXME: string comparisons aren't a valid way to compare profiles, but it works w/released .NET versions .OrderBy (fx => fx.Id.Version) .ToList (); TargetFramework newFx = candidates.FirstOrDefault (fx => string.CompareOrdinal (fx.Id.Version, curFx.Id.Version) > 0) ?? candidates.LastOrDefault (); if (newFx != null) project.TargetFramework = newFx; }