Skip to content

Commit 5851827

Browse files
committed
Attempt to use DOTNET_ROOT for .NET Core assemblies in postprocessor
1 parent 3daae99 commit 5851827

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

src/Postprocess/Program.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,16 @@
2626
using var fileservice = new ByteArrayFileService();
2727
var listener = ThrowErrorListener.Instance;
2828

29+
var pathProvider = Environment.GetEnvironmentVariable("DOTNET_ROOT") is { } root
30+
? new DotNetCorePathProvider(root)
31+
: new DotNetCorePathProvider();
32+
2933
// load baseline assemblies
3034
var readerParams = new ModuleReaderParameters(fileservice)
3135
{
32-
PEReaderParameters = new(listener)
36+
PEReaderParameters = new(listener),
3337
};
34-
var (context, backportsImage, backportsModule) = LoadContextForRootModule(backportsPath, readerParams);
38+
var (context, backportsImage, backportsModule) = LoadContextForRootModule(backportsPath, readerParams, pathProvider);
3539
var backportsResolver = (AssemblyResolverBase)context.AssemblyResolver;
3640
var ilhelpersModule = LoadModuleInContext(context, ilhelpersPath);
3741

@@ -68,12 +72,19 @@
6872

6973
return 0;
7074

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)
7276
{
7377
var image = PEImage.FromFile(path, readerParams.PEReaderParameters);
7478
var module = ModuleDefinition.FromImage(image, readerParams);
7579
var context = module.RuntimeContext;
7680

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+
7788
var asmRef = new AssemblyReference(module.Assembly!);
7889
if (context.AssemblyResolver.Resolve(asmRef) is { ManifestModule: not null } asm)
7990
{

0 commit comments

Comments
 (0)