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 @@ -249,21 +249,24 @@ 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.version >= version
&& folder.directory.EnumerateFiles("*.dll", SearchOption.AllDirectories).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 +277,7 @@ namespace ICSharpCode.Decompiler.Metadata @@ -274,7 +277,7 @@ namespace ICSharpCode.Decompiler.Metadata
try
{
return (new Version(RemoveTrailingVersionInfo()), name);
return (new Version(RemoveTrailingVersionInfo()), directory);
}
catch (Exception ex)
{

4
ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

@ -386,11 +386,11 @@ namespace ICSharpCode.Decompiler.Metadata @@ -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() ?? ".";
}

Loading…
Cancel
Save