ASP.NET Compliler错误类型存在于两个动态编译的DLL中

时间:2010-06-22 00:32:22

标签: asp.net

我刚刚通过一个大型项目,并重命名了很多命名空间指令。在我的开发人员盒子上一切正常 - 将它部署到舞台上我得到:

Compiler Error Message: CS0433: The type 'ASP.usercontrols_pageheader_ascx' exists in both 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\89252a5f\7305b927\App_Web_hodsbmv3.dll' and ' c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\89252a5f\7305b927\App_Web_pageheader.ascx.6bb32623.bs4iljip.dll'

呸。与此非常相似:Deployment Project dlls cause ‘type x exists in both’ errors,但必须来自不同的原因。

我没有看到其他文章中提到的问题(App_Code / CodeFile指令)。弄清楚它在我的机器上运行的原因:当它在vdir中时,网站没有问题。如果我从主页上删除“PageHeader”用户控件,那么它就可以正常运行。 如果我重命名“PageHeader”一切都很好。更新:重命名usercontrol无济于事。

我看过反射器中错误中提到的组件; App_Web_hodsbmv3.dll包含项目中所有用户控件的动态类。 \App_Web_pageheader.ascx.6bb32623.bs4iljip.dll'包含仅适用于PageHeader usercontrol的相同代码。为什么ASPX决定在两个程序集中创建相同的类?

2 个答案:

答案 0 :(得分:0)

您使用的是网络部署项目吗?

尝试删除此应用程序的asp.net临时目录(位于此处:C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ yourappname)。在删除目录之前,您必须停止此站点的应用程序池。

尝试将所有输出合并到一个程序集中以查看它是否有任何区别。

.. ..更新

“使用带有w选项的Aspnet_merge.exe合并为所有Web UI内容文件创建单个程序集。” http://msdn.microsoft.com/en-us/library/bb397866.aspx

答案 1 :(得分:0)

获胜的答案将转到此论坛帖子:Publish web site: TYPE exists in both temporary ASP.NET assemblies

  

如果您收到此错误,请查看Web用户控件和Web表单中的所有指令属性和代码隐藏类名称。

因为我改变了项目中的所有命名空间,我在asmx中拙劣。我在ASMX中有一个Inherits与后面的代码中的类不匹配。不知何故,这导致compilation batching一些(并非所有)用户控件放入他们自己的临时程序集和组装配中。