/// <summary> /// Returns a collection of standard values for the data type this type converter is designed for when provided with a format context. /// </summary> /// <param name="context">An <see cref="T:System.ComponentModel.ITypeDescriptorContext"></see> that provides a format context that can be used to extract additional information about the environment from which this converter is invoked. This parameter or properties of this parameter can be null.</param> /// <returns> /// A <see cref="T:System.ComponentModel.TypeConverter.StandardValuesCollection"></see> that holds a standard set of valid values, or null if the data type does not support a standard set of values. /// </returns> public override StandardValuesCollection GetStandardValues(System.ComponentModel.ITypeDescriptorContext context) { DTE dte = (DTE)context.GetService(typeof(DTE)); ResponsibleProjectFinder finder = new ResponsibleProjectFinder(dte); List<Project> projects = finder.FindProjectsWithResponsibility(responsibility); return new StandardValuesCollection(projects); }
/// <summary> /// Verifies if a type is defined in a project with a specific responsibility /// </summary> /// <param name="dte">DTE context</param> /// <param name="type">The type to verify</param> /// <param name="responsibility">The responsibility</param> public static bool TypeDefinedInResponsibleProject(DTE dte, Type type, string responsibility) { string assemblyName = type.Assembly.FullName.Split(',')[0]; ResponsibleProjectFinder projectFinder = new ResponsibleProjectFinder(dte); foreach (Project project in projectFinder.FindProjectsWithResponsibility(responsibility)) { string projectAssembly = project.Properties.Item(AssemblyNamePropertyName).Value.ToString(); if (string.Equals(assemblyName, projectAssembly, StringComparison.InvariantCulture)) return true; } return false; }
/// <summary> /// Verifies if a type is defined in a project with a specific responsibility /// </summary> /// <param name="dte">DTE context</param> /// <param name="type">The type to verify</param> /// <param name="responsibility">The responsibility</param> public static bool TypeDefinedInResponsibleProject(DTE dte, Type type, string responsibility) { string assemblyName = type.Assembly.FullName.Split(',')[0]; ResponsibleProjectFinder projectFinder = new ResponsibleProjectFinder(dte); foreach (Project project in projectFinder.FindProjectsWithResponsibility(responsibility)) { string projectAssembly = project.Properties.Item(AssemblyNamePropertyName).Value.ToString(); if (string.Equals(assemblyName, projectAssembly, StringComparison.InvariantCulture)) { return(true); } } return(false); }
private bool Evaluate(out object newValue) { newValue = null; ExpressionEvaluationService evaluator = new ExpressionEvaluationService(); IDictionaryService dictservice = (IDictionaryService)GetService(typeof(IDictionaryService)); string assembly = null; try { assembly = evaluator.Evaluate( this._assemblyExpression, new ServiceAdapterDictionary(dictservice)).ToString(); } catch { } if (assembly == null) { // evaluation failed return false; } ResponsibleProjectFinder finder = new ResponsibleProjectFinder((DTE)(Site.GetService(typeof(DTE)))); List<Project> moduleProjects = finder.FindProjectsWithResponsibility(_responsibility); if (moduleProjects.Count > 0) { foreach (Project module in moduleProjects) { string projectAssembly = module.Properties.Item("AssemblyName").Value.ToString(); if (String.Compare(projectAssembly, assembly, StringComparison.CurrentCultureIgnoreCase) == 0) { newValue = module; return true; } } } return false; }
/// <summary> /// Finds across the projects in the solution for projects with a given set of responsibilities. /// </summary> /// <param name="responsibilities">Project responsibilities</param> /// <returns>List of <see cref="IProjectModel"/></returns> public List<IProjectModel> FindProjectsWithResponsibility(string[] responsibilities) { ResponsibleProjectFinder projectFinder = new ResponsibleProjectFinder(solution.DTE); List<IProjectModel> foundProjects = new List<IProjectModel>(); foreach (string responsibility in responsibilities) { List<Project> projects = projectFinder.FindProjectsWithResponsibility(responsibility); foundProjects.AddRange(projects.ConvertAll<IProjectModel>(new Converter<Project, IProjectModel>(ProjectToIProjectModel))); } return foundProjects; }