diff --git a/src/vm/assemblynative.cpp b/src/vm/assemblynative.cpp index 4167263c1e69..6a8efffadc6b 100644 --- a/src/vm/assemblynative.cpp +++ b/src/vm/assemblynative.cpp @@ -1302,13 +1302,22 @@ INT_PTR QCALLTYPE AssemblyNative::GetLoadContextForAssembly(QCall::AssemblyHandl // actual ICLRPrivBinder instance in which the assembly was loaded. PTR_ICLRPrivBinder pBindingContext = pPEAssembly->GetBindingContext(); UINT_PTR assemblyBinderID = 0; - IfFailThrow(pBindingContext->GetBinderID(&assemblyBinderID)); - // If the assembly was bound using the TPA binder, - // then we will return the reference to "Default" binder from the managed implementation when this QCall returns. - // - // See earlier comment about "Default" binder for additional context. - pOpaqueBinder = reinterpret_cast(assemblyBinderID); + if (pBindingContext) + { + IfFailThrow(pBindingContext->GetBinderID(&assemblyBinderID)); + + // If the assembly was bound using the TPA binder, + // then we will return the reference to "Default" binder from the managed implementation when this QCall returns. + // + // See earlier comment about "Default" binder for additional context. + pOpaqueBinder = reinterpret_cast(assemblyBinderID); + } + else + { + // GetBindingContext() returns NULL for System.Private.CoreLib + pOpaqueBinder = pTPABinder; + } // We should have a load context binder at this point. _ASSERTE(pOpaqueBinder != nullptr);