internal int QueryDebugTargets(out VsDebugTargetInfo2[] targets) { IntPtr queryDebuggableProjectCfgPtr = IntPtr.Zero; targets = null; Guid guid = typeof(IVsQueryDebuggableProjectCfg).GUID; int hr = get_CfgType(ref guid, out queryDebuggableProjectCfgPtr); if (ErrorHandler.Failed(hr)) { return(hr); } object queryDebuggableProjectCfgObject = Marshal.GetObjectForIUnknown(queryDebuggableProjectCfgPtr); if (queryDebuggableProjectCfgObject == null) { return(VSConstants.E_UNEXPECTED); } IVsQueryDebuggableProjectCfg baseQueryDebugbableCfg = queryDebuggableProjectCfgObject as IVsQueryDebuggableProjectCfg; if (baseQueryDebugbableCfg == null) { return(VSConstants.E_UNEXPECTED); } uint[] targetsCountOutput = new uint[1]; hr = baseQueryDebugbableCfg.QueryDebugTargets(0, 0, null, targetsCountOutput); if (ErrorHandler.Failed(hr)) { return(hr); } uint numberOfDebugTargets = targetsCountOutput[0]; targets = new VsDebugTargetInfo2[numberOfDebugTargets]; hr = baseQueryDebugbableCfg.QueryDebugTargets(0, numberOfDebugTargets, targets, null); if (ErrorHandler.Failed(hr)) { return(hr); } if (string.IsNullOrEmpty(targets[0].bstrRemoteMachine)) { MessageBox.Show( Resources.NoRemoteMachine, Resources.ProductTitle, MessageBoxButtons.OK, MessageBoxIcon.Error ); return(VSConstants.E_ABORT); } return(hr); }
internal int QueryDebugTargets(out VsDebugTargetInfo2[] targets) { IntPtr queryDebuggableProjectCfgPtr = IntPtr.Zero; targets = null; Guid guid = typeof(IVsQueryDebuggableProjectCfg).GUID; int hr = get_CfgType(ref guid, out queryDebuggableProjectCfgPtr); if (ErrorHandler.Failed(hr)) { return(hr); } object queryDebuggableProjectCfgObject = Marshal.GetObjectForIUnknown(queryDebuggableProjectCfgPtr); if (queryDebuggableProjectCfgObject == null) { return(VSConstants.E_UNEXPECTED); } IVsQueryDebuggableProjectCfg baseQueryDebugbableCfg = queryDebuggableProjectCfgObject as IVsQueryDebuggableProjectCfg; if (baseQueryDebugbableCfg == null) { return(VSConstants.E_UNEXPECTED); } uint[] targetsCountOutput = new uint[1]; hr = baseQueryDebugbableCfg.QueryDebugTargets(0, 0, null, targetsCountOutput); if (ErrorHandler.Failed(hr)) { return(hr); } uint numberOfDebugTargets = targetsCountOutput[0]; targets = new VsDebugTargetInfo2[numberOfDebugTargets]; hr = baseQueryDebugbableCfg.QueryDebugTargets(0, numberOfDebugTargets, targets, null); if (ErrorHandler.Failed(hr)) { return(hr); } if (string.IsNullOrEmpty(targets[0].bstrRemoteMachine)) { MessageBox.Show( "The project cannot be deployed or debugged because there is no remote machine specified in project settings.", "Node Tools for Visual Studio", MessageBoxButtons.OK, MessageBoxIcon.Error); return(VSConstants.E_ABORT); } return(hr); }