Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ustawia ścieżkę do środowiska uruchomieniowego języka wspólnego (CLR) załadowanego w debugerze.
Składnia
Parametry
pcstrCorPath
[in] Ścieżka do środowiska CLR załadowanego w debugerze.
Wartość zwracana
Jeśli operacja powiedzie się, zwraca wartość S_OK; w przeciwnym razie zwraca kod błędu.
Przykład
W poniższym przykładzie pokazano, jak zaimplementować tę metodę dla obiektu ExpressionEvaluatorPackage , który uwidacznia interfejs IDebugExpressionEvaluator2 .
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;
}