|
26 | 26 | using var fileservice = new ByteArrayFileService(); |
27 | 27 | var listener = ThrowErrorListener.Instance; |
28 | 28 |
|
| 29 | +var pathProvider = Environment.GetEnvironmentVariable("DOTNET_ROOT") is { } root |
| 30 | + ? new DotNetCorePathProvider(root) |
| 31 | + : new DotNetCorePathProvider(); |
| 32 | + |
29 | 33 | // load baseline assemblies |
30 | 34 | var readerParams = new ModuleReaderParameters(fileservice) |
31 | 35 | { |
32 | | - PEReaderParameters = new(listener) |
| 36 | + PEReaderParameters = new(listener), |
33 | 37 | }; |
34 | | -var (context, backportsImage, backportsModule) = LoadContextForRootModule(backportsPath, readerParams); |
| 38 | +var (context, backportsImage, backportsModule) = LoadContextForRootModule(backportsPath, readerParams, pathProvider); |
35 | 39 | var backportsResolver = (AssemblyResolverBase)context.AssemblyResolver; |
36 | 40 | var ilhelpersModule = LoadModuleInContext(context, ilhelpersPath); |
37 | 41 |
|
|
68 | 72 |
|
69 | 73 | return 0; |
70 | 74 |
|
71 | | -static (RuntimeContext context, PEImage image, ModuleDefinition module) LoadContextForRootModule(string path, ModuleReaderParameters readerParams) |
| 75 | +static (RuntimeContext context, PEImage image, ModuleDefinition module) LoadContextForRootModule(string path, ModuleReaderParameters readerParams, DotNetCorePathProvider pathProvider) |
72 | 76 | { |
73 | 77 | var image = PEImage.FromFile(path, readerParams.PEReaderParameters); |
74 | 78 | var module = ModuleDefinition.FromImage(image, readerParams); |
75 | 79 | var context = module.RuntimeContext; |
76 | 80 |
|
| 81 | + if (context.AssemblyResolver is DotNetCoreAssemblyResolver asr) |
| 82 | + { |
| 83 | + context = new RuntimeContext(module.OriginalTargetRuntime, |
| 84 | + new DotNetCoreAssemblyResolver(readerParams, null, module.OriginalTargetRuntime.Version, pathProvider)); |
| 85 | + module = ModuleDefinition.FromImage(image, context.DefaultReaderParameters); |
| 86 | + } |
| 87 | + |
77 | 88 | var asmRef = new AssemblyReference(module.Assembly!); |
78 | 89 | if (context.AssemblyResolver.Resolve(asmRef) is { ManifestModule: not null } asm) |
79 | 90 | { |
|
0 commit comments