2013-07-31 1 views
0

Я пытаюсь создать надстройку в Visual Studio 2012, которая будет выполнять операции после выполнения программы. Это требует от меня знать, когда был введен режим разработки. У меня есть код ниже, который работает, но он находится на C#, и я работаю в VB.NET.Определить, когда Visual Studio вступила в дизайнерский режим VB.NET

public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) 
    { 
     . 
     . 
     . 
     //Initialize event handlers for host 
     _debuggerEvents = _applicationObject.Events.DebuggerEvents; 
     _debuggerEvents.OnEnterDesignMode += new _dispDebuggerEvents_OnEnterDesignModeEventHandler(OnEnterDesignMode); 
    } 

    /// <summary>Handles when the host application object's debugger enters design mode (is done debugging).</summary> 
    /// <param name="reason">The reason that the host application object is entering design mode.</param> 
    public static void OnEnterDesignMode(dbgEventReason reason) 
    { 
     System.Windows.Forms.MessageBox.Show("ADD-IN DEBUG: Debugger enters design mode."); 
    } 

Я попытался преобразовать его в VB эквивалент в результате которого

Public Sub OnConnection(ByVal application As Object, ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, ByRef custom As Array) Implements IDTExtensibility2.OnConnection 
    . 
    . 
    . 
    ' Initialize event handlers for host 
    _debuggerEvents = _hostAppObj.Events.DebuggerEvents 
    _debuggerEvents.OnEnterDesignMode += New _dispDebuggerEvents_OnEnterDesignModeEventHandler(AddressOf _debuggerEvents.OnEnterDesignMode) 
End Sub 

Public Sub OnEnterDesignMode(ByVal reason As dbgEventReason) 
    System.Windows.Forms.MessageBox.Show("ADD-IN DEBUG: Debugger enters design mode.") 
End Sub 

Visual Studio пометил оба вхождения «_debuggerEvents.OnEnterDesignMode» с пометкой «Late связанной разрешения, могут возникнуть ошибки во время выполнения. " Я не вижу ошибок во время выполнения, но я никогда не вижу, чтобы окно сообщения всплывало с уведомлением о том, что режим разработки был введен как версия C#. Какие-нибудь советы?

Спасибо.

+0

Используйте 'AddHandler' вместо того, чтобы использовать' '+ = метод присвоения EventHandler. – Styxxy

+0

Большое вам спасибо! – janovak

+0

Я добавил его в качестве ответа. – Styxxy

ответ

1

Используйте оператор AddHandler, чтобы добавить обработчик событий (это один из способов, как это делается в VB.NET).

В вашем случае, это было бы:

Public Sub OnConnection(ByVal application As Object, ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, ByRef custom As Array) Implements IDTExtensibility2.OnConnection 

    ' Initialize event handlers for host 
    _debuggerEvents = _hostAppObj.Events.DebuggerEvents 
    AddHandler _debuggerEvents.OnEnterDesignMode, AddressOf OnEnterDesignMode 
End Sub 

Public Sub OnEnterDesignMode(ByVal reason As dbgEventReason) 
    System.Windows.Forms.MessageBox.Show("ADD-IN DEBUG: Debugger enters design mode.") 
End Sub