Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.Net错误:";类型';foo';存在于两者之中;temp1.dll“;及;temp2.dll“;_Asp.net - Fatal编程技术网

ASP.Net错误:";类型';foo';存在于两者之中;temp1.dll“;及;temp2.dll“;

ASP.Net错误:";类型';foo';存在于两者之中;temp1.dll“;及;temp2.dll“;,asp.net,Asp.net,运行web应用程序项目时,页面可能会在看似随机的时间失败,并出现CS0433错误:类型存在于多个DLL中。DLL都是在“临时ASP.NET文件”目录中生成的DLL。将batch=“false”属性添加到web.config文件的“compilation”元素中 出现此问题的原因是ASP.NET 2.0使用应用程序引用和应用程序文件夹结构编译应用程序的方式。如果应用程序的web.config文件中元素的batch属性设置为true,则ASP.NET 2.0会将应用程序中的每个文件夹编译为单独的程序

运行web应用程序项目时,页面可能会在看似随机的时间失败,并出现CS0433错误:类型存在于多个DLL中。DLL都是在“临时ASP.NET文件”目录中生成的DLL。

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

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


作为另一个数据点,我只是遇到了这个问题,没有任何证据表明Ben回答中的链接中描述了循环引用。构建我的网站项目会失败,出现一些错误,设置
compilation batch=“false”
可以修复这些错误,但我不想走这条路,因为这是一个大型生产网站

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

我还注意到,尽管在我的web.config中有
compilation batch=“true”
,但当从映射的S:drive打开解决方案时,所有的.ascx文件都被编译到它们自己的程序集中。如果我从物理位置打开它,.ascx文件将编译到各自文件夹的程序集中(这就是
batch=“true”
的工作原理)


奇怪。

此错误是由于web表单的类名与具有相同类名的wsdl存根(code-behind file.cs)之间存在冲突,即

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

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


错误仅在发布网站时才可重现,但生成和调试没有通知任何错误。

在我的例子中,当我编辑一个仍然具有重复类名的Designer.cs文件时,问题得到了解决。出于某种原因,当我将类“logout”重命名为“logout2”时,在设计器文件中它没有自动更改,仍然是“logout”,并且该类名已经存在于我的项目中的预编译dll中(该类名属于我使用和开发的第三方web应用程序).

此错误的一个可能原因是,
行中有两个aspx页面在其
继承=
中具有相同的名称


更改
inherits=
名称可以解决此错误。

将aspx页面的一部分放入单独的用户控件时遇到此问题。在我的机器上一切正常,在服务器上出错

重命名了问题类和文件。


方法2:对应用程序中的文件夹重新排序正在编写可能的循环引用

在我的例子中,我重命名了一个项目,因此dll也被重命名。当我只是复制了新的dll,但没有考虑从服务器上删除旧的dll时,我很快就有了一堆同名的类对。删除过时的dll是一个好办法(当然)。

有时删除解决方案并重新创建它可能会有所帮助。 由于从VS2005转换到vs2010时会发生这种情况,因此解决方案中保留了对framework 4.0的一些引用(升级后),甚至所有项目都定义为3.5


通常,重建解决方案会清除这些问题。

在我的例子中,从解决方案中所有项目的bin文件夹中删除所有输出程序集解决了问题。不幸的是,我对此没有任何解释。

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

我的控制器有一个简单的静态代码,因此我更改了我的ascx:

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


还从codebehind中删除了partial关键字,并在codebehind中添加了名称空间

这:

使用系统;
使用System.Web.UI;
/// 
///我的控制器
/// 
公共部分类控制器名称:UserControl
{
受保护的无效页面加载(对象发送方、事件参数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)
        {
        }
    }
}
使用系统;
使用System.Web.UI;
命名空间控件
{
/// 
///我的控制器
/// 
公共类控制器名称:UserControl
{
受保护的无效页面加载(对象发送方、事件参数e)
{
}
}
}

这对我很有效。

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

将App_代码中的.cs文件的生成操作作为内容,或者将App_代码的名称更改为其他名称。我更改了名称,因为intellisense不会修复标记为内容的.cs文件


更多信息请访问

对于我来说,这是在我将预编译的Web/Publish位置设置为当前目录时发生的,该目录也是网站的根文件夹所在的目录

我的网站在编译/构建并以这种方式查找副本时,将发布文件夹视为项目的一部分


i、 e.不要将站点的已发布/预编译版本放在站点的代码文件夹中。

我在编译时遇到了这个问题

我同意batch=“true”属性,错误是告诉存在2个程序集

解决方案1:删除其中一个


解决方案2:配置其中一个

这些答案对我都不起作用,但我确实解决了问题。由于我使用VS的发布功能部署web应用程序,因此在发布web向导中选择了在发布之前删除所有现有文件的选项。这迫使应用程序有一个干净的副本,并且从一开始一切都很正常
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)
        {
        }
    }
}