if(NOT CMAKE_SYSTEM_NAME STREQUAL NetBSD)
add_definitions(-DFEATURE_HIJACK)
endif(NOT CMAKE_SYSTEM_NAME STREQUAL NetBSD)
-add_definitions(-DFEATURE_HOST_ASSEMBLY_RESOLVER)
add_definitions(-DFEATURE_ICASTABLE)
if (WIN32 AND (CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_I386))
add_definitions(-DFEATURE_INTEROP_DEBUGGING)
m_pFailureCache = pFailureCache;
}
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
m_fCanExplicitlyBindToNativeImages = false;
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
Exit:
BINDER_LOG_LEAVE_HR(W("ApplicationContext::Init"), hr);
BOOL IsCompilationProcess();
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
#include "clrprivbindercoreclr.h"
#include "clrprivbinderassemblyloadcontext.h"
// Helper function in the VM, invoked by the Binder, to invoke the host assembly resolver
// Helper to check if we have a host assembly resolver set
extern BOOL RuntimeCanUseAppPathAssemblyResolver(DWORD adid);
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
namespace BINDER_SPACE
{
// Dynamic binds need to be always considered a failure for binding closures
IF_FAIL_GO(FUSION_E_APP_DOMAIN_LOCKED);
}
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
else if (IgnoreRefDefMatch(dwBindFlags))
{
// Skip RefDef matching if we have been asked to.
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
else
{
// Can't give higher serciving than already bound
bool fUseAppPathsBasedResolver = !excludeAppPaths;
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
// If Host Assembly Resolver is specified, then we will use that as the override for the default resolution mechanism (that uses AppPath probing).
if (fUseAppPathsBasedResolver && !RuntimeCanUseAppPathAssemblyResolver(pApplicationContext->GetAppDomainId()))
{
fUseAppPathsBasedResolver = false;
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
// This loop executes twice max. First time through we probe AppNiPaths, the second time we probe AppPaths
bool parseNiPaths = true;
#endif //CROSSGEN_COMPILE
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
HRESULT AssemblyBinder::BindUsingHostAssemblyResolver (/* in */ INT_PTR pManagedAssemblyLoadContextToBindWithin,
/* in */ AssemblyName *pAssemblyName,
/* in */ IAssemblyName *pIAssemblyName,
BINDER_LOG_LEAVE_HR(W("AssemblyBinder::BindUsingPEImage"), hr);
return hr;
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
};
#include "clrprivbinderassemblyloadcontext.h"
#include "clrprivbinderutil.h"
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
using namespace BINDER_SPACE;
m_pTPABinder = NULL;
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
hr = BindAssemblyByNameWorker(pAssemblyName, &pCoreCLRFoundAssembly, false /* excludeAppPaths */);
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
if ((hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)) ||
(hr == FUSION_E_APP_DOMAIN_LOCKED) || (hr == FUSION_E_REF_DEF_MISMATCH))
{
}
}
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
IF_FAIL_GO(hr);
return hr;
}
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
HRESULT CLRPrivBinderCoreCLR::BindUsingPEImage( /* in */ PEImage *pPEImage,
/* in */ BOOL fIsNativeImage,
/* [retval][out] */ ICLRPrivAssembly **ppAssembly)
return hr;
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
HRESULT CLRPrivBinderCoreCLR::VerifyBind(IAssemblyName *AssemblyName,
ICLRPrivAssembly *pAssembly,
SimpleNameToFileNameMap * m_pTrustedPlatformAssemblyMap;
TpaFileNameHash * m_pFileNameHash;
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
bool m_fCanExplicitlyBindToNativeImages;
public:
inline void SetExplicitBindToNativeImages(bool fCanExplicitlyBindToNativeImages)
return m_fCanExplicitlyBindToNativeImages;
}
protected:
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
};
#include "applicationcontext.inl"
#include "clrprivbindercoreclr.h"
#endif // !defined(FEATURE_FUSION)
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
#include "clrprivbinderassemblyloadcontext.h"
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
STDAPI BinderAcquirePEImage(LPCTSTR szAssemblyPath,
PEImage **ppPEImage,
friend class ::CLRPrivBinderCoreCLR;
#endif // !defined(FEATURE_FUSION)
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
friend class ::CLRPrivBinderAssemblyLoadContext;
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
};
// This is a fast version which goes around the COM interfaces and directly
/* out */ Assembly **ppAssembly,
/* in */ LPCTSTR szMDAssemblyPath = NULL);
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
static HRESULT BindUsingHostAssemblyResolver (/* in */ INT_PTR pManagedAssemblyLoadContextToBindWithin,
/* in */ AssemblyName *pAssemblyName,
/* in */ IAssemblyName *pIAssemblyName,
/* in */ PEKIND peKind,
/* in */ IMDInternalImport *pIMetaDataAssemblyImport,
/* [retval] [out] */ Assembly **ppAssembly);
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
static HRESULT TranslatePEToArchitectureType(DWORD *pdwPAFlags, PEKIND *PeKind);
BIND_CACHE_FAILURES = 0x01,
BIND_CACHE_RERUN_BIND = 0x02,
BIND_IGNORE_DYNAMIC_BINDS = 0x04
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
,
BIND_IGNORE_REFDEF_MATCH = 0x8
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
};
static BOOL IgnoreDynamicBinds(DWORD dwBindFlags)
return ((dwBindFlags & BIND_CACHE_RERUN_BIND) != 0);
}
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
static BOOL IgnoreRefDefMatch(DWORD dwBindFlags)
{
return ((dwBindFlags & BIND_IGNORE_REFDEF_MATCH) != 0);
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
static HRESULT BindByName(/* in */ ApplicationContext *pApplicationContext,
/* in */ AssemblyName *pAssemblyName,
#include "applicationcontext.hpp"
#include "clrprivbindercoreclr.h"
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
namespace BINDER_SPACE
{
INT_PTR m_ptrManagedAssemblyLoadContext;
};
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
#endif // __CLRPRIVBINDERASSEMBLYLOADCONTEXT_H__
HRESULT PreBindByteArray(PEImage *pPEImage, BOOL fInspectionOnly);
#endif // CROSSGEN_COMPILE
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
HRESULT BindUsingPEImage( /* in */ PEImage *pPEImage,
/* in */ BOOL fIsNativeImage,
/* [retval][out] */ ICLRPrivAssembly **ppAssembly);
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
HRESULT BindAssemblyByNameWorker(
BINDER_SPACE::AssemblyName *pAssemblyName,
IDS_EE_ERROR_IDISPATCH "IDispatch and IDispatchEx are not supported"
END
-#ifdef FEATURE_HOST_ASSEMBLY_RESOLVER
STRINGTABLE DISCARDABLE
BEGIN
IDS_HOST_ASSEMBLY_RESOLVER_ASSEMBLY_ALREADY_LOADED_IN_CONTEXT "Assembly with same name is already loaded"
IDS_HOST_ASSEMBLY_RESOLVER_INCOMPATIBLE_BINDING_CONTEXT "Assembly is already bound to an incompatible binding context."
IDS_HOST_ASSEMBLY_RESOLVER_INCOMPATIBLE_TPA_BINDING_CONTEXT "Default binding context is already attached to managed load context."
END
-#endif // FEATURE_HOST_ASSEMBLY_RESOLVER
STRINGTABLE DISCARDABLE
BEGIN
#define IDS_EE_BADMARSHAL_TYPE_IDISPATCH 0x2634
#define IDS_EE_ERROR_IDISPATCH 0x2635
-#ifdef FEATURE_HOST_ASSEMBLY_RESOLVER
#define IDS_HOST_ASSEMBLY_RESOLVER_ASSEMBLY_ALREADY_LOADED_IN_CONTEXT 0x2636
#define IDS_HOST_ASSEMBLY_RESOLVER_DYNAMICALLY_EMITTED_ASSEMBLIES_UNSUPPORTED 0x2637
#define IDS_HOST_ASSEMBLY_RESOLVER_INCOMPATIBLE_BINDING_CONTEXT 0x2638
#define IDS_HOST_ASSEMBLY_RESOLVER_INCOMPATIBLE_TPA_BINDING_CONTEXT 0x2639
-#endif // FEATURE_HOST_ASSEMBLY_RESOLVER
#define IDS_NATIVE_IMAGE_CANNOT_BE_LOADED_MULTIPLE_TIMES 0x263a
m_fDisableInterfaceCache = FALSE;
m_pFusionContext = NULL;
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
m_pTPABinderContext = NULL;
-#endif
// Make sure the container is set to NULL so that it gets loaded when it is used.
m_pLargeHeapHandleTable = NULL;
m_pFusionContext->Release();
m_pFusionContext = NULL;
}
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
if (m_pTPABinderContext) {
m_pTPABinderContext->Release();
m_pTPABinderContext = NULL;
}
-#endif
}
#ifdef FEATURE_PREJIT
m_pDomainFileWithNativeImageList = NULL;
#endif
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
m_fIsBindingModelLocked.Store(FALSE);
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
} // AppDomain::AppDomain
IfFailThrow(CCoreCLRBinderHelper::DefaultBinderSetupContext(GetId().m_dwId, &pTPABinder));
m_pFusionContext = reinterpret_cast<IUnknown *>(pTPABinder);
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// By default, initial binding context setup for CoreCLR is also the TPABinding context
(m_pTPABinderContext = pTPABinder)->AddRef();
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
}
#endif //!DACCESS_COMPILE
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
// Returns a BOOL indicating if the binding model has been locked for the AppDomain
BOOL AppDomain::IsBindingModelLocked()
return hr;
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
//approximate size of loader data
//maintained for each assembly
#else
IUnknown *GetFusionContext() {LIMITED_METHOD_CONTRACT; return m_pFusionContext; }
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
CLRPrivBinderCoreCLR *GetTPABinderContext() {LIMITED_METHOD_CONTRACT; return m_pTPABinderContext; }
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
#endif
#else
IUnknown *m_pFusionContext; // Current binding context for the domain
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
CLRPrivBinderCoreCLR *m_pTPABinderContext; // Reference to the binding context that holds TPA list details
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
#endif
IUnknown *CreateFusionContext();
#endif // FEATURE_VERSIONING
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
void OverrideDefaultContextBinder(IUnknown *pOverrideBinder)
{
LIMITED_METHOD_CONTRACT;
m_pFusionContext = pOverrideBinder;
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
#ifdef FEATURE_PREJIT
CorCompileConfigFlags GetNativeConfigFlags();
#endif
public:
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
private:
Volatile<BOOL> m_fIsBindingModelLocked;
public:
BOOL IsHostAssemblyResolverInUse();
BOOL IsBindingModelLocked();
BOOL LockBindingModel();
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
UMEntryThunkCache *GetUMEntryThunkCache();
&ma));
pFile = PEAssembly::Create(pCallerAssembly->GetManifestFile(), pAssemblyEmit, args->access & ASSEMBLY_ACCESS_REFLECTION_ONLY);
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// Dynamically created modules (aka RefEmit assemblies) do not have a LoadContext associated with them since they are not bound
// using an actual binder. As a result, we will assume the same binding/loadcontext information for the dynamic assembly as its
// caller/creator to ensure that any assembly loads triggered by the dynamic assembly are resolved using the intended load context.
// Set it as the fallback load context binder for the dynamic assembly being created
pFile->SetFallbackLoadContextBinder(pFallbackLoadContextBinder);
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
}
if (pParentAssembly != NULL)
spec.SetParentAssembly(pParentAssembly);
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// Have we been passed the reference to the binder against which this load should be triggered?
// If so, then use it to set the fallback load context binder.
if (ptrLoadContextBinder != NULL)
PEFile *pRefAssemblyManifestFile = pRefAssembly->GetManifestFile();
spec.SetFallbackLoadContextBinderForRequestingAssembly(pRefAssemblyManifestFile->GetFallbackLoadContextBinder());
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
AssemblyLoadSecurity loadSecurity;
loadSecurity.m_pAdditionalEvidence = &gc.security;
}
FCIMPLEND
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
/* static */
Assembly* AssemblyNative::LoadFromPEImage(ICLRPrivBinder* pBinderContext, PEImage *pILImage, PEImage *pNIImage)
END_QCALL;
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
/* static */
Assembly* AssemblyNative::GetPostPolicyAssembly(PEAssembly *pFile,
}
#endif // FEATURE_APPX
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
/*static*/
INT_PTR QCALLTYPE AssemblyNative::InitializeAssemblyLoadContext(INT_PTR ptrManagedAssemblyLoadContext, BOOL fRepresentsTPALoadContext)
{
return ptrManagedAssemblyLoadContext;
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// static
BOOL QCALLTYPE AssemblyNative::InternalTryGetRawMetadata(
}
}
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
if (GetPreferFallbackLoadContextBinder())
{
// If we have been asked to use the fallback load context binder (currently only supported for AssemblyLoadContext.LoadFromAssemblyName),
// used as the parent assembly binder.
pParentAssemblyBinder = static_cast<ICLRPrivBinder*>(pDomain->GetFusionContext());
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
return pParentAssemblyBinder;
}
DWORD m_dwHashAlg;
DomainAssembly *m_pParentAssembly;
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// Contains the reference to the fallback load context associated with RefEmitted assembly requesting the load of another assembly (static or dynamic)
ICLRPrivBinder *m_pFallbackLoadContextBinder;
// Flag to indicate if we should prefer the fallback load context binder for binding or not.
bool m_fPreferFallbackLoadContextBinder;
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
BOOL IsValidAssemblyName();
LIMITED_METHOD_CONTRACT;
m_pParentAssembly = NULL;
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
m_pFallbackLoadContextBinder = NULL;
m_fPreferFallbackLoadContextBinder = false;
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
}
#endif //!DACCESS_COMPILE
LIMITED_METHOD_CONTRACT
m_pParentAssembly = NULL;
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
m_pFallbackLoadContextBinder = NULL;
m_fPreferFallbackLoadContextBinder = false;
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
}
#endif
}
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
void SetFallbackLoadContextBinderForRequestingAssembly(ICLRPrivBinder *pFallbackLoadContextBinder)
{
LIMITED_METHOD_CONTRACT;
return m_fPreferFallbackLoadContextBinder;
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// Note that this method does not clone the fields!
void CopyFrom(AssemblySpec* pSource)
SetIntrospectionOnly(pSource->IsIntrospectionOnly());
SetParentAssembly(pSource->GetParentAssembly());
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// Copy the details of the fallback load context binder
SetFallbackLoadContextBinderForRequestingAssembly(pSource->GetFallbackLoadContextBinderForRequestingAssembly());
m_fPreferFallbackLoadContextBinder = pSource->GetPreferFallbackLoadContextBinder();
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
m_HashForControl = pSource->m_HashForControl;
m_dwHashAlg = pSource->m_dwHashAlg;
if (pIUnknownBinder != NULL)
{
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
if (pDomain->GetFusionContext() != pDomain->GetTPABinderContext())
{
pAppContext = (static_cast<CLRPrivBinderAssemblyLoadContext *>(pIUnknownBinder))->GetAppContext();
}
else
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER) && !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
+#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
{
pAppContext = (static_cast<CLRPrivBinderCoreCLR *>(pIUnknownBinder))->GetAppContext();
}
return systemModuleHandle;
}
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
/* static */
HMODULE NDirect::LoadLibraryModuleViaHost(NDirectMethodDesc * pMD, AppDomain* pDomain, const wchar_t* wszLibName)
{
return (HMODULE)hmod;
}
-#endif //defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// Try to load the module alongside the assembly where the PInvoke was declared.
HMODULE NDirect::LoadFromPInvokeAssemblyDirectory(Assembly *pAssembly, LPCWSTR libName, DWORD flags, LoadLibErrorTracker *pErrorTracker)
AppDomain* pDomain = GetAppDomain();
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// AssemblyLoadContext is not supported in AppX mode and thus,
// we should not perform PInvoke resolution via it when operating in
// AppX mode.
{
hmod = LoadLibraryModuleViaHost(pMD, pDomain, wszLibName);
}
-#endif //FEATURE_HOST_ASSEMBLY_RESOLVER
if(hmod == NULL)
static HMODULE LoadFromNativeDllSearchDirectories(AppDomain* pDomain, LPCWSTR libName, DWORD flags, LoadLibErrorTracker *pErrorTracker);
static HMODULE LoadFromPInvokeAssemblyDirectory(Assembly *pAssembly, LPCWSTR libName, DWORD flags, LoadLibErrorTracker *pErrorTracker);
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
static HMODULE LoadLibraryModuleViaHost(NDirectMethodDesc * pMD, AppDomain* pDomain, const wchar_t* wszLibName);
-#endif //defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
#if !defined(FEATURE_CORESYSTEM)
static HINSTANCE CheckForWellKnownModules(LPCWSTR wszLibName, LoadLibErrorTracker *pErrorTracker);
AssemblySpec name;
name.InitializeSpec(pDependencies->dwAssemblyDef, pNativeImage->GetNativeMDImport(), this);
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
if (!name.IsAssemblySpecForMscorlib())
{
// We just initialized the assembly spec for the NI dependency. This will not have binding context
_ASSERTE(pParentAssemblyBindingContext);
name.SetBindingContext(pParentAssemblyBindingContext);
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
GetAppDomain()->CheckForMismatchedNativeImages(&name, &pDependencies->signAssemblyDef.mvid);
}
QCFuncElement("InternalTryGetRawMetadata", AssemblyNative::InternalTryGetRawMetadata)
FCFuncEnd()
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
FCFuncStart(gAssemblyLoadContextFuncs)
QCFuncElement("InitializeAssemblyLoadContext", AssemblyNative::InitializeAssemblyLoadContext)
QCFuncElement("LoadFromPath", AssemblyNative::LoadFromPath)
QCFuncElement("InternalStartProfile", MultiCoreJITNative::InternalStartProfile)
#endif // defined(FEATURE_MULTICOREJIT)
FCFuncEnd()
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
FCFuncStart(gAssemblyNameFuncs)
FCFuncElement("nInit", AssemblyNameNative::Init)
FCClassElement("AssemblyExtensions", "System.Reflection.Metadata", gAssemblyExtensionsFuncs)
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
FCClassElement("AssemblyLoadContext", "System.Runtime.Loader", gAssemblyLoadContextFuncs)
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
FCClassElement("AssemblyName", "System.Reflection", gAssemblyNameFuncs)
FCClassElement("Assert", "System.Diagnostics", gDiagnosticsAssert)
DEFINE_METASIG_T(IM(RefGuid_OutIntPtr_RetCustomQueryInterfaceResult, r(g(GUID)) r(I), g(CUSTOMQUERYINTERFACERESULT)))
#endif //FEATURE_COMINTEROP
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
DEFINE_METASIG_T(SM(IntPtr_AssemblyName_RetAssemblyBase, I C(ASSEMBLY_NAME), C(ASSEMBLYBASE)))
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// ThreadPool
DEFINE_METASIG(SM(Obj_Bool_RetVoid, j F, v))
DEFINE_CLASS(FIRSTCHANCE_EVENTARGS, ExceptionServices, FirstChanceExceptionEventArgs)
DEFINE_METHOD(FIRSTCHANCE_EVENTARGS, CTOR, .ctor, IM_Exception_RetVoid)
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
-
DEFINE_CLASS(ASSEMBLYLOADCONTEXT, Loader, AssemblyLoadContext)
DEFINE_METHOD(ASSEMBLYLOADCONTEXT, RESOLVE, Resolve, SM_IntPtr_AssemblyName_RetAssemblyBase)
DEFINE_METHOD(ASSEMBLYLOADCONTEXT, RESOLVEUNMANAGEDDLL, ResolveUnmanagedDll, SM_Str_IntPtr_RetIntPtr)
DEFINE_METHOD(ASSEMBLYLOADCONTEXT, RESOLVEUSINGEVENT, ResolveUsingResolvingEvent, SM_IntPtr_AssemblyName_RetAssemblyBase)
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
-
DEFINE_CLASS(LAZY, System, Lazy`1)
DEFINE_CLASS(LAZY_INITIALIZER, Threading, LazyInitializer)
#define g_ExceptionServicesNS g_RuntimeNS ".ExceptionServices"
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
#define g_LoaderNS g_RuntimeNS ".Loader"
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
m_flags(0),
m_fStrongNameVerified(FALSE)
,m_pHostAssembly(nullptr)
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
,m_pFallbackLoadContextBinder(nullptr)
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
{
CONTRACTL
{
protected:
PTR_ICLRPrivAssembly m_pHostAssembly;
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// For certain assemblies, we do not have m_pHostAssembly since they are not bound using an actual binder.
// An example is Ref-Emitted assemblies. Thus, when such assemblies trigger load of their dependencies,
// we need to ensure they are loaded in appropriate load context.
// assembly that created the dynamic assembly. If the creator assembly is dynamic itself, then its fallback
// load context would be propagated to the assembly being dynamically generated.
ICLRPrivBinder *m_pFallbackLoadContextBinder;
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
protected:
bool CanUseWithBindingCache()
{ LIMITED_METHOD_CONTRACT; return !HasHostAssembly(); }
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
void SetFallbackLoadContextBinder(ICLRPrivBinder *pFallbackLoadContextBinder)
{
LIMITED_METHOD_CONTRACT;
return m_pFallbackLoadContextBinder;
}
-#endif //defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
}; // class PEFile
spec.SetParentAssembly(pRequestingAssembly->GetDomainAssembly());
}
-#if defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
// If the requesting assembly has Fallback LoadContext binder available,
// then set it up in the AssemblySpec.
if (pRequestingAssembly != NULL)
PEFile *pRequestingAssemblyManifestFile = pRequestingAssembly->GetManifestFile();
spec.SetFallbackLoadContextBinderForRequestingAssembly(pRequestingAssemblyManifestFile->GetFallbackLoadContextBinder());
}
-#endif // defined(FEATURE_HOST_ASSEMBLY_RESOLVER)
if (bThrowIfNotFound)
{