未验证 提交 9b8d7670 编写于 作者: S Sam Harwell 提交者: GitHub

Merge pull request #24186 from sharwell/ilspy-relax-versions

Allow resolving mscorlib with different assembly version numbers
......@@ -220,15 +220,25 @@ public AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters p
{
foreach (var assembly in parentCompilation.GetReferencedAssemblySymbols())
{
if (assembly.Identity.Name == name.Name
&& assembly.Identity.Version == name.Version
&& assembly.Identity.PublicKeyToken.SequenceEqual(name.PublicKeyToken ?? Array.Empty<byte>()))
if (assembly.Identity.Name != name.Name
|| !assembly.Identity.PublicKeyToken.SequenceEqual(name.PublicKeyToken ?? Array.Empty<byte>()))
{
// reference assemblies should be fine here...
var reference = parentCompilation.GetMetadataReference(assembly);
return AssemblyDefinition.ReadAssembly(reference.Display);
continue;
}
if (assembly.Identity.Version != name.Version
&& !string.Equals("mscorlib", assembly.Identity.Name, StringComparison.OrdinalIgnoreCase))
{
// MSBuild treats mscorlib special for the purpose of assembly resolution/unification, where all
// versions of the assembly are considered equal. The same policy is adopted here.
continue;
}
// reference assemblies should be fine here...
var reference = parentCompilation.GetMetadataReference(assembly);
return AssemblyDefinition.ReadAssembly(reference.Display);
}
// not found
return null;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册