出現這種錯誤大概有三種情況:
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、我就是遇見得這種情況:控件得名字和引用控件得頁面取了一模一樣得名字,雖然在編譯得時候沒有錯誤,但是發布得時候會提示。
出現這種錯誤大概有三種情況:
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的開發團隊能修正此問題,並在日後減少類似的疏失。