3
내가 확장 (VSPackage) 내가 그것을 실행하고있을 때, 나는 OnEnterRunMode하지
public sealed class ComboBoxPackage : Package
{
....
public ComboBoxPackage()
{
Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering constructor for: {0}", this.ToString()));
_dte = (DTE)Package.GetGlobalService(typeof(DTE));
_events = _dte.Events;
_debuggerEvents = _events.DebuggerEvents;
_debuggerEvents.OnEnterRunMode += _debugEvents_OnEnterRunMode;
_debuggerEvents.OnContextChanged +=_debuggerEvents_OnContextChanged;
}
void _debuggerEvents_OnContextChanged(EnvDTE.Process NewProcess, Program NewProgram, Thread NewThread, EnvDTE.StackFrame NewStackFrame)
{
throw new NotImplementedException();
}
private void _debugEvents_OnEnterRunMode(dbgEventReason Reason)
{
return;
}
}
VSPackage.cs
의 생성자에서 디버거 이벤트의 2에 가입하고 개발하고있다가 (strating가 실행 작업 응용 프로그램) _debuggerEvents_OnContextChanged 만 호출되고 _debugEvents_OnEnterRunMode가 호출되지 않습니다.Addin 프로젝트와 동일한 작업을 수행하면 정상적으로 작동합니다.
몇 번 읽어야했지만 문제가 실제로 해결되었습니다. 똑같은 문제를 가진 다른 사람들을 분명히하기 위해서. 해결책은'dte.Events'에서 얻은'DebuggerEvents' 객체에 대한 참조를 유지하는 것입니다. 그렇지 않으면, 아마도 가비지 콜렉터에 의해 소비됩니다. – Estiny