From 8a39de74b41a87b46f5da6a119c6076066ef6c75 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Tue, 1 Jun 2021 17:40:27 -0700 Subject: [PATCH 1/3] Implement IAssemblyResolver for LinkContext Fixes https://github.com/mono/linker/issues/2073 --- src/linker/Linker/LinkContext.cs | 12 +++++++++++- src/linker/ref/Linker/LinkContext.cs | 7 ++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/linker/Linker/LinkContext.cs b/src/linker/Linker/LinkContext.cs index ef995fc022ee..a5cef6769016 100644 --- a/src/linker/Linker/LinkContext.cs +++ b/src/linker/Linker/LinkContext.cs @@ -50,7 +50,7 @@ public enum TargetRuntimeVersion NET6 = 6, } - public class LinkContext : IMetadataResolver, IDisposable + public class LinkContext : IMetadataResolver, IAssemblyResolver, IDisposable { readonly Pipeline _pipeline; @@ -307,6 +307,16 @@ public AssemblyDefinition Resolve (IMetadataScope scope) return _resolver.Resolve (reference); } + public AssemblyDefinition Resolve (AssemblyNameReference name) + { + return _resolver.Resolve (name); + } + + AssemblyDefinition IAssemblyResolver.Resolve (AssemblyNameReference name, ReaderParameters parameters) + { + throw new NotSupportedException ("ReaderParameters argument is not supported."); + } + public void RegisterAssembly (AssemblyDefinition assembly) { if (SeenFirstTime (assembly)) { diff --git a/src/linker/ref/Linker/LinkContext.cs b/src/linker/ref/Linker/LinkContext.cs index 962f9c015d2e..dce943be74d7 100644 --- a/src/linker/ref/Linker/LinkContext.cs +++ b/src/linker/ref/Linker/LinkContext.cs @@ -3,11 +3,12 @@ // See the LICENSE file in the project root for more information. using Mono.Cecil; +using System; namespace Mono.Linker { - public class LinkContext : IMetadataResolver + public class LinkContext : IMetadataResolver, IAssemblyResolver, IDisposable { internal LinkContext () { } public AnnotationStore Annotations { get { throw null; } } @@ -28,5 +29,9 @@ internal LinkContext () { } public MethodDefinition TryResolve (MethodReference methodReference) { throw null; } public FieldDefinition TryResolve (FieldReference fieldReference) { throw null; } public TypeDefinition TryResolve (TypeReference typeReference) { throw null; } + + public AssemblyDefinition Resolve (AssemblyNameReference nameReference) { throw null; } + AssemblyDefinition IAssemblyResolver.Resolve (AssemblyNameReference nameReference, ReaderParameters parameters) { throw null; } + public void Dispose () { throw null; } } } From 383a6a417e9e511f4aefec28f1d050a7fa662390 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Tue, 1 Jun 2021 19:59:21 -0700 Subject: [PATCH 2/3] Fix using order --- src/linker/ref/Linker/LinkContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linker/ref/Linker/LinkContext.cs b/src/linker/ref/Linker/LinkContext.cs index dce943be74d7..edf1bf057ad2 100644 --- a/src/linker/ref/Linker/LinkContext.cs +++ b/src/linker/ref/Linker/LinkContext.cs @@ -2,8 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using Mono.Cecil; using System; +using Mono.Cecil; namespace Mono.Linker { From 7d88e5403fe7c3f6ae0166ec2c2f27b031687068 Mon Sep 17 00:00:00 2001 From: Sven Boemer Date: Mon, 7 Jun 2021 14:45:05 -0700 Subject: [PATCH 3/3] Don't implement IAssemblyResolver --- src/linker/Linker/LinkContext.cs | 7 +------ src/linker/ref/Linker/LinkContext.cs | 5 +---- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/linker/Linker/LinkContext.cs b/src/linker/Linker/LinkContext.cs index a5cef6769016..851f77ec79ac 100644 --- a/src/linker/Linker/LinkContext.cs +++ b/src/linker/Linker/LinkContext.cs @@ -50,7 +50,7 @@ public enum TargetRuntimeVersion NET6 = 6, } - public class LinkContext : IMetadataResolver, IAssemblyResolver, IDisposable + public class LinkContext : IMetadataResolver, IDisposable { readonly Pipeline _pipeline; @@ -312,11 +312,6 @@ public AssemblyDefinition Resolve (AssemblyNameReference name) return _resolver.Resolve (name); } - AssemblyDefinition IAssemblyResolver.Resolve (AssemblyNameReference name, ReaderParameters parameters) - { - throw new NotSupportedException ("ReaderParameters argument is not supported."); - } - public void RegisterAssembly (AssemblyDefinition assembly) { if (SeenFirstTime (assembly)) { diff --git a/src/linker/ref/Linker/LinkContext.cs b/src/linker/ref/Linker/LinkContext.cs index edf1bf057ad2..d40872746773 100644 --- a/src/linker/ref/Linker/LinkContext.cs +++ b/src/linker/ref/Linker/LinkContext.cs @@ -2,13 +2,12 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; using Mono.Cecil; namespace Mono.Linker { - public class LinkContext : IMetadataResolver, IAssemblyResolver, IDisposable + public class LinkContext : IMetadataResolver { internal LinkContext () { } public AnnotationStore Annotations { get { throw null; } } @@ -31,7 +30,5 @@ internal LinkContext () { } public TypeDefinition TryResolve (TypeReference typeReference) { throw null; } public AssemblyDefinition Resolve (AssemblyNameReference nameReference) { throw null; } - AssemblyDefinition IAssemblyResolver.Resolve (AssemblyNameReference nameReference, ReaderParameters parameters) { throw null; } - public void Dispose () { throw null; } } }