ASP.Net错误:“types'foo'存在于”temp1.dll“和”temp2.​​dll“

在运行Web应用程序项目时,看似随机的一个页面可能会失败,并出现CS0433错误:types存在于多个DLL中。 这些DLL都是生成的DLL驻留在“Temporary ASP.NET Files”目录中。

将batch =“false”属性添加到web.config文件的“编译”元素中。

出现此问题是因为ASP.NET 2.0使用应用程序引用和应用程序的文件夹结构编译应用程序的方式。 如果应用程序的web.config文件中元素的批处理属性设置为true,则ASP.NET 2.0会将应用程序中的每个文件夹编译为一个单独的程序集。

http://www.sellsbrothers.com/1995

http://support.microsoft.com/kb/919284

如果将.cs文件放在App_Code中,并将其构build操作更改为在Web应用程序项目中编译,则可能会发生这种情况。

要么将App_Code中的.cs文件的构build操作作为内容,要么将App_Code的名称更改为其他内容。 我更改了名称,因为intellisense不会修复标记为内容的.cs文件。

更多信息在http://vishaljoshi.blogspot.se/2009/07/appcode-folder-doesnt-work-with-web.html

造成这种错误的一个可能的原因是,在<@page language=......inherits=>一行中,有两个aspx页面在inherits=中具有相同的名称。

更改inherits= name可以解决错误。

以防万一别人分享我的问题,当试图发布一个新分支的项目的网站时,我得到了这个错误,构build工作完美。

事实certificate,我忘记了在发布设置 – >configuration预编译下删除“允许预编译的网站是可更新的”checkbox。

作为另一个数据点,我刚刚遇到了这个问题, 没有任何循环引用的证据,如本答案中的链接所述。 build立我的网站项目会失败,出现这些错误,并设置compilation batch="false"固定它,但我不想走这条路,因为这是一个大型的生产网站。

此解决scheme位于我映射到S:的D:\ svn文件夹的子文件夹中。 当我从S打开解决scheme时,发生了这些错误,但是如果我直接转到D:\ svn并打开解决scheme,则不会出错。

我也注意到,尽pipe在我的web.config中compilation batch="true" ,但是当从映射的S:驱动器打开解决scheme时,我所有的.ascx文件都被编译到它们自己的程序集中。 如果我从物理位置打开它,则.ascx文件将被编译到它们各自的文件夹的程序集(这就是batch="true"应该如何工作)。

奇怪。

在我的情况下,从解决scheme中的所有项目中删除bin文件夹中的所有输出集合解决了问题。 不幸的是我没有解释。

这个错误是由于Web表单的类名和wsdl存根之间的冲突(代码在文件.cs之后)具有相同的类名

ASPX页面:仪表板类:partiacl类仪表板

AppCode / APIServices.cs:公共部分类仪表板

错误只能在发布网站时重现,但构build和debugging不会通知任何错误。

在我的情况下,我已经重命名了一个项目,所以DLL也被重命名。 当我刚刚复制新的DLL,但没有想到从服务器上删除旧的,我很快就有一堆名称相同的类对。 删除过时的DLL正在做的(原因)的伎俩。

在我的情况下,当我编辑一个仍然具有重复的类名称的Designer.cs文件时,问题就解决了。 由于某种原因,当我将类“logout”重命名为“logout2”时,在devise器文件中它不会自动更改,并且仍然是“注销”,并且此类名已经存在于我的项目中的预编译dll到我与之共事的第三方networking应用程序)。

将一个aspx页面的一部分放入单独的用户控件时出现此问题。 在我的机器上一切都很好,在服务器上有一个错误。

重命名问题类和文件。

http://support.microsoft.com/kb/919284方法2:重新排列应用程序中的文件夹正在写关于可能的循环引用;

这些答案都没有为我工作,但我确实解决了这个问题。 由于我使用VS的发布function来部署Web应用程序,因此我select了在Publish Web向导中发布之前删除所有现有文件的选项。 这迫使应用程序的一个干净的副本,并从那里一切正常工作。

如果您的本地debugging副本正常工作,但发布的系统不正常,此解决scheme可能会有帮助 如果您不想花时间追踪个别dll删除,并且不介意首先删除的生产文件,这也是非常棒的。

这些解决scheme都不适合我。 我的两个冲突的DLL都在C:\ … \ AppData \ … \ Temporary ASP.NET Files \ …

问题是,我已经将我的源代码回滚回滚到较早的版本 – 在我们将一个types从一个项目移动到同一个解决scheme中的另一个项目之前。

我尝试从msbuild标识的“Temporary ASP.NET Files”位置中删除较新的DLL – 甚至根本不应该存在于较旧的代码库中。 msbuild只是把它放回去。

