2012-06-12 30 views
2

我想我在Visual Studio中發現了一個可重現的錯誤。當我嘗試在項目中添加「TestControl」時,Visual Studio就會崩潰。Visual Studio中的可複製錯誤

也許這是我的錯,我做錯了什麼。所有我做的是建立,控制添加到窗體:

VSCrash

這裏的項目(11KB):https://www.dropbox.com/s/dk62j347zmwbll8/VisualStudioCrash.zip

我沒有任何包含二進制文件。如果你想測試它,建立它並在表單中添加「TestControl」。如果你以某種方式管理,點擊控制,然後看看它是否崩潰。

感謝您的幫助。

+0

我也崩潰了 – Blorgbeard

+1

「...它仍然崩潰」你是否在修正後成功地重建了項目?如果不是,Visual Studio可能仍然使用程序集的舊版本。 – Joe

+0

@Joe Yup,就是這樣。我將刪除編輯,因爲這是我的錯誤。 – David

回答

11

的原因是相當明顯的:

public string Description 
{ 
    get 
    { 
     return Description; 
    } 
    set 
    { 
     // lblDescription.Text = value; 
    } 
} 

你正在做的get訪問的Description財產遞歸調用。將控件放置在設計器上時,Visual Studio將陷入無限循環。

+0

啊,好的。謝謝:) – David

+1

這不會最終拋出堆棧溢出嗎?無論如何,它很容易完成:) - 有時會導致一個'難以察覺'的錯誤,因爲只有當某些東西試圖評估屬性時才執行訪問器 - 即使調試器可能導致它崩潰。保持你的眼睛去皮! – Charleh

+0

@Charleh我猜Visual Studio並不像應該那樣健壯。我從經驗中知道,它將優雅地處理控件構造函數中發生的異常,或者在繪製控件時發生的異常...但是我想它在讀取屬性時不會這樣做。 –