本文整理汇总了C++中Assembly::GetManifestFile方法的典型用法代码示例。如果您正苦于以下问题:C++ Assembly::GetManifestFile方法的具体用法?C++ Assembly::GetManifestFile怎么用?C++ Assembly::GetManifestFile使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Assembly
的用法示例。
在下文中一共展示了Assembly::GetManifestFile方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LowLevelLoadManifestFile
HRESULT AssemblySpec::LowLevelLoadManifestFile(PEFile** ppFile,
IAssembly** ppIAssembly,
Assembly **ppDynamicAssembly,
OBJECTREF* pExtraEvidence,
OBJECTREF* pThrowable)
{
CANNOTTHROWCOMPLUSEXCEPTION();
HRESULT hr = S_OK;
IAssemblyName* pFusionAssemblyName = NULL; // Assembly object to assembly in fusion cache
if(!(m_pAssemblyName || m_CodeInfo.m_pszCodeBase)) {
PostFileLoadException("", FALSE, NULL, COR_E_FILENOTFOUND, pThrowable);
return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
}
//
// Check to see if this fits our rather loose idea of a reference to mscorlib.
// If so, don't use fusion to bind it - do it ourselves.
//
if (IsMscorlib())
{
_ASSERTE(wcslen(SystemDomain::System()->BaseLibrary()) > 0);
hr = PEFile::Create(SystemDomain::System()->BaseLibrary(),
NULL,
mdFileNil,
TRUE,
NULL,
NULL, // Code base is the same as the name
NULL, // Extra Evidence
ppFile);
_ASSERTE((*ppFile)->IsSystem());
if (ppDynamicAssembly) *ppDynamicAssembly = NULL;
return hr;
}
CQuickWSTR FusionLog;
FusionLog.Ptr()[0]=L'\0';
BEGIN_ENSURE_PREEMPTIVE_GC();
Assembly *pAssembly = NULL;
PEFile *pFile = NULL;
hr = CreateFusionName(&pFusionAssemblyName);
if (FAILED(hr))
goto exit;
hr = pFusionAssemblyName->SetProperty(ASM_NAME_NULL_CUSTOM,NULL,0); //do not look in ZAP
if (FAILED(hr))
goto exit;
hr = GetAssemblyFromFusion(GetAppDomain(),
pFusionAssemblyName,
&m_CodeInfo,
ppIAssembly,
&pFile,
&FusionLog,
pExtraEvidence,
pThrowable);
if(FAILED(hr)) {
DWORD cb = 0;
pFusionAssemblyName->GetDisplayName(NULL, &cb, 0);
if(cb) {
CQuickBytes qb;
LPWSTR pwsFullName = (LPWSTR) qb.Alloc(cb*sizeof(WCHAR));
if (SUCCEEDED(pFusionAssemblyName->GetDisplayName(pwsFullName, &cb, 0))) {
if ((pAssembly = GetAppDomain()->RaiseAssemblyResolveEvent(pwsFullName, pThrowable)) != NULL) {
pFile = pAssembly->GetManifestFile();
hr = S_FALSE;
}
}
}
#ifdef _DEBUG
if(FAILED(hr)) {
if (m_pAssemblyName)
LOG((LF_CLASSLOADER, LL_ERROR, "Fusion could not load from full name, %s\n", m_pAssemblyName));
else if (m_CodeInfo.m_pszCodeBase)
LOG((LF_CLASSLOADER, LL_ERROR, "Fusion could not load from codebase, %s\n",m_CodeInfo.m_pszCodeBase));
else
LOG((LF_CLASSLOADER, LL_ERROR, "Fusion could not load unknown assembly.\n"));
}
#endif //_DEBUG
}
exit:
if (SUCCEEDED(hr)) {
if (ppFile) *ppFile = pFile;
if (ppDynamicAssembly) *ppDynamicAssembly = pAssembly;
}
if(pFusionAssemblyName)
pFusionAssemblyName->Release();
END_ENSURE_PREEMPTIVE_GC();
//.........这里部分代码省略.........