7

我想寫一個Outlook插件在C#中使用Visual Studio 2010和WPF,它的結果是很難調試。我想在啓動時自動將VS附加到OUTLOOK.EXE,以便我可以輕鬆地打斷點。所以,我進入了項目的屬性>調試選項卡> Start Action,並將此設置從「啓動項目」(當然不會工作,因爲它是DLL)更改爲「啓動外部程序」。難以啓動VS 2010調試器附加到Outlook調試插件

這似乎工作; Outlook開始並清楚地顯示調試器已連接。但是,沒有斷點。我注意到,當我進入「Attach to Process」對話框時,它說Outlook僅運行x86(我認爲這是不正確的,因爲我的管理代碼正在該地址空間中運行 - 對嗎?),所以在Debug我點擊了「設置」面板「啓用非託管代碼調試」,現在我不知道了。我也不能暫停進程,因爲我得到一個錯誤,告訴我該進程沒有運行我選擇調試的代碼類型。我知道我的Addin無疑是加載並執行的,因爲我可以看到它的工作。

正如我一直在使用System.Diagnostics.Debugger.Launch(),這是惱人的解決方法,但它的作品。有任何想法嗎?

回答

4

所以事實證明,Outlook不會在啓動時加載CLR(它必須在有必要進行此後不久加載),這顯然混淆了與調試器,它會導致僅調試本地代碼。迫使它立即加載CLR,在同一個文件夾中創建一個文件OUTLOOK.EXE.config有:

<configuration> 
    <startup> 
     <supportedRuntime version="v2.0.50727"/> <!-- or whatever --> 
    </startup> 
</configuration> 

這是從this blog post。於是,即使當VS開始連接,將調試CLR代碼