在运行Web应用程序项目时,可能会在看似随机的时间内失败并显示CS0433错误:类型存在于多个DLL中。这些DLL都是位于“Temporary ASP.NET Files”目录中的生成的DLL。
如果您将 .cs 文件放在 App_Code 中,并将它们的建立操作更改为 Web 应用程序项目中的编译,则可能会发生这种情况。
可以将 App_Code 中的 .cs 文件的建立操作设置为 Content,或者更改 App_Code 的名称。我更改了名称,因为智能感知无法修复标记为内容的 .cs 文件。
有关更多信息,请访问http://vishaljoshi.blogspot.se/2009/07/appcode-folder-doesnt-work-with-web.html
出现这个错误的一个可能原因是,有两个aspx页面在它们的<@page language=......inherits=>
行中具有相同的inherits=
名称。
更改inherits=
名称可以解决该错误。
如果有其他人也遇到了这个问题,在尝试发布一个新分支项目的Web网站时,构建工作正常,但是出现了以下错误:
结果发现我忘记在发布设置 -> 预编译配置下取消"允许预编译网站可更新"的复选框。
该错误是由于Web表单的类名与WSDL存根(后端.cs文件)具有相同的类名造成的,即
ASPX页面:仪表板 类:部分类仪表板
AppCode / APIServices.cs:public partial class Dashboard
只有在发布网站时才能重现错误,但构建和调试并未提示任何错误。
compilation batch="false"
设置后问题得到解决,但我不想采取这种方法,因为这是一个相对较大的生产网站。compilation batch="true"
,但在从映射的S:驱动器打开解决方案时,所有我的.ascx文件都被编译成它们自己的程序集。如果我从物理位置打开它,则.ascx文件将被编译到各自文件夹的程序集中(这是batch="true"
应该工作的方式)。在我的情况下,我重命名了项目,所以dll也被重命名。当我只是复制新的dll,但没有考虑从服务器删除旧的dll时,很快就会有许多具有相同名称的类对。删除过时的dll可以解决问题(当然要注意)。