天天看點

也談Asp.Net編譯錯誤CS0433 類型XXX同時存在于…

 一直好好的Asp.Net項目,晚上突然出現這個問題,于是搜尋了一下,看到有人給出了比較好的解決辦法:

<a href="http://www.cnblogs.com/chinhr/archive/2008/08/08/1263508.html" target="_blank">http://www.cnblogs.com/chinhr/archive/2008/08/08/1263508.html</a>

出現這種錯誤大概有三種情況: 1、ASPX頁面,一個*.ASPX,對應着一個*.cs檔案,兩者其實是一個檔案,通過兩者實作代碼分離,每個*.aspx頁面都引用着自身的CS檔案:如果兩個頁面引用了相同得.CS檔案,在釋出得時候也會出現這種錯誤。 2、估計是在Bin裡面還有一個老版本的DLL,而新版的DLL名字換掉了,新的覆寫不掉老的,并存在BIN裡時,有可能會發生這種情況. 解決方案:把BIN裡的手動删掉,C:\WINDOWS\Microsoft.NET\Framework\版本号\Temporary   ASP.NET   Files的臨時檔案裡,把相應的目錄都删掉,然後重新編譯運作就OK.記着bin目錄下元件一定要手動删除 3、我就是遇見得這種情況:控件得名字和引用控件得頁面取了一模一樣得名字,雖然在編譯得時候沒有錯誤,但是釋出得時候會提示。

以及一個補充說明:

如果你的使用者控件名字不一樣,但是Control指令中的ClassName屬性的值一樣也會出現上面的錯誤

我的項目一下午都在修繕、調試,是以我很清楚我的項目裡沒有重複類引用。

并且我這個狀況很離奇:它一直報關于一個使用者控件的同時存在錯誤,然而某次重試時卻編譯成功,而後沒轉幾個頁面,又報另一個使用者控件同時存在錯誤,在這之後又重新無法編譯成功,繼續報最初那個使用者控件的錯誤。

我覺得這個報錯純屬胡來,是以我認定是Visual Studio内部錯誤導緻,是以嘗試了清理緩存、清理Bin、清理Obj、VS裡的清理、重編譯指令,乃至重新啟動電腦,全都不行,前後折騰了得小一個鐘頭,已是怒不可遏。

然後我決定找出下午備份的版本來測試,一次成功,于是就把錯誤鎖定在兩個版本間的差異上了。

我想起我曾在此期間通過“添加現有項”從其他網站項目中添加了一個ashx,于是仔細檢查此檔案,發現其cs檔案中的命名空間已改為我的項目預設命名空間,但是其ashx檔案中卻沒有更改,還保留着原來項目的命名空間(ashx檔案中隻有一個頭部聲明,是以在VS裡輕按兩下ashx檔案是直接打開其cs檔案,導緻容易忽略這個檔案)。

将其修正後,編譯錯誤CS0433終于不再出現了。

這雖然是個人的小失誤造成的問題,但是Asp.Net的錯誤提示卻跟瘋狗似的亂咬一通,嚴重誤導、幹擾開發者解決問題,希望Asp.Net的開發團隊能修正此問題,并在日後減少類似的疏失。

本文轉自斯克迪亞部落格園部落格,原文連結:http://www.cnblogs.com/SkyD/archive/2009/08/13/1544829.html,如需轉載請自行聯系原作者

繼續閱讀