diff --git a/ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs b/ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs index 67f266c54..a5dd8c200 100644 --- a/ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs +++ b/ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs @@ -249,21 +249,22 @@ namespace ICSharpCode.Decompiler.Metadata static string GetClosestVersionFolder(string basePath, Version version) { var foundVersions = new DirectoryInfo(basePath).GetDirectories() - .Select(d => ConvertToVersion(d.Name)) + .Select(ConvertToVersion) .Where(v => v.version != null); foreach (var folder in foundVersions.OrderBy(v => v.version)) { if (folder.version >= version) - return folder.directoryName; + if(folder.directory.EnumerateFiles().Any()) + return folder.directory.Name; } return version.ToString(); } - internal static (Version version, string directoryName) ConvertToVersion(string name) + internal static (Version version, DirectoryInfo directory) ConvertToVersion(DirectoryInfo directory) { string RemoveTrailingVersionInfo() { - string shortName = name; + string shortName = directory.Name; int dashIndex = shortName.IndexOf('-'); if (dashIndex > 0) { @@ -274,7 +275,7 @@ namespace ICSharpCode.Decompiler.Metadata try { - return (new Version(RemoveTrailingVersionInfo()), name); + return (new Version(RemoveTrailingVersionInfo()), directory); } catch (Exception ex) { diff --git a/ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs b/ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs index ff27d30d6..90ba8724a 100644 --- a/ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs +++ b/ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs @@ -386,11 +386,11 @@ namespace ICSharpCode.Decompiler.Metadata string FindClosestVersionDirectory(string basePath, Version? version) { 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)) { if (path == null || version == null || folder.Item1 >= version) - path = folder.Item2; + path = folder.Item2.Name; } return path ?? version?.ToString() ?? "."; }