Browse Source

Fix BAML tests

pull/2642/head
Siegfried Pammer 3 years ago
parent
commit
3a04963191
  1. 2
      ILSpy.BamlDecompiler.Tests/Cases/EscapeSequence.xaml
  2. 24
      ILSpy.BamlDecompiler/Baml/BamlContext.cs

2
ILSpy.BamlDecompiler.Tests/Cases/EscapeSequence.xaml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib">
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=System.Private.CoreLib">
<StackPanel>
<FrameworkElement.Resources>
<ResourceDictionary>

24
ILSpy.BamlDecompiler/Baml/BamlContext.cs

@ -25,6 +25,7 @@ using System.Collections.Generic; @@ -25,6 +25,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using ICSharpCode.Decompiler.Metadata;
using ICSharpCode.Decompiler.TypeSystem;
using Metadata = ICSharpCode.Decompiler.Metadata;
@ -97,9 +98,13 @@ namespace ILSpy.BamlDecompiler.Baml @@ -97,9 +98,13 @@ namespace ILSpy.BamlDecompiler.Baml
var assemblyName = Metadata.AssemblyNameReference.Parse(assemblyRec.AssemblyFullName);
if (assemblyName.Name == TypeSystem.MainModule.AssemblyName)
{
assembly = (assemblyRec.AssemblyFullName, TypeSystem.MainModule);
}
else
assembly = (assemblyRec.AssemblyFullName, TypeSystem.ReferencedModules.FirstOrDefault(m => m.FullAssemblyName == assemblyName.FullName));
{
assembly = (assemblyRec.AssemblyFullName, FindMatchingReference(assemblyName));
}
}
else
assembly = (null, null);
@ -108,5 +113,22 @@ namespace ILSpy.BamlDecompiler.Baml @@ -108,5 +113,22 @@ namespace ILSpy.BamlDecompiler.Baml
}
return assembly;
}
private IModule FindMatchingReference(AssemblyNameReference name)
{
IModule bestMatch = null;
foreach (var module in TypeSystem.ReferencedModules)
{
if (module.AssemblyName == name.Name)
{
// using highest version as criterion
if (bestMatch == null || bestMatch.AssemblyVersion <= module.AssemblyVersion)
{
bestMatch = module;
}
}
}
return bestMatch;
}
}
}
Loading…
Cancel
Save