2017-02-10 79 views
4

我爲Autodesk Revit編寫.net插件。 Revit是非託管應用程序。因此,對於成功調試,我將Use managed compatibility mode選項或Enable native code debugging選項(或兩者)設置爲ON。否則,調試無法啓動。`使用託管兼容模式`或`啓用本地代碼調試?

第一個適用於所有項目。其中第二個單獨用於每個項目。

enter image description here

什麼的這些選項有什麼區別?我不明白他們做了什麼。在我的情況下,更正確地使用什麼選項?

+0

我不能夠感謝你。您的屏幕截圖爲我節省了至少3個額外的工作日,我不得不花費一些時間來調試某些動態加載的程序集,這種方式比JavaScript的'window.alert'調試方法更糟糕。 – RBT

回答

7

您不必啓用非託管調試來調試您的插件。當主機應用程序加載加載項時,將激活代碼中的斷點(從空洞轉爲實心)。如果您不確定是否發生這種情況,請查看Debug> Windows> Modules窗口。

啓用非託管調試不會對調試會話產生很大影響,但它可能需要相當長的時間才能開始,並且您可能需要暫時禁用符號服務器以避免受到干擾。

工具>選項設置有相當差的名稱。微軟一直致力於新的調試引擎,但被迫(或選擇)放棄某些功能。 「使用託管兼容模式」強制加載舊版本的託管調試器,這是VS2010中使用的版本。當您調試C++/CLI代碼時,它是必需的。它在VS2015中也很有用,它的託管調試引擎非常麻煩。您將錯過一些新的調試功能,如返回值檢測和64位編輯+繼續。您不需要它來調試您的加載項。

與「使用本機兼容模式」大致相同的故事,它啓用了VS2012 afaik中的非託管調試引擎的老版本。你會錯過新的Natvis展示器。我還沒有找到需要它的令人信服的理由,除了保持舊的可視化工作。

+0

您的建議可以在我的辦公室計算機上正常工作:我只使用「使用託管兼容模式」選項,調試工作正常。但是在我的家用電腦上,調試只在兩個選項都打開的情況下才起作用。這裏是視頻:https://www.youtube.com/watch?v=E8n-KjyQ-uw&feature=youtu.be –