控件的設計時行為 (屬性編輯器、設計器動作、智能標籤、Toolbox 圖示、序列化代碼生成) 運行在 **Visual Studio 設計器進程** 中,而非獨立 EXE。DLL 無法直接啟動調試,必須附加到宿主進程 —— 即 **devenv.exe**。
方案總管右鍵控件庫專案 → **設為啟動項目** (Set as StartUp Project)。
專案屬性 (Properties) → **Debug** 頁籤 → **Start Action** 選 **Start external program** → 瀏覽選擇 devenv.exe:
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe (VS 2022)C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe
UITypeEditor.EditValue、TypeConverter.ConvertTo、DesignerActionList 方法、ControlDesigner 重寫方法)。ToolboxBitmapAttribute 或自定義 IToolboxItem 中,同樣在設計器進程運行,上述方法可調試。CodeDomSerializer)Serialize/Deserialize 方法,操作設計器屬性網格、刪除/復制控件、切換視圖 (設計/源碼) 均可觸發。/RootSuffix Exp 參數啟動獨立配置的實驗性實例,避免污染主開發環境。調試啟動參數可加 /RootSuffix Exp。
System.Diagnostics.Debug.WriteLine("設計時調試: " + someValue);
// 或
System.Diagnostics.Trace.WriteLine(...); // 需配置 trace listener
在調試器 VS 的「輸出」視窗查看,不中斷執行流。
| 問題 | 原因與解決 |
|---|---|
| F5 後彈出的 VS 無法載入專案 / 控件不在工具箱 | 確保測試專案引用的是**專案引用**而非舊 DLL;工具箱右鍵「選擇項目」手動添加;重置工具箱 (右鍵→重置)。 |
| 斷點從未命中 (變成空心圓圈) | PDB 文件未加載:模組視窗 (Debug→Windows→Modules) 檢查符號狀態;清理 bin/obj 重新生成;確保配置為 Debug 模式。 |
| 調試器 VS 卡死 / 第二個 VS 無響應 | 設計時死循環或阻塞調用 (如同步等待 UI 執行緒);檢查代碼邏輯,避免在設計器線程做耗時操作。 |
| 無法找到 devenv.exe | 路徑隨 VS 版本/安裝位置變化;用「開始菜單」右鍵 VS 圖標→「打開文件位置」→ 屬性查看真實路徑。 |
包含所有示例控件、編輯器、類型轉換器、設計器代碼,可直接編譯運行調試。
下載地址:https://www.bianceng.net/dotnet/201212/783.htm
devenv.exe。