@@ -307,7 +307,7 @@ private async Task<List<ReferencedProject>> SafeGetReferencedProjectsFromDteAsyn
307
307
return null ;
308
308
}
309
309
310
- private async Task < List < ReferencedProject > > GetReferencedProjectsFromDteAsync ( )
310
+ private async Task < VSLangProj . VSProject > GetProjectAsync ( )
311
311
{
312
312
await ThreadHelper . JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
313
313
var project = dte . Solution . Projects . Cast < Project > ( ) . FirstOrDefault ( p =>
@@ -328,12 +328,42 @@ private async Task<List<ReferencedProject>> GetReferencedProjectsFromDteAsync()
328
328
return null ;
329
329
}
330
330
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 =>
333
344
{
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 ( ) ;
337
367
338
368
}
339
369
0 commit comments