private static bool IsWebCSharpProject(object target) { EnvDTE.Project containingProject = null; if (target is EnvDTE.Project project) { containingProject = project; } else if (target is ProjectItem) { containingProject = ((ProjectItem)target).ContainingProject; } if (containingProject != null && IsWebProject(containingProject) && containingProject.Properties != null) { try { Property property = containingProject.Properties.Item("CurrentWebsiteLanguage"); return(property.Value != null && property.Value.ToString().Equals("Visual C#", StringComparison.OrdinalIgnoreCase)); } catch (Exception exception) { Trace.TraceError(exception.ToString()); return(false); } } return(false); }
/// <summary> /// Gets the evaluated property. /// </summary> /// <param name="project">The project.</param> /// <param name="propertyName">Name of the property.</param> /// <param name="throwIfNotFound">When 'true', it throws an error if the property wasn't found.</param> /// <returns></returns> public static string GetEvaluatedProperty(EnvDTE.Project project, string propertyName, bool throwIfNotFound = false) { if (project == null) { return(string.Empty); } Guard.ArgumentNotNullOrEmptyString(propertyName, "propertyName"); string value = string.Empty; foreach (Property prop in project.Properties) { if (prop.Name.Equals(propertyName, StringComparison.OrdinalIgnoreCase)) { value = prop.Value.ToString(); break; } } if (throwIfNotFound) { throw new ArgumentException( string.Format(CultureInfo.CurrentCulture, Resources.PropertyNameNotFound, propertyName, project.Name)); } return(value); }
public static CodeDomProvider GetCodeDomProvider(EnvDTE.Project project) { if (project != null) { return (CodeDomProvider.CreateProvider(CodeDomProvider.GetLanguageFromExtension(GetDefaultExtension(project)))); } return(CodeDomProvider.CreateProvider("C#")); }
private static string GetDefaultExtension(EnvDTE.Project project) { if (!IsWebProject(project)) { return(GetDefaultExtensionFromNonWebProject(project)); } if (!IsWebCSharpProject(project)) { return(".vb"); } return(".cs"); }
private static string GetDefaultExtensionFromNonWebProject(EnvDTE.Project project) { Guard.ArgumentNotNull(project, "project"); if (project.Kind == "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") { return(".cs"); } if (project.Kind != "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") { throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Resources.UnsupportedProjectKind, new object[] { project.Name })); } return(".vb"); }
public static string GetLanguageFromProject(EnvDTE.Project project) { Guard.ArgumentNotNull(project, "project"); if (project.CodeModel != null) { return(project.CodeModel.Language); } CodeDomProvider provider = DteHelper.GetCodeDomProvider(project); if (provider is CSharpCodeProvider) { return(CodeModelLanguageConstants.vsCMLanguageCSharp); } if (provider is VBCodeProvider) { return(CodeModelLanguageConstants.vsCMLanguageVB); } return(null); }
private static IEnumerable <EnvDTE.Project> GetSolutionFolderProjects(EnvDTE.Project solutionFolder) { var list = new List <EnvDTE.Project>(); for (var i = 1; i <= solutionFolder.ProjectItems.Count; i++) { var subProject = solutionFolder.ProjectItems.Item(i).SubProject; if (subProject == null) { continue; } if (subProject.Kind == ProjectKinds.vsProjectKindSolutionFolder) { list.AddRange(GetSolutionFolderProjects(subProject)); } else { list.Add(subProject); } } return(list); }
private static bool IsWebProject(EnvDTE.Project project) { return(project.Kind == "{E24C65DC-7377-472b-9ABA-BC803B73C61A}"); }