@@ -733,15 +733,19 @@ private async Task InitializeTrackedWorkspaceAsync()
733
733
{
734
734
await ThreadHelper . JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
735
735
DTE dte = ( DTE ) ServiceProvider . GlobalProvider . GetService ( typeof ( DTE ) ) ;
736
- await _package . LogAsync ( $ "Number of projects: { dte . Solution . Projects . Count } ") ;
737
- foreach ( EnvDTE . Project project in dte . Solution . Projects )
736
+ await _package . LogAsync ( $ "Number of top-level projects: { dte . Solution . Projects . Count } ") ;
737
+
738
+ List < string > processedProjects = new List < string > ( ) ;
739
+
740
+ async Task ProcessProjectAsync ( EnvDTE . Project project )
738
741
{
739
742
try
740
743
{
741
744
string projectFullName = project . FullName ;
742
745
await _package . LogAsync ( $ "Project Full Name: { projectFullName } ") ;
743
- if ( ! string . IsNullOrEmpty ( projectFullName ) )
746
+ if ( ! string . IsNullOrEmpty ( projectFullName ) && ! processedProjects . Contains ( projectFullName ) )
744
747
{
748
+ processedProjects . Add ( projectFullName ) ;
745
749
string projectDir = Path . GetDirectoryName ( projectFullName ) ;
746
750
await _package . LogAsync ( $ "Project Dir: { projectDir } ") ;
747
751
AddTrackedWorkspaceResponse response = await AddTrackedWorkspaceAsync ( projectDir ) ;
@@ -750,13 +754,26 @@ private async Task InitializeTrackedWorkspaceAsync()
750
754
_initializedWorkspace = true ;
751
755
}
752
756
}
757
+
758
+ // Process sub-projects (e.g., project references)
759
+ foreach ( EnvDTE . ProjectItem item in project . ProjectItems )
760
+ {
761
+ if ( item . SubProject != null )
762
+ {
763
+ await ProcessProjectAsync ( item . SubProject ) ;
764
+ }
765
+ }
753
766
}
754
767
catch ( Exception ex )
755
768
{
756
769
await _package . LogAsync ( "Error: Failed to initialize tracked workspace: " + ex . Message ) ;
757
- continue ;
758
770
}
759
771
}
772
+
773
+ foreach ( EnvDTE . Project project in dte . Solution . Projects )
774
+ {
775
+ await ProcessProjectAsync ( project ) ;
776
+ }
760
777
}
761
778
762
779
private async Task < T ? > RequestCommandAsync < T > ( string command , object data ,
0 commit comments