Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Legt den Pfad zur im Debugger geladenen Common Language Runtime (CLR) fest.
Syntax
Parameter
pcstrCorPath
[in] Pfad zum im Debugger geladenen CLR.
Rückgabewert
Wenn die Ausführung erfolgreich ist, wird S_OK, andernfalls ein Fehlercode zurückgegeben.
Beispiel
Das folgende Beispiel zeigt, wie Sie diese Methode für ein ExpressionEvaluatorPackage -Objekt implementieren, das die IDebugExpressionEvaluator2-Schnittstelle verfügbar macht.
STDMETHODIMP ExpressionEvaluatorPackage::SetCorPath(LPCOLESTR pcstrCorPath)
{
VerifyInPtr(pcstrCorPath);
HRESULT hr = E_FAIL;
VBEECompilerSingleton *pVBEECompilerSingleton = VBEECompilerSingleton::Instance();
if (pVBEECompilerSingleton)
{
pVBEECompilerSingleton->LockEECompiler();
try
{
if (!m_pCompiler->FindEECompilerHost(pcstrCorPath, &m_pCompilerHost))
{
CComObject<CVBEECompilerHost> *pEECompilerHost;
if (SUCCEEDED(CComObject<CVBEECompilerHost>::CreateInstance(&pEECompilerHost)))
{
pEECompilerHost->AddRef();
pEECompilerHost->Init(pcstrCorPath);
CComPtr<IVbCompilerHost> srpVBHost;
HRESULT hr2 = pEECompilerHost->QueryInterface(IID_IVbCompilerHost, (void **)&srpVBHost);
pEECompilerHost->Release();
if (SUCCEEDED(hr2))
{
m_pCompiler->RegisterEECompilerHost(srpVBHost);
}
}
}
else
{
hr = S_OK;
}
if (m_pCompiler->FindEECompilerHost(pcstrCorPath, &m_pCompilerHost))
{
ULONG cErrors = 0;
ULONG cWarnings = 0;
m_pCompiler->CompileToBound(m_pCompilerHost, &cErrors, &cWarnings, NULL);
// This needs to happen after bound
if (m_pCompilerHost->GetVbLibraryType() == TLB_AutoDetect)
{
m_pCompilerHost->AutoSetVbLibraryType();
}
VSASSERT(m_pCompiler && m_pCompilerHost && m_pCompilerHost->GetIntrinsicSymbol(t_i4) != NULL, "Invalid state");
if (cErrors + cWarnings > 0)
{
VSFAIL("Errors from mscorlib.dll and vb runtime!");
__leave;
}
hr = S_OK;
}
else
{
VSFAIL("FindCompilerHost shouldn't have failed!");
}
}
catch_hresult;
VSASSERT(m_pCompilerHost->GetComPlusProject()->GetCompState() >= CS_Bound, "Debugger mscorlib not in bound state");
pVBEECompilerSingleton->UnlockEECompiler();
}
return hr;
}