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);
        }
Beispiel #7
0
        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}");
 }