Browse Source

Fix #2891 Populate framework_dirs with the correct values depending on the current host runtime.

pull/3048/head v8.1
Siegfried Pammer 2 years ago
parent
commit
3de29c8d74
  1. 35
      ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

35
ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

@ -404,10 +404,37 @@ namespace ICSharpCode.Decompiler.Metadata
if (assembly != null)
return assembly;
var framework_dir = Path.GetDirectoryName(typeof(object).Module.FullyQualifiedName)!;
var framework_dirs = decompilerRuntime == DecompilerRuntime.Mono
? new[] { framework_dir, Path.Combine(framework_dir, "Facades") }
: new[] { framework_dir };
string[] framework_dirs;
string framework_dir;
switch (decompilerRuntime)
{
case DecompilerRuntime.Mono:
framework_dir = Path.GetDirectoryName(typeof(object).Module.FullyQualifiedName)!;
framework_dirs = new[] { framework_dir, Path.Combine(framework_dir, "Facades") };
break;
case DecompilerRuntime.NETCoreApp:
string windir;
try
{
windir = Environment.GetFolderPath(Environment.SpecialFolder.Windows);
if (string.IsNullOrEmpty(windir))
{
goto default;
}
}
catch (PlatformNotSupportedException)
{
goto default;
}
framework_dir = Path.Combine(windir, "Microsoft.NET", "Framework64", "v4.0.30319");
framework_dirs = new[] { framework_dir };
break;
default:
framework_dir = Path.GetDirectoryName(typeof(object).Module.FullyQualifiedName)!;
framework_dirs = new[] { framework_dir };
break;
}
if (IsSpecialVersionOrRetargetable(name))
{

Loading…
Cancel
Save