一直好好的Asp.Net项目,晚上突然出现这个问题,于是搜索了一下,看到有人给出了比较好的解决办法:
http://www.cnblogs.com/chinhr/archive/2008/08/08/1263508.html
出现这种错误大概有三种情况:
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://skyd.cnblogs.com/