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
} }
} }
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) public bool TryGetInfo(string fullName, out UnresolvedAssemblyNameReference info)
{ {
lock (loadedAssemblyReferences) { lock (loadedAssemblyReferences) {

3
ILSpy/LoadedAssembly.cs

@ -267,6 +267,7 @@ namespace ICSharpCode.ILSpy
foreach (LoadedAssembly loaded in assemblyList.GetAssemblies()) { foreach (LoadedAssembly loaded in assemblyList.GetAssemblies()) {
var asmDef = loaded.GetAssemblyDefinitionOrNull(); var asmDef = loaded.GetAssemblyDefinitionOrNull();
if (asmDef != null && data.fullName.Equals(data.isWinRT ? asmDef.Name.Name : asmDef.FullName, StringComparison.OrdinalIgnoreCase)) { 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; return loaded;
} }
} }
@ -295,7 +296,7 @@ namespace ICSharpCode.ILSpy
LoadedAssemblyReferencesInfo.AddMessage(data.fullName, MessageKind.Info, "Success - Loading from: " + file); LoadedAssemblyReferencesInfo.AddMessage(data.fullName, MessageKind.Info, "Success - Loading from: " + file);
asm = new LoadedAssembly(assemblyList, file) { IsAutoLoaded = true }; asm = new LoadedAssembly(assemblyList, file) { IsAutoLoaded = true };
} else { } 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; return null;
} }
loadingAssemblies.Add(file, asm); loadingAssemblies.Add(file, asm);

Loading…
Cancel
Save