IVsSolution2.GetProjectOfProjref Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Returns a hierarchy for the specified project reference string.
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
Parameters
- pszProjref
- String
[in] Pointer to the existing project reference string, if applicable. Can be null
.
- ppHierarchy
- IVsHierarchy
[out] Pointer to the IVsHierarchy interface referred to by the project reference.
- pbstrUpdatedProjref
- String
[out] Pointer to the updated project reference string.
- puprUpdateReason
- VSUPDATEPROJREFREASON[]
[out] Identified describing the reason for the change in the project reference string. For a list of puprUpdateReason
values, see VSUPDATEPROJREFREASON.
Returns
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Implements
Remarks
COM Signature
From vsshell.idl:
HRESULT IVsSolution2::GetProjectOfProjref(
[in] LPCOLESTR pszProjref,
[out] IVsHierarchy **ppHierarchy,
[out] BSTR *pbstrUpdatedProjref,
[out] VSUPDATEPROJREFREASON *puprUpdateReason
);
There are two scenarios for this method:
The project reference tracks when the project is renamed within one solution. When attempting to bind a project reference, the project GUID is first attempted by calling GetProjectOfGuid. If this call succeeds and the project has been renamed, then the updated project reference is also provided for the client.
Projects are added to a new solution, and the project reference is still able to bind. If the GUID fails to bind, then an attempt is made to locate the project by using the type/name information. If this succeeds, then an updated project reference that includes the new project is returned.
The contents of the project reference are opaque to the client. However, in order to support these two scenarios for our internal implementation, we need to have a project reference string that is composed of the following information:
Project GUID assigned and maintained by the solution file
Project type (or name)
The following is a description of how the GetProjectOfProjref
method is used to support drag-and-drop operations:
The CF_VSPROJECTITEMS and CF_VSPROJECTS clipboard formats use the DROPFILES
structure in the same manner as CF_HDROP or CF_PRINTERS. The data that follows the DROPFILES
structure is a double-NULL-terminated list of Projref
strings. The consumer of the drop operation can use the Windows API DragQueryFile
to examine the data in the DROPFILES
structure. CF_VSPROJECTS format is offered when the Projref
strings identify projects as a whole, that is, *pitemid
== VSITEMID_ROOT. The CF_VSPROJECTITEMS format is offered when the Projref
strings identify one or more individual project items. Either CF_VSPROJECTS or CF_VSPROJECTITEMS should be offered, but never both.