错误:两个目录中都存在该类型

时间:2011-03-24 21:17:00

标签: asp.net asp.net-mvc

在MVC2项目中,我将文件从App_code移动到Content文件夹并进行编译。然后再将其移回App_Code,然后将其Build Action更改为“Compile”。现在我收到此错误,我不知道如何修复此问题以使我的程序再次运行:

  

CS0433:“Helper”类型存在于   都   “C:\用户\应用程序数据\本地的\ Temp \临时   ASP.NET   文件\ ROOT \ b00d4b7d \ b2553f9c \ App_Code.zowyklar.dll”   和   “C:\用户\应用程序数据\本地的\ Temp \临时   ASP.NET   文件\根\ b00d4b7d \ b2553f9c \组件\ DL3 \ 5c6d3537 \ 19f85663_cde9cb01 \ MyProject.DLL'

清洁和重建并不能解决问题。

19 个答案:

答案 0 :(得分:34)

这已在另一个问题中得到解答,并为我解决了问题。一定要对原始人的答案进行投票。

ASP.Net error: "The type 'foo' exists in both "temp1.dll" and "temp2.dll"

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

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

http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1995

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

答案 1 :(得分:20)

假设你正在构建一个Web应用程序,看起来你得到了MVC2点,你就不应该使用App_Code文件夹。它不是为与Web应用程序项目集成而设计的。

  

在Visual Studio中编译时,应用程序中的所有代码   (包括在 App_Code 中)被编译成程序集。当你跑步   你的应用程序,asp.net知道"特殊"文件夹叫    App_Code 并将其内容编译为具有唯一的程序集   名称。因此,无论何时运行项目,您都会遇到此问题。

解决方案:

  

App_Code 文件夹重命名为" Code"或者"全球"   (并更新你现在已经破坏的参考资料)&瞧,问题解决了。

答案 2 :(得分:9)

简单解决方案100%为我工作

将课程放在App_Code文件夹

之外

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

答案 3 :(得分:9)

我的问题是使用不同版本的DevExpress。
删除 bin obj 文件夹中的所有内容后,我的网站再次运行...

参考: https://www.devexpress.com/Support/Center/Question/Details/KA18674

答案 4 :(得分:8)

尝试清理解决方案,然后尝试重建。 Visual Studio在创建新dll之后可能仍然引用了旧的dll。

答案 5 :(得分:6)

我有同样的错误: 类型'MyCustomDerivedFactory'存在于和 我的ServiceHost和ServiceHostFactory派生类在我的WCF服务项目的App_Code文件夹中。添加

<configuration>
  <system.web>
    <compilation batch="false" />
  </system.web>
<configuration>

没有解决错误,但在单独的类库项目中移动我的ServiceHost和ServiceHostFactory派生类就做到了。

答案 6 :(得分:5)

尝试这一个!

通常,当这发生在本地时,我清理所有的aspnet临时文件夹。但最近,当我在Azure上发布我的网站时,它一直在讨厌。所以&#34;清洁临时aspnet文件夹&#34;不是解决方案。

在互联网上搜索后,我成立了这个:

Clear Temp ASP.NET files from Azure Web Site

对我有用!

答案 7 :(得分:1)

如果您正在将ASP.NET 2.0网站迁移到.NET Web APP 4.5,那么您也可以遇到这个问题。并将batch = false,添加命名空间等...无法正常工作。

解决方法是将旧的App_Code文件夹(或任何有问题的文件夹)重命名为Old_App_Code(就像自动进程一样)或任何其他名称。

答案 8 :(得分:1)

我的一个项目遇到了同样的问题。结果从我处理母版页开始问题。

如果两个页面“继承”同一页面,也会出现问题。

我的“LoginMaster.Master”顶部有以下代码行&amp; “MasterPage.Master”

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MainMaster.master.cs" Inherits="Master_Pages_Header" %>

我将“LoginMaster.Master”上的Inherits更改为:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="LoginMaster.master.cs" Inherits="Master_Pages_LoginMaster" %>

我立即能够在没有任何问题的情况下发布我的项目。希望这适用于其他人。我为没有使用正确的条款而道歉。

您还需要更改.cs中的类以匹配Inherits名称。如果不这样做会导致错误。

IE:

public partial class Master_Pages_LoginMaster : System.Web.UI.MasterPage

答案 9 :(得分:1)

您的解决方案/项目中可能有两个同名“Helper”的类。更改其中一个的名称,然后重建

答案 10 :(得分:0)

在Web应用程序(非网站)中,我将App_Code * .cs Build Action(文件属性)从编译更改为内容。然后问题解决了。

答案 11 :(得分:0)

在我的情况下,我必须在项目中使用相同名称但扩展名不同的项目。一个是accountRep.aspx,另一个是由Crystal Report制作的accountRep.rpt。将accountRep.rpt更改为accountReport.rpt

时问题解决了

答案 12 :(得分:0)

另一个对我有用的潜在解决方案是改变

的所有引用
CodeFile="~/..."

CodeBehind="~/..."
所有.master和.aspx页面中的

将旧网站转换为带有解决方案文件的正确Web应用程序时会发生这种情况。

我在其他任何地方都没有找到这些信息,所以希望这可以帮助别人。

答案 13 :(得分:0)

App_Code文件夹不打算与MVC项目(WAP)一起使用。

App_Code文件夹中的文件会作为特殊dll的一部分自动编译。如果文件上的Build Action属性设置为Compile,则同一个类也将作为主dll的一部分进行编译,最终将得到两个副本。

将Build Action属性设置为None可确保项目中只有该类的一个副本。构建时,编译器不会捕获App_Code文件夹中的任何错误,但Intellisense仍将验证代码,但编译时错误不会显示,直到它即时编译。

建议的解决方案是将代码放在普通文件夹中,并确保将Build Action设置为Compile。

答案 14 :(得分:0)

我通过在Visual Studio中检查Delete all existing files prior to publish来修复此问题:

enter image description here

答案 15 :(得分:0)

在我的情况下,当我错误地将一个类命名为与其继承的类相同的类时,会出现此错误。

答案 16 :(得分:0)

我几乎尝试了此页面上的所有建议,但是不得不从我的机器上完全删除Visual Studio 2017。我重新安装了最新版本(2019),并且神奇地工作了。我希望这对以后的人有所帮助。

答案 17 :(得分:0)

我通过删除导致此冲突的dll文件中引用的不必要的NuGet打包之一来解决此问题。

因此,在这种情况下,我同时安装了ZXing.Net和ZXing.Net.Mobile。由于我是在Xamarin Forms中创建移动应用程序的,因此删除ZXing.Net NuGet软件包可以解决此问题。

请务必检查并确保没有针对不同框架(即ASP.Net与Xamarin)的多余NuGet软件包。

答案 18 :(得分:0)

尝试更改文件夹名称

  • 来自APP_CODE
  • CODE

这解决了我的问题。

或者,您可以将所有代码文件移至另一个文件夹。