Создание проекта ASP.NET в Visual Studio приводит к появляется сообщение об ошибке компилятора CS0433

Исходная версия продукта: Visual C++
Исходный номер базы знаний: 2028526

Сводка

При создании проекта ASP.NET с помощью Microsoft Visual Studio случайным образом может появилось сообщение об ошибке, подобное следующему:

Сообщение об ошибке компилятора: CS0433: тип "ASP.summary_common_controls_notes_ascx" существует в "c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8910\App_Web_msftx123.dll" и "c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8910\App_Web_msfty456.dll".

Описание: во время компиляции ресурса, необходимого для обслуживания этого запроса, произошла ошибка. Просмотрите следующие сведения об ошибке и измените исходный код соответствующим образом.

Ошибка источника: строка 100: </div>

Строка 101: <h3 class="entry">New Notes</h3>

Строка 102: <bni:details id="details" runat="server" />

Строка 103: <span class="RedZone">1450</span>

Строка 104: <p>Сводка.</P>

Исходный файл: d:\http\post\publisher\default.aspx Строка: 102

Распространенные сценарии, в которых может возникнуть эта ошибка, рассматриваются в следующих разделах.

Сценарий 1. Две сборки в одной папке bin

Описание: Распространенная причина этой ошибки заключается в том, что в одной папке bin веб-приложения есть две сборки, содержащие два определения классов, но имеющие одинаковое имя класса. Это может произойти, если в одну сборку было скомпилировано несколько Default.aspx. Обычно это происходит, когда главная страница (Default.master) и страница ASPX по умолчанию (Default.aspx) объявляют класс _Default.

Решение: Измените имя класса страницы master (в большинстве случаев с _Default) и перестройте проект. Важно устранить любой конфликт именования между классами.

Сценарий 2. Несколько ссылок на одну сборку

Описание: Ссылочные пути в Visual Studio используются для указания пути к папке для ссылок на сборки, используемых проектом. Возможно, путь содержит сборку, а сборка содержит одно и то же имя класса. Это может быть несколько ссылок, добавленных в одну сборку (возможно, разные по версии или имени), что приводит к конфликту именования.

Решение: Удалите ссылку на старую версию. В Visual Studio щелкните правой кнопкой мыши веб-сайт и проверка ссылки в свойствах.

Сценарий 3. Изменения разрешений по умолчанию

Описание: По умолчанию при компиляции веб-приложения ASP.NET скомпилированный код помещается в папку Временные файлы ASP.NET. По умолчанию разрешения на доступ предоставляются учетной записи локального пользователя ASP.NET. Учетная запись имеет разрешения с высоким уровнем доверия, необходимые для доступа к скомпилированному коду. Возможно, были некоторые изменения в разрешениях по умолчанию, и эти изменения могут вызвать конфликты управления версиями. Другая возможность заключается в том, что антивирусная программа может непреднамеренно заблокировать сборку.

Решение: Очистите папку "Временные файлы ASP.NET" для всего содержимого.

Сценарий 4. Пакетная компиляция

Описание: Если для атрибута batch в файле web.config задано значение True, это устраняет задержку, вызванную компиляцией, необходимой при первом доступе к файлу. ASP.NET предварительно компилирует все не скомпилированные файлы в пакетном режиме. Этот пакетный режим приводит к задержкам при первой компиляции файлов.

Установка атрибута batch в значение False может привести к любым ошибкам компиляции в маске, которые существуют в приложении, но не сообщаются. Что еще более важно, он сообщает ASP.NET динамически компилировать отдельные файлы .aspx/.ascx в отдельные сборки, а не в одну сборку.

Решение: Задайте batch=False в разделе компиляции <> в web.config. Это действие следует рассматривать как временное решение. Batch=False в разделе компиляции оказывает значительное влияние на время сборки приложения в Visual Studio.

Сценарий 5. Изменение web.config перезапуск домена приложения

Описание: Изменение файла web.config для приложения ASP.NET или изменение файла в папке bin (например, добавление, удаление или переименование) приводит к перезапуску Домена приложения. При выполнении этих действий все состояние сеанса теряется, а кэшированные элементы удаляются из кэша при перезапуске веб-сайта. Проблема может быть вызвана несогласованным состоянием в веб-приложении.

Решение: Активируйте перезапуск AppDomain, коснувшись (отредактировав) файл web.config.

Сценарий 6. Измененный исходный код еще не скомпилирован динамически повторно

Описание: Исходный код можно хранить в папке App_Code, и код будет автоматически скомпилирован во время выполнения. Результирующая сборка доступна для любого другого кода в веб-приложении. Таким образом, папка App_Code работает так же, как папка Bin, за исключением того, что в ней можно хранить исходный код вместо скомпилированного кода. Класс будет перекомпилирован при изменении исходного файла. Если из-за устаревшей сборки возникает конфликт, принудительное выполнение повторной компиляции может устранить проблему.

Решение: Коснитесь файла в папках Bin или App_Code, чтобы активировать полную перекомпиляцию.