SupportsFramework() public method

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;
		}
Ejemplo n.º 2
0
		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;
		}
Ejemplo n.º 3
0
		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;
		}