IVsSolutionBuildManager.GetProjectDependencies(IVsHierarchy, UInt32, IVsHierarchy[], UInt32[]) Метод

Определение

Возвращает список проектов, от которых зависит данная иерархия.

int GetProjectDependencies(Microsoft::VisualStudio::Shell::Interop::IVsHierarchy const & pHier, unsigned int celt, std::Array <Microsoft::VisualStudio::Shell::Interop::IVsHierarchy const &> const & rgpHier, std::Array <unsigned int> const & pcActual);
public int GetProjectDependencies (Microsoft.VisualStudio.Shell.Interop.IVsHierarchy pHier, uint celt, Microsoft.VisualStudio.Shell.Interop.IVsHierarchy[] rgpHier, uint[] pcActual);
abstract member GetProjectDependencies : Microsoft.VisualStudio.Shell.Interop.IVsHierarchy * uint32 * Microsoft.VisualStudio.Shell.Interop.IVsHierarchy[] * uint32[] -> int
Public Function GetProjectDependencies (pHier As IVsHierarchy, celt As UInteger, rgpHier As IVsHierarchy(), Optional pcActual As UInteger()) As Integer

Параметры

pHier
IVsHierarchy

[in] Указатель на объект IVsHierarchy.

celt
UInt32

[in] Задает celt.

rgpHier
IVsHierarchy[]

[in, out] Задает проекты для построения.

pcActual
UInt32[]

[out, optional] Указатель на количество проектов.

Возвращаемое значение

Int32

Если метод завершается успешно, возвращает значение S_OK. В противном случае функция возвращает код ошибки.

Комментарии

Подпись COM

Из всшелл. IDL:

HRESULT IVsSolutionBuildManager::GetProjectDependencies(  
   [in] IVsHierarchy *pHier,  
   [in] ULONG celt,  
   [in, out, size_is(celt)] IVsHierarchy *rgpHier[],  
   [out, optional] ULONG *pcActual  
);  

Возвращает список проектов, от которых зависит данная иерархия.

Необходимо вызвать метод CalculateProjectDependencies перед вызовом, GetProjectDependencies Если вы не уверены в том, что зависимости обновлены в точке вызова. CalculateProjectDependencies принудительно пересчитывает зависимости проекта.

Этот метод должен вызываться дважды, при первом использовании celt = 0 и rgpHier = null , чтобы получить размер в pcActual , затем во второй раз после выделения списка для получения проектов.

Метод будет реализован следующим образом (проверки ошибок опущены):

ULONG ulActual;

hr = pIVsSolutionBuildManager->GetProjectDependencies(pHier, 0, NULL, &ulActual)

// allocate memory to hold the hierarchy pointers

IVsHierarchy** rgpIVsHierarchy = (IVsHierarchy**) ::CoTaskMemAlloc(ulActual * sizeof(IVsHierarchy *));

memset(rgpIVsHierarchy, 0, sizeof(IVsHierarchy*)*ulActual);

// now get the hierarchy pointers

ULONG ulActual2;

hr = pIVsSolutionBuildManager->GetProjectDependencies(pHier, ulActual, rgpIVsHierarchy, &ulActual2);

// use the pointers here

// release the hier pointers

// release the memory

::CoTaskMemFree(rgpIVsHierarchy);

Применяется к