Не удается проанализировать .aspx во время преобразования WAP

Я скопировал файлы веб-сайта в новый проект WAP. Убедился, что он компилируется и работает. У меня проблема в том, что он не может анализировать страницы .aspx, когда я выполняю преобразование в WAP. Ошибка просто говорит, что не может проанализировать страницы .aspx.

Когда я смотрю на одну из страниц .aspx, у меня есть директива page как таковая, но она не может распознать это пространство имен. Это пространство имен, которое я использую для своего нового проекта WAP.

Все мои страницы с выделенным кодом имеют пространство имен Instant.Web, а для свойств проекта установлено значение Instant.Web для основного пространства имен.

поэтому, когда я, например, перехожу на страницу, она не распознает часть моих Inherits Web.Attachment.

Вот пример (слегка измененная формулировка для конфиденциальности):

SomeAspxPage.aspx:

<%@ Page Language="C#" Inherits="Instant.Web.Attachment" Codebehind="SomeAspxPage.aspx.cs" %>
<asp:Content ID="ctlContent" ContentPlaceHolderID="ctlContentPlaceHolder" runat="Server">
    <Frm:Attachment ID="Attachment1" runat="server"/>
</asp:Content>

SomeaspxPage.aspx.cs

namespace Instant.Web
{
    public partial class Attachment : Instant.InstantFrm.Pages.Base.UserPage
    {

    }
}

Также по какой-то причине UserPage в коде программной части не отображается как класс, который можно щелкнуть правой кнопкой мыши и перейти к источнику. Не уверен, почему, потому что эта сборка определенно входит в этот WAP-проект и является последней сборкой для Instant.InstantFrm.


person PositiveGuy    schedule 23.07.2011    source источник


Ответы (5)


  1. Не знаю, актуально ли это для вашего реального случая, но что касается вашего примера, у вас есть атрибут Codebehind="Attachment.aspx.cs", который ищет файл Attachment.aspx.cs, но имя файла - SomeaspxPage.aspx.cs. Обычно «файл не может быть проанализирован» означает, что мастер не может найти соответствующий файл с выделенным кодом и не может преобразовать страницу.

  2. Кстати, еще одно примечание из здесь:

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

Из вашего описания не ясно, добавили ли вы ссылку на свой пользовательский UserPage. Если нет, и эта сборка просто копируется куда-то в проект WAP, это также может вызвать ошибку преобразования.

person Kirill    schedule 29.07.2011
comment
нет, это просто ошибка публикации. Я переименовал страницу этой беседы, но забыл переименовать и ее там. Это не актуальная проблема с кодом, просто разместите здесь проблему. - person PositiveGuy; 30.07.2011
comment
Я добавил ссылки в корзину проекта WAP, которые необходимы, поэтому они уже добавлены в этот веб-проект. - person PositiveGuy; 30.07.2011
comment
Просто чтобы прояснить: в какой момент вы испытываете проблему? Вы говорите это в момент преобразования. Но обычно страница в проекте веб-сайта имеет атрибут CodeFile, а в вашем примере это уже Codebehind (который автоматически переименовывается в случае успешного преобразования). Вы переименовали этот атрибут вручную? И еще одно: пробовали ли вы назвать класс одинаковым именем файла, например Inherits="Instant.Web.Attachment" Codebehind="Attachment.aspx.cs"? Потому что в таком случае у меня тоже были проблемы с разными именами. - person Kirill; 30.07.2011
comment
Вы пробовали преобразовать страницу с классом программной части, который наследуется от обычного System.Web.UI.Page? - person Kirill; 30.07.2011
comment
Если ваша процедура преобразования говорит, что не может анализировать определенные страницы .aspx (не все страницы в целом), вы можете попробовать такое решение. - person Kirill; 30.07.2011
comment
нет, весь смысл преобразования в веб-приложение состоит в том, что, поскольку я скопировал все файлы .aspx и .aspx.cs из проекта веб-сайта в этот новый веб-проект, при преобразовании предполагается создать новые файлы дизайнера, которые являются частью процесс создания этих файлов .aspx на основе WAP. Но я продолжаю получать ошибку синтаксического анализа при попытке щелкнуть проект правой кнопкой мыши ИЛИ щелкнуть правой кнопкой мыши отдельный .aspx и выбрать «Преобразовать в веб-приложение». Он ничего не говорит мне в сообщении об ошибке, ПОЧЕМУ он не может проанализировать .aspx во время попытки преобразования (действия). - person PositiveGuy; 01.08.2011
comment
Взгляните на атрибут CodeFileBaseClass (не уверен, что он актуален для вашего сценарий, но его стоит проверить). - person Kirill; 01.08.2011
comment
CodeFileBaseClass не будет применяться, потому что это атрибут, связанный с CodeFile, оба из которых предназначены только для проектов веб-сайтов. WAP использует атрибут Codebehind - person PositiveGuy; 01.08.2011
comment
Что ж, это правда, но поскольку вы все еще находитесь на стороне проекта веб-сайта и не можете его преобразовать, моя идея заключалась в том, что, учитывая, что вы используете настраиваемую базовую страницу, но не ссылаетесь на нее в своей директиве Page, это может помешать преобразованию вашего веб-сайта в Интернет. применение. Так почему бы не попробовать? - person Kirill; 01.08.2011
comment
Хорошо, и еще один вопрос. Когда вы выполняете шаги преобразования, сначала вы создаете проект веб-приложения, затем копируете все файлы со своего веб-сайта в новое веб-приложение, а затем вручную добавляете все необходимые ссылки. На этом этапе вам нужно попытаться преобразовать проект с помощью пункта меню «Преобразовать в веб-приложение», верно? Но прежде чем вы это сделаете, не могли бы вы попробовать создать веб-сайт и посмотреть, есть ли какие-либо другие ошибки, кроме отсутствия файлов .DESIGNER.CS или .DESIGNER.VB? Если таковые имеются, возможно, вы найдете тот, который вызывает проблемы с синтаксическим анализом. - person Kirill; 01.08.2011

