Ошибка компиляции CS0433 на предварительно скомпилированном сайте ASP.NET 2.0

StackOverflow https://stackoverflow.com/questions/440675

Вопрос

Я постоянно получаю эту ошибку, когда запускаю отладчик для отладки своего сайта. Я использую элементы управления 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 на веб-приложение, и, таким образом, исправление выглядит так: & Удалите каталог 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 работал для меня.

<configuration>

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

</configuration>
  

Это говорит ASP.NET динамически   скомпилировать отдельные файлы .aspx / .ascx   на отдельные сборки. Это позволяет избежать   круговая ссылка, которая   вызывает исключение.

Другие советы

Для меня закрытие IDE, закрытие веб-сайта (IIS или Cassini), удаление всех моих временных файлов asp.net, запуск IDE и полная компиляция делают свое дело.

в IIS необходимо перезапустить его, открыв командную строку и введя iisreset, а затем нажмите клавишу ввода, однако, если вы используете сборку в веб-сервере Visual Studio (Cassini), это не решит вашу проблему. Вы можете завершить все запущенные экземпляры Cassini, набрав (точно так же, как и его, с учетом регистра): taskkill /f /im "WebDev.WebServer.exe" и нажав Enter. Затем вы увидите следующее сообщение: SUCCESS: The Process "WebDev.WebServer.EXE" with PID <some #> has been terminated.

Если у вас VS2008 и веб-приложение (не веб-сайт), у вас не может быть каталога с именем App_Code (вы должны удалить из него все файлы, переместить его на Forexam. в корневую папку) и удалить / исключить из проекта эту папку ( App_Code). Каждый файл в App_Code будет скомпилирован во время DEBUG / Publish. - это решило мою проблему с CS0433.

Я недавно исправил эту ошибку. Причина в том, что в проекте есть несколько файлов или классов, объявленных более одного раза. В моем случае

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

Возможно, причина в том, что некоторые другие библиотеки DLL, на которые вы ссылаетесь, могут ссылаться на более старую / более новую версию указанной сборки. Так что разные части приложения ссылаются на разные версии сборки. Я тоже столкнулся с такой проблемой. Чтобы решить эту проблему, я заставил приложение использовать новую версию:

Я изменил все свои ссылки в web.config, чтобы они указывали на более новую версию. В моем случае это была сборка System.Web.Extensions, которая вызывала проблемы. Я изменил их все с 1.0.60125.0 до 3.5.0.0

Затем, я добавил эти строки в свой web.config , который в основном говорит вашему приложению " forward " все ссылки на старую версию сборки, на новую:

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

Я не придумал это решение, но нашел его где-то, что не могу вспомнить. Однако я не думаю, что когда-либо видел объяснение, почему именно это происходит!

У меня только что была эта проблема. Оказывается, я случайно перетаскиваю - & -Пропущенные файлы из одного проекта в другой, что создает дубликат. Мне потребовалось некоторое время, чтобы найти проблему, потому что файлы были скрыты в папке «Свойства» (которую я никогда не изучаю).

В любом случае, что помогло мне решить проблему, это перейти в файл, который выдавал ошибку, щелкнув по ошибочной строке и " перейти к определению " ;. Находясь в определении, вы можете видеть, какой физический файл вы просматриваете. Если это не то, что должно быть, значит, вы нашли свою проблему.

Я знаю, что это тривиально, но я потратил на это примерно час времени, поэтому надеюсь, что эта информация будет полезна всем.

Чтобы исправить эту ошибку, она довольно проста, но требует некоторых редко используемых объявлений (трудная часть копалась в правильной документации;).

См. ECMA-334 , раздел 16.3 " внешние директивы псевдонимов "

Если вы контролируете " ваш " источник и ссылаются на другую сборку " их " двоичный файл, но вы не можете изменить (или не хотите слишком сильно изменять :) спецификаторы пространства имен / типа (например, ОБА из вас объявляют Систему ). Я действительно столкнулся с этим в последнее время, со всеми обновлениями CLR / DLR для бета-версии, альфа-версии и версии, MS много раз выпускала в своих опубликованных пространствах имен.

Когда вы импортируете сборку " их " обычно компилятор устанавливает ее в глобальное (зарезервированное) пространство имен. В MSVC вы переходите к свойствам ссылки на сборку, переходите туда, где написано & Quot; Псевдонимы & Quot ;, вы можете указать новое имя, other

Допустим, вы используете образное имя " global2 ".

Затем вы переходите к исходным файлам и размещаете в TOP перед любые объявления пространства имен;

extern alias global2;
using global2::System;

Ваш код может затем использовать типы из global2, например " Int32 " или что еще, вы можете переименовать его через;

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

Кстати, CodeBehind не стар и не используется!

CodeBehind= - для страниц в веб-приложении (с .Designer.cs файлами), а CodeFile= - для страницы на веб-сайте (динамически скомпилированные сборки, поэтому без <=> файлов)

У меня была эта проблема сегодня с веб-элементом управления USER, но я обнаружил, что изменение CodeBehind = " ... " в Src = " ... " является причиной ошибки. [Ссылка] http://stevenoderayi.blogspot.com/2011/04/resolved-cs0433-type-user-control.html [/ ссылка]

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top