Browse Source

Merge pull request #3265 from Herrmel/ignore_empty_dotnetcore_version_path

Ignore empty version directories of dotnet
pull/3266/head
Siegfried Pammer 9 months ago committed by GitHub
parent
commit
dd0456447b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 15
      ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs
  2. 4
      ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

15
ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs

@ -249,21 +249,24 @@ namespace ICSharpCode.Decompiler.Metadata
static string GetClosestVersionFolder(string basePath, Version version) static string GetClosestVersionFolder(string basePath, Version version)
{ {
var foundVersions = new DirectoryInfo(basePath).GetDirectories() var foundVersions = new DirectoryInfo(basePath).GetDirectories()
.Select(d => ConvertToVersion(d.Name)) .Select(ConvertToVersion)
.Where(v => v.version != null); .Where(v => v.version != null);
foreach (var folder in foundVersions.OrderBy(v => v.version)) foreach (var folder in foundVersions.OrderBy(v => v.version))
{ {
if (folder.version >= version) if (folder.version >= version
return folder.directoryName; && folder.directory.EnumerateFiles("*.dll", SearchOption.AllDirectories).Any())
{
return folder.directory.Name;
}
} }
return version.ToString(); return version.ToString();
} }
internal static (Version version, string directoryName) ConvertToVersion(string name) internal static (Version version, DirectoryInfo directory) ConvertToVersion(DirectoryInfo directory)
{ {
string RemoveTrailingVersionInfo() string RemoveTrailingVersionInfo()
{ {
string shortName = name; string shortName = directory.Name;
int dashIndex = shortName.IndexOf('-'); int dashIndex = shortName.IndexOf('-');
if (dashIndex > 0) if (dashIndex > 0)
{ {
@ -274,7 +277,7 @@ namespace ICSharpCode.Decompiler.Metadata
try try
{ {
return (new Version(RemoveTrailingVersionInfo()), name); return (new Version(RemoveTrailingVersionInfo()), directory);
} }
catch (Exception ex) catch (Exception ex)
{ {

4
ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

@ -386,11 +386,11 @@ namespace ICSharpCode.Decompiler.Metadata
string FindClosestVersionDirectory(string basePath, Version? version) string FindClosestVersionDirectory(string basePath, Version? version)
{ {
string? path = null; string? path = null;
foreach (var folder in new DirectoryInfo(basePath).GetDirectories().Select(d => DotNetCorePathFinder.ConvertToVersion(d.Name)) foreach (var folder in new DirectoryInfo(basePath).GetDirectories().Select(DotNetCorePathFinder.ConvertToVersion)
.Where(v => v.Item1 != null).OrderByDescending(v => v.Item1)) .Where(v => v.Item1 != null).OrderByDescending(v => v.Item1))
{ {
if (path == null || version == null || folder.Item1 >= version) if (path == null || version == null || folder.Item1 >= version)
path = folder.Item2; path = folder.Item2.Name;
} }
return path ?? version?.ToString() ?? "."; return path ?? version?.ToString() ?? ".";
} }

Loading…
Cancel
Save