且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在 VSIX 项目的解决方案文件夹中获取项目

更新时间:2023-09-25 19:34:10

我通过更多的研究和反复试验设法解决了这个问题.万一其他人提出这个问题,我将主要代码更改为

I managed to resolve this with a bit more research and some trial and error. In case anybody else comes up with this problem, I changed the main code to

if (Scope == EnvDTE.vsBuildScope.vsBuildScopeSolution)
{
    errorListProvider.Tasks.Clear();
    DTE2 dte2 = Package.GetGlobalService(typeof(DTE)) as DTE2;
    var sol = dte2.Solution;
    var projs = sol.Projects;
    foreach(var proj in sol)
    {
         var project = proj as Project;
         if (project.Kind == ProjectKinds.vsProjectKindSolutionFolder)
         {
             var innerProjects = GetSolutionFolderProjects(project);
             foreach(var innerProject in innerProjects)
             {
                 //carry out actions here.
             }
         }
    }
}

GetSolutionFolderForProjects 的代码是

The code for the GetSolutionFolderForProjects was

private IEnumerable<Project> GetSolutionFolderProjects(Project project)
{
    List<Project> projects = new List<Project>();
    var y = (project.ProjectItems as ProjectItems).Count;
    for(var i = 1; i <= y; i++)
    {
        var x = project.ProjectItems.Item(i).SubProject;
        var subProject = x as Project;
        if (subProject != null)
        {
          //Carried out work and added projects as appropriate
        }
    }

    return projects;
}

希望这对其他人有所帮助.

Hope this helps somebody else.