2012-08-03 4 views
0

폴더에있는 DTE2 _applicationObject 읽기 파일 이름은 내가 가지고있는 현재 코드입니다. 기본적으로 프로젝트 솔루션 프로젝트 파일을 루프하고 C# 파일인지 검색합니다. 그러나 폴더에있는 파일을 검색 할 수 없습니다. 솔루션 폴더에서 C# 파일을 읽도록 파일을 수정하려면 어떻게해야합니까?아래의

감사합니다, 앤디

foreach (var projectItem in 
      _applicationObject.Solution.Projects.Cast<Project>().SelectMany(project => project.ProjectItems.Cast<ProjectItem>())) 
     { 
      //for (var i = 0; i < projectItem.FileCount; i++) 
      //{ 


      if (projectItem.FileCount > 0 && projectItem.Name.EndsWith(".cs")) // check if project is .Cs files 
      { 
       string fileName; 
       try 
       { 

        fileName = projectItem.FileNames[0]; 
       } 
       catch (Exception) 
       { 
        continue; 
       } 
       //end of find filename 

      } 


     } 

답변

1

이 솔루션의 모든 항목을 인쇄합니다, 저는 믿습니다. VS 2012의 C++ 솔루션과 호환됩니다.

// XXX Test 
    IEnumerator enumerator = m_applicationObject.Solution.GetEnumerator(); 
    string indent = " "; 
    while (enumerator.MoveNext()) 
    { 
     Project p = enumerator.Current as Project; 
     if (p != null) 
     { 
      Debug.WriteLine(p.Name); 
      ProcessProjectItems(p.ProjectItems, indent); 
     } 
    } 


// XXX Test 
void ProcessProjectItems(ProjectItems pis, string indent) 
{ 
    if (pis == null) 
     return; 

    IEnumerator items = pis.GetEnumerator(); 
    while (items.MoveNext()) 
    { 
     ProjectItem pi = items.Current as ProjectItem; 
     if (pi != null) 
     { 
      Debug.WriteLine(indent + pi.Name); 

      if (pi.ProjectItems != null) 
      { 
       ProcessProjectItems(pi.ProjectItems, indent + " "); 
      } 
      else 
      { 
       Project p = pi.Object as Project; 
       if (p != null && p.ProjectItems != null) 
        ProcessProjectItems(p.ProjectItems, indent + " "); 
      } 
     } 
    } 
}