在预编译的ASP.NET 2.0站点上编译错误CS0433

时间:2009-01-13 20:31:39

标签: c# asp.net compiler-construction asp.net-2.0 telerik

当我启动调试器来调试我的网站时,我经常会遇到此错误。我正在使用Telerik控件,通常错误在我的标签条中。以下是我正在查看的错误示例:

Compiler Error Message: CS0433: The type 'ASP.controls_motorvehiclegeneral_ascx' exists in both 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_6wlqh1iy.dll' and 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_ro_sgchs.dll'

Source Error:

Line 48:     </telerik:RadTabStrip>
Line 49:     <telerik:RadMultiPage ID="RadMultiPageControls" Runat="server" SelectedIndex="0">
Line 50:     <telerik:RadPageView ID="PageGeneral" runat="server"><uc1:General ID="GeneralControl" runat="server" /></telerik:RadPageView>
Line 51:     <telerik:RadPageView ID="PageVehicle" runat="server"><uc1:VehicleList ID="VehicleList" runat="server" /></telerik:RadPageView>
Line 52:     <telerik:RadPageView ID="PagePerson" runat="server"><uc1:PersonList ID="PersonList" runat="server" /></telerik:RadPageView>

最困扰我的是,如果我只是继续按F5,页面将刷新并按预期工作。有时需要多次刷新才能完成此操作,有些则需要很快才能完成。我无法在网上找到解决方案,因为大多数有此错误的人正在从VS2005升级到Web应用程序,因此修复似乎是“删除您的app_code目录,并将CodeFile =更改为CodeBehind =但是,CodeBehind已经过时了,不再使用了。

在这种情况下,我在“常规”选项卡上收到错误,但是当它发生时,可能会发生任何用户控件。

有没有其他人用预编译的页面看过这个?我正在使用VS2008 SP1。

我看到的与此相关的另一个影响是当我有一个带有数据源的GridView设置,并且数据源发生了变化,但是在几个其他操作之前页面不会更新,然后所有数据都被填充...这让我觉得存在某种缓存问题,或编译时,超时或其他......

我正在使用site.master页面,并检查了@Page和@Master指令...仅仅为了参数,这里是它正在使用的编译器选项......

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE> "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe" /t:library /utf8output /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\assembly\dl3\6614ff9a\005164fc_423cc801\PetersDatePackage.DLL" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.IdentityModel\3.0.0.0__b77a5c561934e089\System.IdentityModel.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.Common\9.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.Common.dll" /R:"C:\WINDOWS\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_0-em44qa.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_6wlqh1iy.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_ro_sgchs.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\Microsoft.Build.Utilities\2.0.0.0__b03f5f7f11d50a3a\Microsoft.Build.Utilities.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\assembly\dl3\6fe979bb\0056bc44_4b94c701\Microsoft.Practices.EnterpriseLibrary.Common.DLL" /R:"C:\WINDOWS\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\assembly\dl3\ad70f8ed\0010f920_4b94c701\Microsoft.Practices.EnterpriseLibrary.Data.DLL" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel.Web\3.5.0.0__31bf3856ad364e35\System.ServiceModel.Web.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\assembly\dl3\d61e8194\009ae0bd_854ec901\Telerik.Web.UI.DLL" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\assembly\dl3\98ba2ae7\211fb135_e674c901\CoreAPI.DLL" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Web.Extensions\1.0.61025.0__31bf3856ad364e35\System.Web.Extensions.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Management\2.0.0.0__b03f5f7f11d50a3a\System.Management.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\assembly\dl3\62fa267e\9888875e_bb5cc901\AjaxControlToolkit.DLL" /R:"C:\WINDOWS\assembly\GAC_MSIL\Microsoft.Build.Framework\2.0.0.0__b03f5f7f11d50a3a\Microsoft.Build.Framework.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Code.nufffrfb.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Web.Services\2.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\assembly\dl3\52f6447d\f90fd1c8_b475c901\StatisticsAPI.DLL" /R:"C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\assembly\dl3\955f38e7\982cdc0f_bc5cc901\Validators.DLL" /R:"C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\9.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Runtime.Serialization\3.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_nv7t8gs_.dll" /R:"C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Design\2.0.0.0__b03f5f7f11d50a3a\System.Design.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.WorkflowServices\3.5.0.0__31bf3856ad364e35\System.WorkflowServices.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Web.Mobile\2.0.0.0__b03f5f7f11d50a3a\System.Web.Mobile.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\assembly\dl3\a5daf5e0\0071b5e7_909cc701\Microsoft.Practices.ObjectBuilder.DLL" /R:"C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel\9.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.ProcessingObjectModel.dll" /R:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_atcckswk.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll" /out:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_zva2jsmk.dll" /D:DEBUG /debug+ /optimize- /win32res:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\zva2jsmk.res" /nowarn:1659;1699;1701 /d:DBCONVERTPUBLIC;CRYSTALSUPPORT  "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_zva2jsmk.0.cs" "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_zva2jsmk.1.cs" "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\statisticsweb\30c716d3\eebad209\App_Web_zva2jsmk.2.cs"

任何人都有任何想法,我甚至可以开始看?

10 个答案:

答案 0 :(得分:7)

如上所述杀死Cassini实例并不适用于我。 ScottGu posted about this issue

在web.config的编译部分设置batch =“false”属性对我有用。

<configuration>

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

</configuration>
  