我也尝试了一些在这里已经成功使用的web.config设置,但是这也不起作用。 虽然,当我写这个,我意识到实际上有两个MVC项目在同一个解决scheme,都有错误,所以问题可能是,我没有添加设置两者。

我试着向前滚动我的源代码库,清理并再次回滚并清理。 没有。

我试图删除“临时ASP.NET文件”位置的一切。 msbuild只是把它放回去。

最后,我尝试在Visual Studio中重build。 尽pipe命令行输出和“错误”输出都给出了相同的msbuild“Temporary ASP.NET Files”错误,但当鼠标hover在冲突types上时,Intellisense错误实际上是在输出目录中抱怨DLL。 显然“清洁”和“重build”没有做好自己的工作。 我手动删除了由Intellisense识别的输出目录中的DLL,问题就解决了。

tl; dr – 确保使用批处理设置覆盖所有web.configs,并尝试利用Intellisense获取更多线索。

我的问题被链接到在我的项目文件夹中生成的.dll。

如果你正在引用另一个文件,而不是做你上面所看到的所有东西,我的问题立即解决了问题,只是删除了留在我的/ bin目录为我的项目的.dll。

问题不一定是web.config修复 – 这是一个需要解决的循环引用。 我意识到我清除了原始项目文件中的旧.dll文件,而不是在引用它的项目中。

我不build议对你的web.config文件进行修改,因为这只是一个创可贴的解决scheme,并不能真正解决实际问题。 这样做,如果你不想解决问题,但如果你想避免未来头痛,只需从两个地方删除.dll。

我在两个不同的项目中有一个同名的部分类。 我解决了它只留在一个项目。

有时可能有助于删除解决scheme并重新创build。 由于从VS2005转换为vs2010时会发生这种情况,因此在框架4.0(升级后)的一些引用仍然在解决scheme中,甚至所有项目都定义为3.5。

通常重build解决scheme应该清除这些问题。

我在编译服务器上编译应用程序时遇到同样的问题。

我的控制器有一个简单的静态代码,所以我改变了我的ascx:

  <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="controllerName.ascx.cs" Inherits="Controls.controllerName" %> 

  <%@ Control Language="C#" AutoEventWireup="true" Src="controllerName.ascx.cs" Inherits="Controls.controllerName" %> 

还从代码隐藏中删除了部分关键字,并向代码隐藏添加了一个名称空间。

这个:

 using System; using System.Web.UI; /// <summary> /// My controller /// </summary> public partial class controllerName: UserControl { protected void Page_Load(object sender, EventArgs e) { } } 

对此:

 using System; using System.Web.UI; namespace Controles { /// <summary> /// My controller /// </summary> public class controllerName : UserControl { protected void Page_Load(object sender, EventArgs e) { } } } 

这对我有效。

对于我来说,当我的预编译的Web /发布位置设置为当前的目录,这也是网站的根目录所在的位置。

然后我的网站在编译/构build时看到发布文件夹作为项目的一部分,然后以这种方式查找重复项。

即不要把你网站的发布/预编译版本放在你站点的代码文件夹中。

我在编译服务器上编译应用程序时遇到同样的问题。

我同意batch =“true”属性的方式,但错误是告诉在项目上下文中有2个程序集和对象。 解决scheme应该是删除其中一个已经过时在上面的情况下项目是asp.net,我认为框架2.0那里目标程序集应该在App_Code

如果DLL正在临时文件夹中显示,则应尝试清理解决scheme。

发布我的解决scheme:

这个问题与Mcafee Antivirus的“访问扫描”有关。 禁用这个解决了这个问题。 不知何故,当防病毒程序启动时,ASP Temporary文件夹没有被ASP正确使用。

希望这有助于某人。

导致App_Code文件夹的问题,把类放在文件夹外(工作正常)

App_Code文件夹不是为Web应用程序项目devise的

http://vishaljoshi.blogspot.in/2009/07/appcode-folder-doesnt-work-with-web.html

去添加引用和search这两个DLL,这两个DLL将检查,取消选中的DLL之一,因为有不同版本歧义得到生成相同的DLL的引用。

我的解决scheme是用.aspx文件中的CodeBehind =“…”replaceCodePage =“….”。 不知何故,它在从以前的.NET版本迁移过程中以CodePage的forms保留。 此页面指令创build与项目dll文件冲突的另一个dll文件。

这些解决scheme都没有为我工作。 编译在“释放”模式下工作,但是当我切换到“debugging”时,我得到了无数的这个错误信息。

我不明白为什么,但Visual Studio的简单重新启动是我的解决scheme。