IVsSolution.GetProjectOfProjref(String, IVsHierarchy, String, VSUPDATEPROJREFREASON[]) Метод

Определение

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

public:
 int GetProjectOfProjref(System::String ^ pszProjref, [Runtime::InteropServices::Out] Microsoft::VisualStudio::Shell::Interop::IVsHierarchy ^ % ppHierarchy, [Runtime::InteropServices::Out] System::String ^ % pbstrUpdatedProjref, cli::array <Microsoft::VisualStudio::Shell::Interop::VSUPDATEPROJREFREASON> ^ puprUpdateReason);
int GetProjectOfProjref(std::wstring const & pszProjref, [Runtime::InteropServices::Out] Microsoft::VisualStudio::Shell::Interop::IVsHierarchy const & & ppHierarchy, [Runtime::InteropServices::Out] std::wstring const & & pbstrUpdatedProjref, std::Array <Microsoft::VisualStudio::Shell::Interop::VSUPDATEPROJREFREASON> const & puprUpdateReason);
public int GetProjectOfProjref (string pszProjref, out Microsoft.VisualStudio.Shell.Interop.IVsHierarchy ppHierarchy, out string pbstrUpdatedProjref, Microsoft.VisualStudio.Shell.Interop.VSUPDATEPROJREFREASON[] puprUpdateReason);
abstract member GetProjectOfProjref : string * IVsHierarchy * string * Microsoft.VisualStudio.Shell.Interop.VSUPDATEPROJREFREASON[] -> int
Public Function GetProjectOfProjref (pszProjref As String, ByRef ppHierarchy As IVsHierarchy, ByRef pbstrUpdatedProjref As String, puprUpdateReason As VSUPDATEPROJREFREASON()) As Integer

Параметры

pszProjref
String

[in] Указатель на строку ссылки существующего проекта, если применимо. Может иметь значение null.

ppHierarchy
IVsHierarchy

[out] Указатель на интерфейс IVsHierarchy, на который указывает ссылка проекта.

pbstrUpdatedProjref
String

[out] Указатель на обновленную строку ссылки проекта.

puprUpdateReason
VSUPDATEPROJREFREASON[]

[out] Идентификатор, описывающий причину для данного изменения в строке ссылки на проект. Список значений puprUpdateReason см. в VSUPDATEPROJREFREASON.

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

Int32

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

Комментарии

Подпись COM

Из всшелл. IDL:

HRESULT IVsSolution::GetProjectOfProjref(  
   [in] LPCOLESTR pszProjref,  
   [out] IVsHierarchy **ppHierarchy,  
   [out] BSTR *pbstrUpdatedProjref,  
   [out] VSUPDATEPROJREFREASON *puprUpdateReason  
);  

Существует два сценария для этого метода:

  • Ссылка на проект отслеживает, когда проект переименовывается в рамках одного решения. При попытке привязать ссылку проекта идентификатор GUID проекта сначала попытается вызвать метод GetProjectOfGuid . Если этот вызов выполнен успешно и проект был переименован, то для клиента также предоставляется обновленная ссылка на проект.

  • Проекты добавляются в новое решение, и ссылка на проект все еще может быть привязана. Если не удается привязать идентификатор GUID, будет предпринята попытка выполнить обнаружение проекта с использованием сведений о типе/имени. Если это будет выполнено, возвращается Обновленная ссылка на проект, включающая новый проект.

Содержимое ссылки на проект непрозрачно для клиента. Однако для поддержки этих двух сценариев в нашей внутренней реализации необходимо иметь строку ссылки на проект, состоящую из следующих сведений:

  • Идентификатор GUID проекта, назначенный и поддерживаемый файлом решения

  • Тип проекта (или имя)

Ниже приведено описание того, как GetProjectOfProjref метод используется для поддержки операций перетаскивания.

CF_VSPROJECTITEMSФорматы и CF_VSPROJECTS буфер обмена используют DROPFILES структуру таким же образом, как CF_HDROP или CF_PRINTERS . Данные, следующие за DROPFILES структурой, представляют собой список строк, заканчивающийся двойным нулем Projref . Потребитель операции DROP может использовать API Windows DragQueryFile для проверки данных в DROPFILES структуре. CF_VSPROJECTSформат предлагается, когда Projref строки обозначают проекты в целом, то есть * pitemid == VSITEMID_ROOT . CF_VSPROJECTITEMSФормат предлагается, когда Projref строки обозначают один или несколько отдельных элементов проекта. CF_VSPROJECTSНеобходимо либо CF_VSPROJECTITEMS предложение, либо, но не оба.

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