@@ -230,6 +230,31 @@ private void RemoveNugetAnalyzerReferences()
230
230
}
231
231
}
232
232
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
+
233
258
private void AddNetFrameworkDlls ( ISet < string > dllPaths , ISet < string > frameworkLocations )
234
259
{
235
260
// Multiple dotnet framework packages could be present.
@@ -242,27 +267,7 @@ private void AddNetFrameworkDlls(ISet<string> dllPaths, ISet<string> frameworkLo
242
267
243
268
if ( frameworkPath . Path is not null )
244
269
{
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 ) ;
266
271
267
272
for ( var i = frameworkPath . Index + 1 ; i < packagesInPrioOrder . Length ; i ++ )
268
273
{
@@ -326,9 +331,7 @@ private void AddAspNetCoreFrameworkDlls(ISet<string> dllPaths, ISet<string> fram
326
331
// First try to find ASP.NET Core assemblies in the NuGet packages
327
332
if ( GetPackageDirectory ( FrameworkPackageNames . AspNetCoreFramework ) is string aspNetCorePackage )
328
333
{
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 ) ;
332
335
return ;
333
336
}
334
337
@@ -344,9 +347,7 @@ private void AddMicrosoftWindowsDesktopDlls(ISet<string> dllPaths, ISet<string>
344
347
{
345
348
if ( GetPackageDirectory ( FrameworkPackageNames . WindowsDesktopFramework ) is string windowsDesktopApp )
346
349
{
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 ) ;
350
351
}
351
352
}
352
353
0 commit comments