@@ -307,7 +307,7 @@ private async Task<List<ReferencedProject>> SafeGetReferencedProjectsFromDteAsyn
307307 return null ;
308308 }
309309
310- private async Task < List < ReferencedProject > > GetReferencedProjectsFromDteAsync ( )
310+ private async Task < VSLangProj . VSProject > GetProjectAsync ( )
311311 {
312312 await ThreadHelper . JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
313313 var project = dte . Solution . Projects . Cast < Project > ( ) . FirstOrDefault ( p =>
@@ -328,12 +328,42 @@ private async Task<List<ReferencedProject>> GetReferencedProjectsFromDteAsync()
328328 return null ;
329329 }
330330
331- var vsproject = project . Object as VSLangProj . VSProject ;
332- return vsproject . References . Cast < VSLangProj . Reference > ( ) . Where ( r => r . SourceProject != null ) . Select ( r =>
331+ return project . Object as VSLangProj . VSProject ;
332+ }
333+
334+ private IEnumerable < Project > GetReferencedSourceProjects ( VSLangProj . VSProject vsproject )
335+ {
336+ return vsproject . References . Cast < VSLangProj . Reference > ( ) . Where ( r => r . SourceProject != null )
337+ . Select ( r => r . SourceProject ) ;
338+ }
339+
340+ private async Task < string > GetAssemblyNameAsync ( Project project )
341+ {
342+ await ThreadHelper . JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
343+ var assNameProperty = project . Properties . Cast < Property > ( ) . FirstOrDefault ( p =>
333344 {
334- ThreadHelper . ThrowIfNotOnUIThread ( ) ;
335- return new ReferencedProject ( r . SourceProject . FullName , r . Name ) ;
336- } ) . ToList ( ) ;
345+ #pragma warning disable VSTHRD010 // Invoke single-threaded types on Main thread
346+ return p . Name == "AssemblyName" ;
347+ #pragma warning restore VSTHRD010 // Invoke single-threaded types on Main thread
348+ } ) ;
349+ return assNameProperty ? . Value . ToString ( ) ?? project . Name ;
350+ }
351+ private async Task < ReferencedProject > GetReferencedProjectAsync ( Project project )
352+ {
353+ await ThreadHelper . JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
354+ var assemblyName = await GetAssemblyNameAsync ( project ) ;
355+ return new ReferencedProject ( project . FullName , assemblyName ) ;
356+ }
357+
358+ private async Task < List < ReferencedProject > > GetReferencedProjectsFromDteAsync ( )
359+ {
360+ var vsproject = await GetProjectAsync ( ) ;
361+
362+ if ( vsproject == null )
363+ {
364+ return null ;
365+ }
366+ return ( await Task . WhenAll ( GetReferencedSourceProjects ( vsproject ) . Select ( GetReferencedProjectAsync ) ) ) . ToList ( ) ;
337367
338368 }
339369
0 commit comments