问题重现
1.创建一个web site
2.夹添加一个Test.aspx,默认下,Test.aspx.cs中的类名为Test
3.在App_Code里添加Test.cs
编译网站,输出:
验证完成
========== 生成: 1 成功或最新,0 失败,0 被跳过 ==========
但错误列表列出一个警告:说两个Test类名有冲突.
3.发布网站.输出:
正在预编译网站
正在生成目录“/Test/App_Code/”。
正在生成目录“/Test/”。
预编译完成
------ 发布已启动: 项目: D:/.../Test/, 配置: Debug .NET ------
========== 生成: 1 成功或最新,0 失败,0 被跳过 ==========
========== 发布: 1 个成功,0 个失败,0 个跳过 ==========
4.打开IIS新建站点,主目录并指向刚才发布网站所在的目录,浏览Test.aspx
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误信息: CS0433: 类型“Test”同时存在于“c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/2c9ccf89/41852ec5/assembly/dl3/1ae83181/0026b251_00bcc701/App_Web_kcpoyyg4.DLL”和“c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/2c9ccf89/41852ec5/assembly/dl3/ca0bbcb1/00cc4f4f_00bcc701/App_Code.DLL”中
解决方法:
跟上一篇文章"遇到 asp.net 2.0 web site 站点发布问题(一)"中解决方法原理一样,修改类名字.
疑问:
为什么VS2005不把上面出现的错误在编译网站时直接列为错误呢,而只是列为警告,在网站发布以后又把报为错误...汗下M$,不知这是不是VS2005的BUG吗?
vs2005 中的web site 发布后,在站点的Bin目录下,出现了App_code.dll等很多个dll,如站点下有多个文件夹,并下都有aspx,这时Bin目录会更有多个dll,并且文件名是随机生成的.
用web deployment project小工具把站点生成只有一个dll,其下载地址google搜索,用法MSDN上也有详细描述.
接着上面第4点
5.选择站点,右键,添加web deployment project,指定DLL名字为Web_Deploy
6.生成Web_Deploy,错误列表列出
错误 1 “aspnet_merge.exe”已退出,代码为 1。
造成这个错误原因,也是上面所说的类名冲突.解决方法也是修改相应类名.
总结:
1.在开发程序时,注意类名的规范.命名空间_项目名_文件夹名_类名
2.组织好程序逻辑,避免警告,同时不要把VS2005列出的警告视而不见.