Dot-Net

如何解決 VS2010 Windows 窗體設計器問題(無法載入基類)

  • October 14, 2011

使用繼承的 UserControls 時,我最近在 VS2010SP1 的 Windows 窗體設計器中遇到錯誤。

錯誤是

無法為此文件顯示設計器,因為無法設計其中的任何類。設計人員檢查了文件中的以下類: DebugPanel — 無法載入基類“UI.Panels.PanelBase”。確保已引用程序集並且已建構所有項目。

PanelBase 是一個 UserControl,它與 DebugPanel 在同一個類庫中定義,DebugPanel 還實現了一個介面 IPanel(它又在同一個類庫中定義)。IPanel 實現了在不同類庫中定義的介面 IBaseItem。

所以我們有

DebugPanel            (Library UI.Shared2)
- PanelBase           (Library UI.Shared2)
   - UserControl     (System.Windows.Forms - .NET4)
   - IPanel          (Library UI.Shared2)
       - IBaseItem   (Library Net.Common) 

PanelBase 可以正確設計,項目全部正確建構並且可以正常工作,但是當我嘗試設計任何繼承的控制項時,設計器會失敗。這不僅限於 DebugPanel 控制項,還包括從 PanelBase 繼承的任何控制項……我還看到了我使用的具有類似繼承層次結構的其他控制項的問題。

我一般可以通過清理庫UI.Shared2,關閉VS然後再次打開,重建解決方案並打開設計器來臨時解決問題。然後這將工作一段時間,然後再次開始失敗。

有沒有人有任何建議可以永久解決此問題而無需重新啟動 VS?

**編輯:**我的目標是包含所有庫的完整版 .NET 4。

我建議將您的基類放在一個單獨的項目中。正如您顯然知道的那樣,問題在於 VS 失去了一些詮釋資料,您可以通過退出和重建來找到它。如果基類位於單獨的項目中,則清理/重建更有可能使其恢復到最新狀態。

我遇到過同樣的問題。我有一個從中繼承的 Form 對象/基礎對象,突然之間,我看到所有從 Base 繼承的 Form 的消息。

我試圖回溯並弄清楚最近發生了什麼變化並記得我將我的項目平台目標從任何 CPU 設置為 x64。我將其改回任何 CPU 並解決了問題,然後將其再次設置回 x64 仍然可以解決問題。

順便說一句,這是在 VS 2013 上。

引用自:https://stackoverflow.com/questions/7765538