示例#1
0
        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);
        }