Поделиться через


Устранение неполадок при преобразовании в Visual Web Developer

Обновлен: Ноябрь 2007

При использовании Microsoft Visual Web Developer для открытия проекта веб-приложения, созданного в предыдущих версиях Microsoft Visual Studio .NET, Visual Web Developer автоматически преобразовывает веб-приложение в формат, используемый в ASP.NET версии 2.0.

ms178461.alert_note(ru-ru,VS.90).gifПримечание.

Дополнительные сведения о процессе преобразования см. в разделе Преобразование веб-проекта из Visual Studio .NET.

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

В этом разделе описываются следующие вопросы преобразования:

  • Элементы управления отображают другую маркировку после преобразования

  • При проверке разметки возникают ошибки

  • После преобразования события страницы создаются дважды

  • Во время компиляции выдается сообщение о неоднозначных классах

  • Ошибки, связанные с изменением модели страницы с выделенным кодом

  • Ошибки синтаксического анализа

  • Исключенные файлы больше не исключаются

  • Частично преобразованные решения для типов смешанных проектов

  • Открытие веб-узла на базе веб-приложения как веб-узла на базе файловой системы

  • Идентификаторы на клиентской стороне удаляются из файла с выделенным кодом

  • Ошибка циклических ссылок

Элементы управления отображают другую маркировку после преобразования

В ASP.NET 2.0, если только обозреватель не поддерживает XHTML, класс Page и серверные веб-элементы управления ASP.NET выполняют отрисовку разметки, по умолчанию совместимую со стандартом XHTML 1.0 Transitional. Мастер преобразования автоматически присваивает атрибуту mode элемента xhtmlConformance element значение Legacy. После преобразования элементы могут отображаться немного по-другому, чем в предыдущих версиях ASP.NET. В большинстве случаев разница в отрисовке не влияет на функциональность приложения. Однако если используется клиентский сценарий, применяющий определенные теги или атрибуты, приложение может работать по-другому.

Дополнительные сведения см. в разделе ASP.NET и XHTML.

При проверке разметки возникают ошибки

После переноса используется схема проверки разметки по умолчанию Internet Explorer 6.0. Это означает, что редактор сравнивает разметку страницы со схемой, в которой задано, что Internet Explorer 6.0 определяет как допустимый HTML-код. Это облегчает перенос в Visual Web Developer. Рекомендуется изменить разметку таким образом, чтобы страницы приложения использовали схему проверки XHTML 1.0 Transitional.

Сведения об изменении схемы проверки см. в разделе Практическое руководство. Выбор схем проверки для редактора HTML в Visual Web Developer.

После преобразования события страницы создаются дважды

В процессе преобразования удаляется атрибут AutoEventWireup директивы @ Page. Значение по умолчанию для этого атрибута равно true, это означает, что страница автоматически создает события с именем Page_событие. Если на странице атрибуту AutoEventWireup явно присваивается значение false после преобразования, то события этой страницы создаются автоматически. Если на странице используется другой явный метод для вызова событий, например ключевое слово Handles в Visual Basic, то событие может быть вызвано дважды. Для решения этой проблемы добавьте значение AutoEventWireup="false" в директиву @ Page.

Во время компиляции выдается сообщение о неоднозначных классах

После преобразования проекта возможно, что компилятор выдаст сообщение о том, что класс является неоднозначным, т. е. он импортируется из нескольких пространств имен. Например, если в преобразованном проекте создается экземпляр класса Cache, то компилятор выдает сообщение о том, что этот класс принадлежит пространству имен System.Net и System.Web.Caching.

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

Ошибки, связанные с изменением модели страницы с выделенным кодом

Преобразование проектов с ASPX-страницами, принимающими защищенные члены класса в классах с выделенным кодом, может создать исключения. Это вызвано изменением модели с выделенным кодом в платформе .NET Framework 2.0. В предыдущих версиях .NET Framework страницы были производными классами от классов с выделенным кодом. Но в ASP.NET 2.0 классы с выделенным кодом определяют разделяемые классы, используемые с ASPX-страницей во время генерации для создания конечной скомпилированной страницы.

Обычная ситуация, в которой может возникнуть эта проблема преобразования — приложение, в котором общие компоненты макета определяются в базовом классе с выделенным кодом. Такую же функциональность общих компонентов макета можно получить с помощью пользовательских элементов управления, главных страниц или атрибута CodeFileBaseClass директивы @ Page. Дополнительные сведения о разработке пользовательских элементов управления см. в разделе Общие сведения о пользовательских элементах управления ASP.NET. Дополнительные сведения об использовании главных страниц см. в разделе Общие сведения о главных страницах ASP.NET.

Ошибки синтаксического анализа

