2016-08-31 4 views
-3

"다른 이름으로 저장"대화 상자가 표시 될 때 발생하는 내 VSTO 추가 기능 보고서의 여러 사용자가 응답하지 않습니다. 이 문제는 Excel 추가 기능과 Word 추가 기능에서 발생합니다. 흥미롭게도 두 응용 프로그램은 문서에서 "다른 이름으로 저장"명령을 호출 할 때 멈추는 경향이 있습니다.교수형 디버깅 방법 SaveFileDialog

나는 전체 응용 프로그램은 단지이 상황에서 Excel이나 Word를 종료하려고하면

// using System.Windows.Forms; 
SaveFileDialog dlg = new SaveFileDialog(); 
// lines to configure dlg left out 
dlg.ShowDialog(); 

후 정지하기 때문에이 문제를 해결하기 위해 힘든 시간을 보내고 있어요, 메시지 상자가 "엑셀/워드 닫을 수 없습니다" 나타납니다, 그리고 사람들은 그것을 없애기 위해 작업 관리자에게 의지해야합니다.

"다른 이름으로 저장"에서 Excel과 Word가 자주 중단된다는 사실은 추가 기능이 이러한 응용 프로그램의 기본 제공 "다른 이름으로 저장"명령을 방해하지 않기 때문에 특히 불안합니다.

아쉽게해도 추가 기능을로드 할 필요가 없습니다. "COM 추가 기능"에서 해당 항목의 선택을 취소하고 응용 프로그램을 다시 시작해도 비활성화하면 문제가 해결되지 않습니다. "Save as"가 응용 프로그램을 멈추지 않도록 추가 기능을 완전히 제거해야합니다.

이 때문에 문제는 내 추가 기능 코드가 아니라 파일 대화 상자가 나타나지 않도록 (비활성 상태의) VSTO 추가 기능이 있다는 것입니다. 이로 인해 중단이 발생할 수 있습니다.

중단이 항상 발생하는 것은 아니며 모든 시스템에서 발생하는 것은 아닙니다. 꽤 무작위입니다.

어떻게하면 더 자세히 조사 할 수 있습니까? Visual Studio Professional 2013이 있지만 Office 응용 프로그램이 멈추는 이유와 이유를 찾는 방법을 모릅니다.

+0

[C# MSDN SaveFileDialog] (https://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog (v = vs.110) .aspx) 모든 관련 코드를 표시해야합니다. .COM Interop을 사용하고 있다면 아마도 Marshal입니다. Com 객체를 올바르게 릴리스하십시오. 관련 코드를 모두 제공하십시오. – MethodMan

+0

SaveDialog가 다른 창 뒤에있을 수 있습니다. –

+0

@JimHewitt 그래,하지만 이미 시도하고 엑셀/워드 창을 매우 작게 만들 어서 대화 상자가 어딘가에 보이도록해야한다. 그리고 어떤 이유로 든 화면 밖으로 표시 되더라도 ESC는 포커스가있는 경우 닫고 (Word/Excel을 차단합니다) ESC는 아무 것도하지 않습니다. – bovender

답변

1

엑셀에서 추가 기능이로드되지 않은 경우에도 관리되는 추가 기능에 "Warmup"레지스트리 값이 등록되어 있으면 Excel이 작동하지 않습니다.

추가 기능의 레지스트리 키에서 "Warmup"레지스트리 값을 1로 설정하면 처음에는 추가 기능과의 첫 번째 사용자 상호 작용이 발생했을 때가 아니라 시작할 때 Excel에서 VSTO 런타임을로드하게됩니다 . 분명히 it was never implemented이며 이후 Microsoft 온라인 documentation of the registry entries for VSTO add-ins에서 삭제되었습니다.

추가 기능의 레지스트리 키에서 "Warmup"값을 제거하면 Excel의 열기/다른 이름으로 저장 대화 상자가 더 이상 동결되지 않으며 추가 기능 자체에서 SaveFileDialog.ShowDialog() 호출이 발생하지 않습니다. 왜 그런지 모르겠지만 분명히 "Warmup"값은 인 것 같습니다..

아무 것도하지 않는 더미 추가 기능으로 이것을 재현 할 수있었습니다. 해당 추가 기능이 HKCU\Software\Microsoft\Excel\Addins에 "Warmup"없이 등록 된 경우 DWORD이면 Excel은 정상적으로 작동합니다. DWORD1 값을 추가하자 마자 열기 또는 다른 이름으로 저장을 클릭하면 Excel이 멈추며 더미 추가 기능은 아무 것도 수행하지 않습니다.

사람들이 VSTO 추가 기능 설치 후 Office 응용 프로그램이 정지 된 이유를 궁금하게 여기는 경우 해당 코드를 디버깅하는 데 시간을 소비하는 대신 레지스트리에서 "Warmup"값을 제거하는 것이 좋습니다 (예 : "Warmup"에 대해 알아 내기 전에).

내 사용자의 의견은 긍정적입니다.