这会动态地告诉ASP.NET   编译单个.aspx / .ascx文件   分成单独的组件。这避免了   循环参考问题   触发异常。

答案 1 :(得分:1)

对我来说,关闭IDE,关闭网站(IIS或Cassini),删除所有临时asp.net文件,启动IDE并进行完整编译都可以解决问题。

答案 2 :(得分:1)

在IIS中,您需要通过打开命令提示符并键入iisreset然后按Enter键重新启动它,但是如果您在Visual Studio Web服务器(Cassini)中使用构建,那么这不会解决您的问题。您可以通过键入(因为它区分大小写)来终止所有正在运行的Cassini实例:taskkill /f /im "WebDev.WebServer.exe"并按Enter键。然后,您将看到以下消息:SUCCESS: The Process "WebDev.WebServer.EXE" with PID <some #> has been terminated.

答案 3 :(得分:1)

如果您有VS2008和WEB应用程序(不是WEB站点),您不能拥有名为App_Code的目录(您必须从中移除所有文件,将其移至根文件夹)并从项目文件夹中删除/排除( App_Code文件)。 App_Code中的每个文件都将在DEBUG / Publish期间编译。 - 这解决了CS0433的问题。

答案 4 :(得分:1)

我最近解决了这个错误。原因是因为在项目中有一些文件或类被声明多次。就我而言,

error CS0433: The type 'usercontrol_ucManageNews' exists in both 
'c:\Users\DangLe\AppData\Local\Temp\Temporary ASP.NET Files\working\ed64f624\95e2038d\App_Web_kc2c2twy.dll' and 'c:\Users\DangLe\AppData\Local\Temp\Temporary ASP.NET Files\working\ed64f624\95e2038d\App_Web_0ywfoitp.dll'

因为在我的项目中有两个文件夹包含文件ucManageNews.ascx

答案 5 :(得分:0)

原因可能是您引用的某些其他DLL可能正在引用指定程序集的旧版本/更新版本。因此应用程序的不同部分引用了不同版本的程序集。我遇到了这样的问题。为了解决这个问题,我强迫应用程序使用新版本:

我将web.config中的所有引用更改为指向较新版本。在我的情况下,导致问题的是System.Web.Extensions程序集。 我将所有这些内容从1.0.60125.0更改为3.5.0.0

接下来,我将这些行添加到我的web.config ,它基本上告诉您的应用程序将所有对旧版程序集的引用“转发”到新版本:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="bin;sitefinity\admin\bin" />
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Telerik.Security" publicKeyToken="dfeaee0e3978ac79" />
        <bindingRedirect oldVersion="3.2.1598.2" newVersion="3.5.1747.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Telerik.Cms.Web.UI" publicKeyToken="dfeaee0e3978ac79" />
        <bindingRedirect oldVersion="3.2.1598.2" newVersion="3.5.1747.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Telerik.Web.UI" publicKeyToken="121fae78165ba3d4" />
        <bindingRedirect oldVersion="2008.1.515.20" newVersion="2008.2.1001.20" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

我没有提出这个解决方案,但发现它在某个我不记得的地方。但是,我认为我从来没有看到过为什么会发生这种情况的解释!

答案 6 :(得分:0)

要修复这个错误,它很简单,但需要一些很少使用的声明(困难的部分是通过正确的文档挖掘;)。

参见 ECMA-334 ,部分, 16.3 外部别名指令

如果您控制“您的”源并链接到另一个程序集“他们的”二进制文件,但您无法更改(或不希望太多更改:)命名空间/类型说明符(例如 BOTH 你声明系统)。实际上我最近遇到了相当多的事情,对CLR / DLR进行了所有Beta / Alpha /版本的更新,MS在他们发布的命名空间中进行了大量的翻译。

导入程序集“its”时,编译器通常会将其设置为全局(保留)命名空间。在MSVC中,您转到汇编参考的属性,转到它所说的“别名”,然后您可以指定一个新名称​​其他而不是全局。或者实际上有几个名字。

假设您使用富有想象力的名称“ global2 ”。

然后转到源文件,然后在 TOP 之前任何命名空间声明,放置;

extern alias global2;
using global2::System;

您的代码可以使用global2中的类型,如“Int32”或其中任何一种,您仍然可以通过它重命名;

extern alias global2;
using global2::System;
using orig = System;

答案 7 :(得分:0)

我刚遇到这个问题。事实证明,我不小心将文件从一个项目拖放到另一个项目,从而创建了一个副本。我花了一段时间才发现问题,因为文件隐藏在Properties文件夹中(我从未查看过)。

在任何情况下,帮助我解决问题的是进入抛出错误的文件,点击错误的行并“转到定义”。在定义中,您可以看到您正在查看的物理文件。如果它不是它应该是什么,那么你找到了你的问题。

我知道这是微不足道的,但是我浪费了大约一个小时的时间,所以希望这些信息对任何人都有用。

答案 8 :(得分:0)

顺便说一句,CodeBehind不老了,没用过!

CodeBehind=用于Web应用程序中的页面(包含.Designer.cs个文件),CodeFile=用于网站中的页面(动态编译的程序集,因此没有.Designer.cs个文件)

答案 9 :(得分:0)

我今天遇到了这个问题与Web USer Control,但发现将CodeBehind =“...”更改为Src =“...”是导致错误的原因。 [链接] http://stevenoderayi.blogspot.com/2011/04/resolved-cs0433-type-user-control.html [/链接]