Мастер преобразования сообщает об ошибках синтаксического анализа в ASPX-файлах. Проблемы синтаксического анализа можно разделить на следующие категории:

  • ASPX-страница не отформатирована должным образом перед запуском мастера преобразования.

  • Не найден атрибут CodeBehind или Src директивы @ Page.

  • Файл с выделенным кодом, ссылка на который есть на ASPX-странице, не найден.

  • ASPX-файл указан в файле проекта (CSPROJ-файле или VBPROJ-файле, например), но его нет в каталоге проекта. Если файл не является частью проекта, эту ошибку можно игнорировать.

Исключенные файлы больше не исключаются

В предыдущих версиях Visual Studio была возможность включать или исключать файлы веб-проекта. Кроме этого можно было исключать файл из построения проекта, указав в качестве действия построения None. Мастер переноса обрабатывает эти два случая по-разному. Мастер переноса преобразовывает файлы в веб-проекте, которые не отмечены как исключенные. Мастер переноса не преобразовывает файлы, не являющиеся частью построения проекта — файлы, у которых в качестве действия построения указано None.

После завершения преобразования можно удалить все ранее исключенные файлы или переименовать их с расширением, которое не используется в Visual Studio, например с расширением EXCLUDE. Если файл в веб-проекте не преобразован, следует убедиться, что в качестве действия построения для него указано None.

Файлы, у которых в качестве действия построения указано None, выдают сообщение об ошибке в отчете о преобразовании. Дополнительные сведения об отчете преобразования см. в разделе Форматирование отчета о преобразовании миграции.

Частично преобразованные решения для типов смешанных проектов

В среде Microsoft Visual Studio 2005 и предыдущих версиях возможно создание решения, состоящего из веб-проектов и клиентских проектов, таких как библиотеки классов или приложения Windows. Если используется версия Microsoft Visual Studio 2005 Express Edition, то можно преобразовать только ту часть, которая соответствует этой версии. Например, если использовать мастер преобразования в среде Visual Web Developer 2005, экспресс-выпуск, то возможно преобразование только веб-проектов открываемых решений, независимо от других типов проектов, которые содержатся в решении. В результате решение преобразуется только частично. Для полного преобразования решения со смешанными типами проектов следует использовать Visual Web Developer 2005, Visual Studio 2005 или Visual Studio 2005 Team System.

Открытие веб-узла на базе веб-приложения как веб-узла на базе файловой системы

Рекомендуется открывать веб-узел, созданный в предыдущей версии Visual Studio, используя пункт меню Открыть веб-узел в среде Visual Web Developer 2005. Затем можно выбрать тип открытия веб-узла: как веб-узла на базе файловой системы, как локального веб-узла служб IIS, как развернутого узла протокола передачи файлов (FTP) или удаленного узла. Открытие веб-узла как веб-узла на базе файловой системы приводит к потере метаданных IIS. В частности теряются сведения о подпапках, отмеченных как виртуальные каталоги. В отчете о преобразовании будет содержаться предупреждение, если веб-узел преобразуется в веб-узел на базе файловой системы.

Рекомендуется закрыть веб-узел, повторно открыть его с помощью команды Открыть веб-узел и выбрать вкладку Локальный веб-сервер IIS. Дополнительные сведения об использовании мастера переноса см. в разделе Практическое руководство. Преобразование проекта Visual Studio .NET в проект Visual Studio 2005. Дополнительные сведения об отчете преобразования см. в разделе Форматирование отчета о преобразовании миграции.

Идентификаторы на клиентской стороне удаляются из файла с выделенным кодом

Если в разметке используется атрибут ID клиентской стороны (например, в элементе HTML div) с тем же именем, что и у переменной-члена, объявленной на странице с выделенным кодом, то во время преобразования тег ID в разметке удаляется.

Для решения этой проблемы следует просмотреть разметку и код перед преобразованием на наличие конфликтов в именах между атрибутами ID клиентской стороны и переменными-членами, а затем изменить их так, чтобы их имена различались.

Ошибки циклических ссылок

В процессе преобразования в страницы с выделенным кодом, ссылающиеся на другие страницы или пользовательские элементы управления, добавляются директивы @ Reference. Возможны ситуации, в которых возникает циклическая ссылка. Для облегчения устранения неполадок можно присвоить атрибуту batchэлемента компиляции значение False. Значением атрибута по умолчанию является batch значение True. Присвоение атрибуту значения False может решить проблемы с циклическими ссылками. Более долгим методом решения является повторная разработка страниц или пользовательских элементов управления с использованием абстрактного базового класса, определенного в классе, который хранится в папке App_Code, и присвоение атрибуту batch значения True.

См. также

Задачи

Практическое руководство. Выбор схем проверки для редактора HTML в Visual Web Developer

Основные понятия

Преобразование веб-решений и файлов проекта

Другие ресурсы

Центр разработки по переносу ASP.NET