Browse Source

Fix assembly reference logging bug: References found in the assembly list should not be marked unresolved.

pull/1039/head
Siegfried Pammer 8 years ago
parent
commit
c4bafdde2e
  1. 15
      ICSharpCode.Decompiler/DotNetCore/DotNetCorePathFinderExtensions.cs
  2. 3
      ILSpy/LoadedAssembly.cs

15
ICSharpCode.Decompiler/DotNetCore/DotNetCorePathFinderExtensions.cs

@ -43,6 +43,21 @@ namespace ICSharpCode.Decompiler @@ -43,6 +43,21 @@ namespace ICSharpCode.Decompiler
}
}
public void AddMessageOnce(string fullName, MessageKind kind, string message)
{
lock (loadedAssemblyReferences) {
if (!loadedAssemblyReferences.TryGetValue(fullName, out var referenceInfo)) {
referenceInfo = new UnresolvedAssemblyNameReference(fullName);
loadedAssemblyReferences.Add(fullName, referenceInfo);
referenceInfo.Messages.Add((kind, message));
} else {
var lastMsg = referenceInfo.Messages.LastOrDefault();
if (kind != lastMsg.Item1 && message != lastMsg.Item2)
referenceInfo.Messages.Add((kind, message));
}
}
}
public bool TryGetInfo(string fullName, out UnresolvedAssemblyNameReference info)
{
lock (loadedAssemblyReferences) {

3
ILSpy/LoadedAssembly.cs

@ -267,6 +267,7 @@ namespace ICSharpCode.ILSpy @@ -267,6 +267,7 @@ namespace ICSharpCode.ILSpy
foreach (LoadedAssembly loaded in assemblyList.GetAssemblies()) {
var asmDef = loaded.GetAssemblyDefinitionOrNull();
if (asmDef != null && data.fullName.Equals(data.isWinRT ? asmDef.Name.Name : asmDef.FullName, StringComparison.OrdinalIgnoreCase)) {
LoadedAssemblyReferencesInfo.AddMessageOnce(data.fullName, MessageKind.Info, "Success - Found in Assembly List");
return loaded;
}
}
@ -295,7 +296,7 @@ namespace ICSharpCode.ILSpy @@ -295,7 +296,7 @@ namespace ICSharpCode.ILSpy
LoadedAssemblyReferencesInfo.AddMessage(data.fullName, MessageKind.Info, "Success - Loading from: " + file);
asm = new LoadedAssembly(assemblyList, file) { IsAutoLoaded = true };
} else {
LoadedAssemblyReferencesInfo.AddMessage(data.fullName, MessageKind.Error, "Could not find reference: " + data.fullName);
LoadedAssemblyReferencesInfo.AddMessageOnce(data.fullName, MessageKind.Error, "Could not find reference: " + data.fullName);
return null;
}
loadingAssemblies.Add(file, asm);

Loading…
Cancel
Save