簡體   English   中英

在預編譯的ASP.NET 2.0站點上編譯錯誤CS0433

[英]Compile Error CS0433 on pre-compiled ASP.NET 2.0 site

當我啟動調試器來調試我的站點時,我經常會遇到這個錯誤。 我正在使用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"

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

如上所述殺死卡西尼實例並不適用於我。 ScottGu發布了這個問題

在web.config的編譯部分設置batch =“false”屬性對我有用。

<configuration>

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

</configuration>

這告訴ASP.NET將各個.aspx / .ascx文件動態編譯為單獨的程序集。 這避免了觸發異常的循環引用問題。

對我來說,關閉IDE,關閉網站(IIS或Cassini),刪除我的所有臨時asp.net文件,啟動IDE並進行完整編譯就可以了。

如果您有VS2008和WEB應用程序(不是WEB站點),則不能擁有名為App_Code的目錄(您必須從中移除所有文件,將其移至根文件夾)並從項目文件夾(App_Code)中刪除/排除。 App_Code中的每個文件都將在DEBUG / Publish期間編譯。 - 這解決了CS0433的問題。

在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.

我最近解決了這個錯誤。 原因是因為在項目中有一些文件或類被聲明多次。 就我而言,

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

我剛遇到這個問題。 事實證明,我不小心將文件從一個項目拖放到另一個項目,這創建了一個副本。 我花了一段時間才發現問題,因為文件隱藏在Properties文件夾中(我從未查看過)。

在任何情況下,幫助我解決問題的是進入拋出錯誤的文件,r-點擊錯誤的行並“轉到定義”。 在定義中,您可以看到您正在查看的物理文件。 如果它不是它應該是什么,那么你找到了你的問題。

我知道這是微不足道的,但它浪費了我大約1小時的時間,所以希望這些信息對任何人都有用。

順便說一句, CodeBehind不老,不用!

CodeBehind=用於Web應用程序中的頁面(帶有.Designer.cs文件), CodeFile=用於Web站點中的頁面(動態編譯的程序集,因此沒有.Designer.cs文件)

原因可能是您引用的其他一些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>

我沒有提出這個解決方案,但發現它在某個我不記得的地方。 但是,我認為我從來沒有看到過為什么會發生這種情況的解釋!

我今天在Web USer Control中遇到了這個問題,但發現將CodeBehind =“...”更改為Src =“...”是導致錯誤的原因。 [鏈接] http://stevenoderayi.blogspot.com/2011/04/resolved-cs0433-type-user-control.html [/鏈接]

要修復這個bug,它很簡單,但需要一些很少使用的聲明(困難的部分是通過正確的文檔挖掘;)。

參見ECMA-334 ,第16.3節“ 外部別名指令

如果您控制“您的”源並鏈接到另一個程序集“他們的”二進制文件,但您無法更改(或不希望太多更改:)命名空間/類型說明符(例如您聲明系統的 兩個 )。 實際上我最近遇到了相當多的問題,對CLR / DLR進行了所有Beta / Alpha / Version更新,MS在他們發布的命名空間中進行了大量的翻版。

導入程序集“its”時,編譯器通常會將其設置為全局(保留)命名空間。 在MSVC的,你去上裝配基准性能,走到哪里它說的“ 別名 ”,然后你可以指定一個新的名字,比全球其他 或者實際上有幾個名字。

假設您使用富有想象力的名稱“ global2 ”。

然后,您可以任何名稱空間聲明之前轉到源文件和TOP ;

extern alias global2;
using global2::System;

然后,您的代碼可以使用global2中的類型,如“Int32”或其中任何一種,您仍然可以通過它重命名;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM