@@ -230,6 +230,31 @@ private void RemoveNugetAnalyzerReferences()
230230 }
231231 }
232232
233+ private void SelectNewestFrameworkPath ( string frameworkPath , string frameworkType , ISet < string > dllPaths , ISet < string > frameworkLocations )
234+ {
235+ var versionFolders = new DirectoryInfo ( frameworkPath )
236+ . EnumerateDirectories ( "*" , new EnumerationOptions { MatchCasing = MatchCasing . CaseInsensitive , RecurseSubdirectories = false } )
237+ . OrderByDescending ( d => d . Name ) // TODO: Improve sorting to handle pre-release versions.
238+ . ToArray ( ) ;
239+
240+ if ( versionFolders . Length > 1 )
241+ {
242+ var versions = string . Join ( ", " , versionFolders . Select ( d => d . Name ) ) ;
243+ progressMonitor . LogInfo ( $ "Found multiple { frameworkType } DLLs in NuGet packages at { frameworkPath } . Using the latest version ({ versionFolders [ 0 ] . Name } ) from: { versions } .") ;
244+ }
245+
246+ var selectedFrameworkFolder = versionFolders . FirstOrDefault ( ) ? . FullName ;
247+ if ( selectedFrameworkFolder is null )
248+ {
249+ progressMonitor . LogInfo ( $ "Found { frameworkType } DLLs in NuGet packages at { frameworkPath } , but no version folder was found.") ;
250+ selectedFrameworkFolder = frameworkPath ;
251+ }
252+
253+ dllPaths . Add ( selectedFrameworkFolder ) ;
254+ frameworkLocations . Add ( selectedFrameworkFolder ) ;
255+ progressMonitor . LogInfo ( $ "Found { frameworkType } DLLs in NuGet packages at { selectedFrameworkFolder } . Not adding installation directory.") ;
256+ }
257+
233258 private void AddNetFrameworkDlls ( ISet < string > dllPaths , ISet < string > frameworkLocations )
234259 {
235260 // Multiple dotnet framework packages could be present.
@@ -242,27 +267,7 @@ private void AddNetFrameworkDlls(ISet<string> dllPaths, ISet<string> frameworkLo
242267
243268 if ( frameworkPath . Path is not null )
244269 {
245- var versionFolders = new DirectoryInfo ( frameworkPath . Path )
246- . EnumerateDirectories ( "*" , new EnumerationOptions { MatchCasing = MatchCasing . CaseInsensitive , RecurseSubdirectories = false } )
247- . OrderByDescending ( d => d . Name ) // TODO: Improve sorting to handle pre-release versions.
248- . ToArray ( ) ;
249-
250- if ( versionFolders . Length > 1 )
251- {
252- var versions = string . Join ( ", " , versionFolders . Select ( d => d . Name ) ) ;
253- progressMonitor . LogInfo ( $ "Found multiple .NET Framework DLLs in NuGet packages at { frameworkPath . Path } . Using the latest version ({ versionFolders [ 0 ] . Name } ) from: { versions } .") ;
254- }
255-
256- var selectedFrameworkFolder = versionFolders . FirstOrDefault ( ) ? . FullName ;
257- if ( selectedFrameworkFolder is null )
258- {
259- progressMonitor . LogInfo ( $ "Found .NET Framework DLLs in NuGet packages at { frameworkPath . Path } , but no version folder was found.") ;
260- selectedFrameworkFolder = frameworkPath . Path ;
261- }
262-
263- dllPaths . Add ( selectedFrameworkFolder ) ;
264- frameworkLocations . Add ( selectedFrameworkFolder ) ;
265- progressMonitor . LogInfo ( $ "Found .NET Core/Framework DLLs in NuGet packages at { selectedFrameworkFolder } . Not adding installation directory.") ;
270+ SelectNewestFrameworkPath ( frameworkPath . Path , ".NET Framework" , dllPaths , frameworkLocations ) ;
266271
267272 for ( var i = frameworkPath . Index + 1 ; i < packagesInPrioOrder . Length ; i ++ )
268273 {
@@ -326,9 +331,7 @@ private void AddAspNetCoreFrameworkDlls(ISet<string> dllPaths, ISet<string> fram
326331 // First try to find ASP.NET Core assemblies in the NuGet packages
327332 if ( GetPackageDirectory ( FrameworkPackageNames . AspNetCoreFramework ) is string aspNetCorePackage )
328333 {
329- progressMonitor . LogInfo ( $ "Found ASP.NET Core in NuGet packages. Not adding installation directory.") ;
330- dllPaths . Add ( aspNetCorePackage ) ;
331- frameworkLocations . Add ( aspNetCorePackage ) ;
334+ SelectNewestFrameworkPath ( aspNetCorePackage , "ASP.NET Core" , dllPaths , frameworkLocations ) ;
332335 return ;
333336 }
334337
@@ -344,9 +347,7 @@ private void AddMicrosoftWindowsDesktopDlls(ISet<string> dllPaths, ISet<string>
344347 {
345348 if ( GetPackageDirectory ( FrameworkPackageNames . WindowsDesktopFramework ) is string windowsDesktopApp )
346349 {
347- progressMonitor . LogInfo ( $ "Found Windows Desktop App in NuGet packages.") ;
348- dllPaths . Add ( windowsDesktopApp ) ;
349- frameworkLocations . Add ( windowsDesktopApp ) ;
350+ SelectNewestFrameworkPath ( windowsDesktopApp , "Windows Desktop App" , dllPaths , frameworkLocations ) ;
350351 }
351352 }
352353
0 commit comments