问题提出,昨天,我用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属性了。