Попробуйте добавить новую пустую страницу в свой проект, проверьте, можно ли ее проанализировать.

Затем небольшими шагами добавляйте функциональность, пока не получите страницу, аналогичную той, на которой выдается ошибка.

Это должно позволить вам определить, в чем проблема.

person Shiraz Bhaiji    schedule 29.07.2011
comment
похоже, что основная проблема заключается в предупреждении 126 Нераспознанный префикс тега или фильтр устройства «asp». Так, например, он не распознает никаких ‹asp: tags ... почему я понятия не имею. Я не знаю, есть ли перед этим какая-то предыдущая проблема, которая вызывает эффект каскадной ошибки, и, возможно, после того, как я решу, что эта ошибка тега исчезнет, ​​но, насколько я могу видеть, я могу построить нормально, и я не вижу других другие ошибки. Я проверил web.config, и мне он кажется довольно стандартным. - person PositiveGuy; 30.07.2011
comment
Следующее, что нужно проверить, это то, что asp включен в IIS - person Shiraz Bhaiji; 30.07.2011
comment
не имело значения ... ничего из этого. IIS 7 по умолчанию включает .aspx. Это не имеет ничего общего с тем, почему VS не может анализировать теги ‹asp:›. - person PositiveGuy; 01.08.2011
comment
Не могли бы вы убедиться, что вы указали все необходимые библиотеки DLL. иногда проект компилируется, но не работает, так как вам не хватает некоторых методов расширения. Также проверьте .net версию DLL, на которую вы ссылаетесь. - person Shiraz Bhaiji; 01.08.2011
comment
да, он ссылается на все необходимые библиотеки DLL, потому что все решение компилируется нормально. Все, что я сделал, это преобразовал это в VS 2010, а это был проект VB.NET на C #. Хотя ссылки есть. - person PositiveGuy; 14.08.2011

Судя по этой цитате Warning 126 Unrecognized tag prefix or device filter 'asp' в одном из комментариев, похоже, что в вашем файле CSProj отсутствует ссылка на сборку.

Убедитесь, что у вас есть System.Web в папке «Ссылки» проекта.

Если он там есть, убедитесь, что версия (каталог), из которой он извлекается, совпадает с версией .NET, на которую вы нацеливаетесь в своем проекте.

person s_hewitt    schedule 02.08.2011
comment
Все решение компилируется, поэтому я не пропускаю ни одной библиотеки DLL. И да, System.Web есть, иначе эта штука все равно не компилируется. - person PositiveGuy; 14.08.2011

Сохраните и закройте решение, затем снова откройте его и повторите попытку.

Я предполагаю, что VS что-то кеширует и проекты нужно перезагружать.

person RubberDuck    schedule 02.09.2016

Для WAP-сайта я бы полностью удалил макет ASPX (кроме первой строки, которая является обязательной) и вывел бы содержимое с использованием Response.Write в выделенном коде. Помимо простоты, это дает более чистый результат и детальный контроль над процессом.

person SharpAffair    schedule 02.08.2011
comment
Кажется, это не поможет, так как проблема заключается в связывании файла ASPX и кода программной части вместе, а ваш метод по-прежнему требует этого. Итак, вы полностью переплетаете свое представление / презентацию / макет со своей бизнес-логикой? Это противоречит дизайну ASP.NET WebForms, MVC или WebPages. - person nekno; 02.08.2011