问题提出,昨天,我用vs 2010编写了一个网站,在vs中运行没有问题,发布到IIS目录下就出现了以下错误。
编译器错误消息:
CS0433: 类型“_Default”同时存在于“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\35b98231\6f7a515\assembly\dl3\445ef5a9\b64a6011_6c17cc01\App_Web_vsjqyqxl.DLL”和“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\35b98231\6f7a515\assembly\dl3\72192a74\4a109d0f_6c17cc01\App_Web_alcqbu3t.DLL”中
搞了半天,上网查资料,看MSDN,MSDN上说
类型 TypeName1 同时存在于 TypeName2 和 TypeName3 中。
在应用程序中引用的两个不同的程序集包含相同的命名空间和类型,这会产生混乱。
若要解决此错误,请使用
/reference(C# 编译器选项)
编译器选项的别名功能,或者不引用您的程序集。
解决方法:
原来在vs中建立一个网页的时候,会生成一个与aspx同名的CS文件,名称并与aspx保持一致。在CS文件中自动创建一个同名的类,如_Default.aspx 会在cs 文件中自动创建一个_Defautl类,如 public partial class _Default: System.Web.UI.MasterPage 。
而程序中使用的了创建强类型数据集的名称也是_Default ,这样又自动创建了一个public partial class _Default : global::System.Data.DataSet 类,
这样在编译的时候,两个不同的程序集包含相同的命名空间和类型,都在Class _Default 了,在调用的时候,应用程序不知调用哪个了。
解决方法:1、在vs 2010中 在文件中查找 class _Default ,选择各个解决方案。
2、找到后把 _Default .cs 或是母版页或是用户控件的Cs文件中的类名改为其它,比如_DeufaultXX,然后在相应的前台文件中Inherits="_DefaultXX"。最好是在cs文件中,利用预览视图状态下修改类名,(点击修改的类名,然后点红线,带预览重命名),就自动在前台文件的inherits属性了。