Browse Source

Fix DotNetCorePathFinder not finding assemblies in parent assembly base path.

pull/2030/head
Siegfried Pammer 5 years ago
parent
commit
5f27fd9744
  1. 21
      ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs
  2. 5
      ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

21
ICSharpCode.Decompiler/Metadata/DotNetCorePathFinder.cs

@ -83,12 +83,10 @@ namespace ICSharpCode.Decompiler.Metadata @@ -83,12 +83,10 @@ namespace ICSharpCode.Decompiler.Metadata
}
}
var depsJsonFileName = Path.Combine(basePath, $"{assemblyName}.deps.json");
if (!File.Exists(depsJsonFileName)) {
loadInfo?.AddMessage(assemblyName, MessageKind.Warning, $"{assemblyName}.deps.json could not be found!");
return;
}
packageBasePaths.Add(basePath);
var depsJsonFileName = Path.Combine(basePath, $"{assemblyName}.deps.json");
if (File.Exists(depsJsonFileName)) {
packages = LoadPackageInfos(depsJsonFileName, targetFrameworkIdString).ToArray();
foreach (var path in LookupPaths) {
@ -101,6 +99,19 @@ namespace ICSharpCode.Decompiler.Metadata @@ -101,6 +99,19 @@ namespace ICSharpCode.Decompiler.Metadata
}
}
}
} else {
loadInfo?.AddMessage(assemblyName, MessageKind.Warning, $"{assemblyName}.deps.json could not be found!");
}
}
public void AddSearchDirectory(string path)
{
this.packageBasePaths.Add(path);
}
public void RemoveSearchDirectory(string path)
{
this.packageBasePaths.Remove(path);
}
public string TryResolveDotNetCore(IAssemblyReference name)

5
ICSharpCode.Decompiler/Metadata/UniversalAssemblyResolver.cs

@ -71,11 +71,13 @@ namespace ICSharpCode.Decompiler.Metadata @@ -71,11 +71,13 @@ namespace ICSharpCode.Decompiler.Metadata
public void AddSearchDirectory(string directory)
{
directories.Add(directory);
dotNetCorePathFinder?.AddSearchDirectory(directory);
}
public void RemoveSearchDirectory(string directory)
{
directories.Remove(directory);
dotNetCorePathFinder?.RemoveSearchDirectory(directory);
}
public string[] GetSearchDirectories()
@ -185,6 +187,9 @@ namespace ICSharpCode.Decompiler.Metadata @@ -185,6 +187,9 @@ namespace ICSharpCode.Decompiler.Metadata
goto default;
if (dotNetCorePathFinder == null) {
dotNetCorePathFinder = new DotNetCorePathFinder(mainAssemblyFileName, targetFramework, targetFrameworkIdentifier, targetFrameworkVersion);
foreach (var directory in directories) {
dotNetCorePathFinder.AddSearchDirectory(directory);
}
}
file = dotNetCorePathFinder.TryResolveDotNetCore(name);
if (file != null)

Loading…
Cancel
Save