/// <summary> /// Finds a <see cref="ProjectItem"/> by name. /// The comparison is not case sensitive. /// </summary> /// <param name="collection">The collection.</param> /// <param name="name">The name.</param> /// <param name="recursive">if set to <c>true</c> [recursive].</param> /// <returns></returns> public static ProjectItem FindItemByName(ProjectItems collection, string name, bool recursive) { Guard.ArgumentNotNull(name, "name"); if (collection != null) { foreach (ProjectItem item1 in collection) { if (item1.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase)) { return(item1); } if (recursive) { ProjectItem item2 = DteHelperEx.FindItemByName(item1.ProjectItems, name, recursive); if (item2 != null) { return(item2); } } } } return(null); }
private static Project GetSourceProject(AssemblyReference reference) { Project sourceProject = null; if (reference.ReferenceKind != AssemblyReferenceType.AssemblyReferenceConfig) { sourceProject = DteHelperEx.FindProject(reference.DTE, new Predicate <Project>(delegate(Project match) { return((match.Kind.Equals(VSLangProj.PrjKind.prjKindCSharpProject, StringComparison.InvariantCultureIgnoreCase) || match.Kind.Equals(VSLangProj.PrjKind.prjKindVBProject, StringComparison.InvariantCultureIgnoreCase)) && match.Name.Equals(reference.Name, StringComparison.InvariantCultureIgnoreCase)); })); } return(sourceProject); }
private static CodeElement InspectBaseCodeElement( CodeElement element, string targetFullName, vsCMElement elementKind) { if (element.Kind == vsCMElement.vsCMElementClass) { CodeClass target = (CodeClass)element; foreach (CodeElement interfaceType in target.ImplementedInterfaces) { if (interfaceType.Kind == elementKind && interfaceType.FullName.Equals(targetFullName, StringComparison.InvariantCultureIgnoreCase)) { return(interfaceType); } if (interfaceType.InfoLocation == vsCMInfoLocation.vsCMInfoLocationExternal) { // look in other projects ProjectItem item = DteHelperEx.FindContainingProjectItem(element.ProjectItem.DTE, (CodeType)interfaceType); if (item != null) { return(FindCodeElementByFullName(item, targetFullName, elementKind)); } return(null); } // look in childs CodeElement child = InspectChildren(interfaceType.Children, targetFullName, elementKind); if (child != null) { return(child); } } return(null); } if (element.Kind == vsCMElement.vsCMElementInterface) { return(InspectChildren(element.Children, targetFullName, elementKind)); } return(null); }