Ошибка компиляции CS0433 на предварительно скомпилированном сайте ASP.NET 2.0 - PullRequest
8 голосов
/ 13 января 2009

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

У кого-нибудь есть идеи, где я могу даже начать искать?

Ответы [ 10 ]

7 голосов
/ 21 мая 2010

убийство экземпляров Кассини, как описано выше, не сработало для меня. ScottGu разместил об этой проблеме

установка атрибута batch = "false" в разделе компиляции в web.config работала для меня.

<configuration>

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

</configuration>

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

1 голос
/ 08 декабря 2011

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

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

1 голос
/ 15 декабря 2010

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

1 голос
/ 02 марта 2009

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

1 голос
/ 14 января 2009

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

0 голосов
/ 02 апреля 2011

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

0 голосов
/ 21 мая 2010

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

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

0 голосов
/ 21 ноября 2009

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

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

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

0 голосов
/ 01 июня 2009

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

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

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

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

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

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

extern alias global2;
using global2::System;

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

extern alias global2;
using global2::System;
using orig = System;
0 голосов
/ 13 февраля 2009

Возможно, причина в том, что некоторые другие библиотеки 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>

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

...