Как заставить Visual Studio заново создать файлы .designer для файлов aspx / ascx?

349

Иногда, когда я редактирую страницу или управляю файлами .designer, перестаньте обновляться новыми элементами управления, которые я размещаю на странице. Я не уверен, что это может произойти, но мне интересно, есть ли способ заставить Visual Studio регенерировать файл .designer. Я использую Visual Studio 2008

РЕДАКТИРОВАТЬ: Извините, я должен был заметить, что я уже пробовал:

  • Закрытие и повторное открытие всех файлов и Visual Studio
  • Внесение изменений в управление runat = "server" на странице
  • Удаление и повторное добавление директивы страницы
  • 55
    Смешно ли, что в 2012 году в Visual Studio все еще не было пункта контекстного меню для восстановления файлов дизайнеров из исходных файлов? Это похоже на неспособность восстановить поврежденную DLL. Я не понимаю этого. Особенно с внешним управлением исходным кодом и внешними редакторами, вы оставляете калекой Visual Studio. Пустая трата денег, если вы спросите меня. Я на самом деле пытаюсь восстановить ресурсы дизайнеров файлов. Мне удалось изменить его регенерировать, но это через неизвестность ... Ауг !!! 1
  • 3
    @ bamccaig, если бы у меня была копейка за каждую странную «фишку», подобную этой, я был бы богаче, чем Билл Гейтс. Если вы считаете, что это плохо, посмотрите, где Outlook Express хранит свои почтовые данные. Он похоронен глубоко в пользовательской папке под загадочным именем папки, которое по умолчанию скрыто.
Показать ещё 4 комментария
Теги:
visual-studio
visual-studio-2008

43 ответа

333
Лучший ответ

Если вы открываете файл .aspx и переключаетесь между представлением дизайна и html-представлением и назад он предложит VS проверить элементы управления и добавить все, что отсутствует в файл конструктора.

В VS2013-15 есть команда Преобразовать в веб-приложение в меню Проект. До VS2013 эта опция была доступна в контекстном меню контекстного меню для файлов (c/p) x. Когда это будет сделано, вы увидите, что теперь у вас есть файл *.Designer.cs, и ваши элементы управления в HTML-дизайне будут доступны для вашего контроля.

PS: Это не должно быть сделано в режиме отладки, так как не все "перекомпилировано" при отладке.

Некоторые люди также сообщили об успехе, удалив файл .designer.cs, а затем воссоздают пустой файл с тем же именем.

  • 0
    Это сработало только после закрытия каждого экземпляра (даже с совершенно разными решениями) VS2008.
  • 10
    Я обнаружил, что переход от режима отладки к режиму выпуска копать хитрость для меня, спасибо
Показать ещё 15 комментариев
79

Ну, я нашел решение, которое работает, хотя мне это действительно не нравится. Мне пришлось удалить файл .designer.cs, а затем создать пустой файл с тем же именем. Когда я вернулся и снова сохранил файл aspx, файл конструктора был повторно сгенерирован.

Хитрая!

  • 2
    Это просто сработало для меня тоже. Не идеально. Понятия не имею, почему оригинальный файл desginer перестал корректно обновляться.
  • 3
    Это не сработало для меня. Теперь у меня есть пустой файл и весь код не работает !!! Rebooting ...
Показать ещё 7 комментариев
71

Я использую следующий метод, который работает каждый раз:

  • Выберите все code-in-front (html-разметка и т.д.) в редакторе файла aspx/ascx.
  • Вырезать.
  • Сохранить.
  • Paste.
  • Сохранить.

Рекомпилированные.

  • 1
    Я думаю, что просто удаление одного элемента управления и его повторное добавление имеет тот же эффект.
  • 0
    Я сделал это, и это сработало для меня. Однако мне пришлось создать пустой файл с именем <name>.aspx.designer.vb чтобы он заработал.
56

Недавно я увидел, что у меня такая же проблема. Visual Studio 2010 отказался обновить файл конструктора.

Как выясняется, VS не изменяет файл конструктора для страницы, использующей CodeFile (запуск страниц) вместо CodeBehind (DLL). Это верно, независимо от того, сколько раз вы закрываете VS, перезагружаете проект, заново создаете элемент управления или изменяете файл. Ничто не могло бы побудить VS к регенерации дизайнера. Как будто он не создает файл конструктора для страниц CodeFile, но требует, чтобы он был там.

Я изменил его на CodeBehind и сохранил страницу. Файл дизайнера немедленно обновляется. Затем я просто изменил его, и все было по-прежнему золотым. Такое поведение кажется новым с VS 2010/.NET 4.0, поскольку VS 2008 по умолчанию не пострадал от этого.

Эта часть:

<%@ Page Language="vb" AutoEventWireup="false" CodeFile="YourPage.aspx.vb" Inherits="YourPageClass" %>

Измените CodeFile на CodeBehind, сохраните, а затем верните.

  • 0
    Поздно к этой теме. Ни один из ответов, описанных выше, не вынуждает элементы управления быть перечисленными в * .aspx.designer.cs. Я надеялся, что это произойдет, но он все еще не заставляет элементы управления быть объявленными в файле * .aspx.designer.cs. Я использую VS 2010 Pro SP1. Я пытаюсь заставить это работать с любыми файлами по умолчанию, которые IDE генерирует в / Account, такими как ChangePassword.aspx. Благодарю.
  • 0
    По-прежнему работает в Visual Studio Community 2013.
Показать ещё 1 комментарий
36

Есть и другая возможность: у вас может быть ошибка в вашем .aspx файле, который не позволяет Visual Studio регенерировать конструктор.

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

  • 0
    У меня была та же проблема, пользовательский элемент управления имел ошибки, поэтому страницы, которые используют пользовательский элемент управления, имели несвязанные ошибки из-за ошибок в пользовательском элементе управления.
  • 1
    По той же причине. У меня был неподдерживаемый атрибут visible = "false", добавленный к кнопке asp. Я удалил его, и дизайнерский код был сгенерирован заново.
22

Большинство решений здесь не работают, если вы используете Visual Studio 2013 и, возможно, 2012 год. Microsoft, вероятно, ввела некоторые оптимизации, чтобы сделать среду IDE более свежей, следовательно, они уменьшили количество случаев, запускающих генератор кода. Следующие сценарии, которые раньше работали, больше не выполняются:

  • Удалить файл aspx или ascx - больше не проверяет этот случай
  • Вырезать все содержимое и отменить в файл aspx или ascx - больше не работает, никаких изменений в ссылках
  • Преобразование в веб-приложение - опция больше недоступна
  • Произвольное изменение содержимого файла aspx/ascx - больше не работает (см. 2).

Решение удивительно просто, но оно немного громоздко. Чтобы запустить генератор кода, измените что-то, что потребует создания designer.aspx.cs. Изменение содержимого, которое не влияет на код, например стиль CSS или добавление текста, не вызывает генерацию кода. Вы должны изменить ссылочный элемент управления. Вот как это сделать:

В ascx или aspx измените идентификатор элемента управления

<asp:HyperLink ID="MyLink" runat="server" NavigateUrl="~/Default.aspx" Text="Home" />

to

<asp:HyperLink ID="theLINK" runat="server" NavigateUrl="~/Default.aspx" CssClass="tab" Text="Home" />

Перейдите к ascx.cs или aspx.cs и убедитесь, что вы переименовали все ссылки на "MyLink" на "theLINK". Сохраните и выполните сборку, и вам должно быть хорошо идти.

  • 0
    Очень хороший момент об изменениях в более новой версии Visual Studio. Вместо того, чтобы возиться с идентификатором, как описано выше, мне удалось стереть файл конструктора, а затем добавить новый, мягкий элемент управления, такой как <asp: PlaceHolder ID = "Foo" runat = "server />, и затем сохранить его в триггере. регенерация. Тогда, даже если вы забудете удалить его, ничто не повлияет.
  • 8
    3. «Преобразовать в веб-приложение» становится доступным в меню «ПРОЕКТ», если выбран соответствующий файл.
Показать ещё 4 комментария
14

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

  • 0
    Не работает в VS2008
  • 0
    Извините, это не сработало, оно работало в VS 2008 для меня, так как я начал его использовать. Есть ли синтаксическая ошибка на вашей странице? Вы должны получить диалоговое окно, которое говорит вам, что нужно исправить, чтобы закончить его работу.
Показать ещё 1 комментарий
8

Преобразование в веб-приложение не помогло мне.

Удаление конструктора и вставка пустого конструктора .cs тоже не работали.

Но да, это сработало:

  • Выбрать все (Default.aspx)
  • Вырезать
  • Сохранить значение по умолчанию .aspx
  • Вставить
  • Сохранить значение по умолчанию .aspx

Готово. Создан новый designer.cs.:)

  • 0
    Я могу подтвердить, что это работает в VS2013, я только сделал это, и это решило мои проблемы.
  • 0
    Вы. иметь. получил. к. быть. ребячество. мне. Это работало для меня в VS2015, когда преобразование, как в выбранный ответ не сделал.
6

Я часто обнаружил, что копирование/вставка вызывает это поведение для меня. Большинство случаев можно решить, отредактировав идентификатор серверного элемента управления (просто добавьте символ, а затем удалите его).

Также помните, что элемент управления внутри таких вещей, как ретрансляторы, не отображается в файле конструктора.

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

  • 2
    Такая ошибка у меня много раз. Если вы копируете HTML с одной страницы на другую и у вас есть элементы управления с runat = "server", элементы управления будут переименованы, чтобы избежать конфликта. Однако, если вы вставите внутрь тегов «html comment» <! - whaterver ->, идентификаторы элемента управления не будут изменены, и любой конфликт остановит создание файла конструктора, поскольку существует два элемента управления с одинаковым идентификатором. Это связано с тем, что элементы управления внутри html-тегов "comments" также создаются. ;)
5

Я нашел способ решить эту проблему без изменения каких-либо кодов или запущенных команд, таких как "Конвертировать в веб-приложение", - и это тоже просто!

Я обнаружил, что перезапуск Visual Studio часто решает проблему, но иногда это не так. В этих случаях, если вы закроете Visual Studio, а затем удалите весь контент в каталоге "obj" для веб-проекта, прежде чем открывать его снова, он всегда работал у меня.

(при повторном запуске вы просто добавляете пробел и удаляете его снова, а затем нажмите "Сохранить", чтобы файл конструктора был правильно регенерирован)

  • 0
    У меня была эта проблема с унаследованным приложением, за которое я отвечал за поддержку. Я хочу сказать спасибо за указание на это. Мне не разрешено переходить в веб-приложение ", создавать новое решение или делать что-либо, кроме исправления ошибок. Дизайнер постоянно рухнул бы для меня. Но это помогло до сих пор.
4

Когда вы находитесь в режиме просмотра, щелкните правой кнопкой мыши на экране и нажмите "Обновить".

4

Мой опыт в том, что если вы хотите сделать что-то вроде этой, как указано выше.

Ваш файл разметки (aspx/ascx) должен включать атрибут CodeBehind = MyPage.aspx.cs или иначе он не будет работать. Я написал об этом здесь.

  • 2
    +1 Исправил это для меня. На моей странице отсутствовал этот атрибут
  • 0
    Добавил этот атрибут, затем сохранил; ничего такого. Затем удалил Наследует, сохранил, восстановил и вуаля файл кода дизайнера обновился! Эта утомительная особенность ловит меня каждый раз :-(
Показать ещё 1 комментарий
4

(Ниже приводится опыт работы с VS2005.)

Если вы редактируете страницу ASPX во время отладки, тогда код не обновляется новыми классами. Итак, вам нужно прекратить отладку, тривиально отредактировать страницу ASPX (например, добавить кнопку или что-то еще), затем щелкнуть Design View, а затем удалить кнопку. Затем ваши файлы дизайнеров должны быть обновлены.

Если у вас другая проблема с VS2008, я не могу помочь.

  • 0
    Столкнулся с этим с VS.Net 2010 ... должен был сделать именно это ... Спасибо @EndangeredMassa за подсказку ... Я имел обыкновение проходить это и в дни VS.Net 2002/2003 ... Хотел бы я знал это тогда;)
2

В Visual Studio:

1) Удалите файл aspx.designer.cs

2) Щелкните правой кнопкой мыши по вашему aspx файлу и выберите "Преобразовать в веб-приложение" Это должно добавить aspx.designer.cs обратно и обновляться.

Если вы получите сообщение об ошибке:

"Сбой создания файла конструктора: метод или операция не реализованы".

Попробуйте закрыть Visual Studio, а затем снова откройте свой проект и повторите шаг номер 2

Как сгенерировать aspx.designer.cs в visual studio?

  • 2
    «Преобразовать в веб-приложение» не существует в контекстном меню файла ASPX. По крайней мере, это не так в VS Professional 2015.
2

Если вы используете VS2013 или новее, убедитесь, что код, на который ссылается атрибут "CodeBehind", а не "CodeFile", затем выполните шаги ниже

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %>
  • создать пустую страницу дизайнера (или очистить ее, если она уже существует "yourControl.ascx.designer.cs" )
  • в ascx (или aspx) скопируйте весь код, удалите его, затем сохраните. снова повторите его, затем сохраните.
  • теперь должен быть заполнен файл конструктора.
2

TL; DR;
Отредактируйте атрибут Inherits директивы ASPX page @Page и нажмите "Сохранить" . Ваш файл дизайнера должен быть регенерирован.

Убедитесь, что Inherits= <namespace> . <class_name > и CodeBehind= <class_name > .aspx.cs


Я пытался сделать это в проекте Sharepoint 2010, используя VS 2010 и TFS, и ни одно из вышеперечисленных решений не работало для меня. Прежде всего, параметр "Преобразование в веб-приложение" отсутствует в меню правой кнопки мыши в файле .ASPX при использовании TFS в VS 2010.

Этот ответ помог окончательно. Мой класс выглядел так:

namespace MyProjects.Finance.Pages
{
    public partial class FinanceSubmission : WebPartPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        // more code
    }
}

И моя директива @Page была (разрывы строк здесь для ясности):

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="FinanceSubmission.aspx.cs"
    Inherits="MyProjects.Finance.Pages.FinanceSubmission"
    MasterPageFile="~masterurl/default.master" %>

Сначала я изменил Inherits на MyProjects.Finance.Pages, нажал кнопку "Сохранить" , а затем вернул его обратно в MyProjects.Finance.Pages.FinanceSubmission и снова нажмите "Сохранить" ., И стена! Страница дизайнера была обновлена!

Надеюсь, это поможет кому-то, кто использует TFS!

2

Я сталкивался с той же проблемой уже много лет, работая в Visual Studio 2008. И я пробовал каждое "решение" на StackOverflow и десятках блогов, точно так же, как я уверен, что у вас все есть. И иногда они работают, а иногда и нет, точно так же, как я уверен, все вы столкнулись. И, по-видимому, это все еще проблема в VS2010 и VS2012.

Итак, пару месяцев назад я решил, что этого достаточно, и через несколько недель я построил инструмент под названием "Редизайн", который генерирует файлы .designer. Это с открытым исходным кодом в соответствии с лицензией BSD, с исходным кодом, доступным на SourceForge, - бесплатным для использования, бесплатным, чтобы украсть, свободно делать все, что угодно. И это то, что Visual Studio не делает так часто, что быстро и надежно генерирует файлы .designer.

Это автономный инструмент командной строки, который анализирует файлы .aspx и .ascx, выполняет всю необходимую магию отражения и выплескивает правильные файлы .designer. Он делает все разбор и размышления, чтобы не полагаться на существующий код, который мы все знаем слишком хорошо, нарушен. Он написан на С# против .NET 3.5, но он пытается избежать использования даже System.Web для чего угодно, кроме объявлений типа, и он не использует или не полагается на Visual Studio вообще.

Редизайн может генерировать новые файлы .designer; и он предлагает вариант -verbose, так что, когда что-то пойдет не так, вы получите гораздо лучшие сообщения об ошибках, чем "Исключение типа System.Exception было брошено". И там есть опция -verify, которая может быть использована для того, чтобы сообщать вам, когда ваши существующие файлы .designer нарушены. Отсутствуют элементы управления, неправильные объявления свойств, нечитаемые Visual Studio, или иначе просто пропущены.

Мы использовали его на моем рабочем месте, чтобы вытащить нас из пробок в течение большей части последнего месяца, и, хотя Redesigner все еще является бета-версией, он достаточно далеко продвинулся вперед, чтобы поделиться своим существованием с общественностью, Я скоро намереваюсь создать для него плагин Visual Studio, поэтому вы можете просто щелкнуть правой кнопкой мыши, чтобы проверить или регенерировать файлы дизайнера так, как вы всегда хотели. Но в то же время использование командной строки довольно простое и сэкономит вам много головных болей.

Во всяком случае, перейдите к загрузке копии Redesigner и прекратите вытягивать свои волосы. Вам это не всегда понадобится, но когда вы это сделаете, вы будете рады, что у вас есть это!

https://sourceforge.net/projects/redesigner/

  • 0
    кажется излишним для простого исправления
  • 1
    @ChrisMcGrath Может быть, излишним, но я чувствовал боль, которая побудила этот инструмент. Я восхищаюсь его самоотдачей, чтобы вовремя построить его :)
2

Просто чтобы добавить к длинному списку ответов здесь - я только что столкнулся с этой проблемой в VS2010 (SP1) с .aspx файлом. Я попытался добавить и удалить стандартные элементы управления ASP (которые работали в прошлом), но в конце концов мне пришлось удалить одну из строк runat = server из существующего элемента управления (и сохранить), чтобы заставить файл конструктора для регенерации.

2

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

Самир

2
  • Выберите все в файле конструктора и удалите все в файле, оставив его пустым, а затем сохраните
  • Выберите все в файле ASPX/ASCX и вырежьте все, а затем снова вставьте его обратно.
  • Файл конструктора должен был обновить код
  • 1
    Это сработало для меня! Я также сохранил файл .aspx после вырезания всего. Вставлен обратно, сохранен, и мой (ранее пустой) файл конструктора был полностью заполнен.
1

в проводнике решений щелкните правой кнопкой мыши и выберите преобразование в веб-приложение. Он снова сгенерирует все файлы дизайнеров.

1

Еще одна вещь, которая работала -

  • Вручную удалить, а затем создать файл конструктора в файловой системе.
  • Изменить проект.
  • Добавить код для включения дизайнера
    Например: <Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  • Обновить проект
  • Открыть как (c/p) x файл в режиме дизайна/просмотра и сохранить его.
  • Проверить файл дизайнера. Код будет там.
1

Это также может произойти, если вы обновите пространство имен и не обновляете пространство имен в файле конструктора. Исправить: обновить пространство имен в файле конструктора тоже.

1

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

Фактически посетил страницу, чтобы получить ASP.Net, чтобы сообщить мне об ошибке.

1

Если вы похожи на меня, и вы добавляете старые файлы .ASPX в более новый проект. Вероятно, вы забудете некоторые элементы управления, используемые на странице.

Если это так, во-первых, если есть несколько файлов, которые вы устанавливаете; Сначала закрепите по одному.

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

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

Наконец, щелкните правой кнопкой мыши ваш веб-проект и нажмите "Преобразовать в веб-приложение". Это введет нужные вам файлы дизайнеров.

Это самые лучшие шаги для устранения проблем.

1

У меня было две проблемы... устаревший AJAXControlkit - удалил старую dll, удалил старые элементы управления из панели инструментов, загрузил новую версию, загрузил toolbox и перетащил новые элементы управления на страницу (см. http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html)

Также имел орфографию в моем контроле над меткой (использовал "класс" вместо "cssclass" ).

Та

1

Это ошибка в среде IDE; Я видел это с VS 2003 года. Решение просто, но.

Сохраните ваши файлы. Полностью выйти из среды IDE (убедитесь, что процесс остановлен, задача mgr.)

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

1

Удалите файл designer.cs и щелкните правой кнопкой мыши на файле .aspx и выберите "Преобразовать в веб-приложение". Если есть проблемы с вашими объявлениями управления, например тегом, который не является хорошо сформированным, вы получите сообщение об ошибке, и вам нужно будет исправить неверный тег, прежде чем visual studio сможет успешно сгенерировать файл вашего дизайнера.

В моем случае, на данный момент, я обнаружил, что проблема заключалась в том, что я объявила элемент управления кнопки, который не был внутри тега формы с атрибутом runat = "server".

0
  • Закрыть designer.cs.

  • Измените файл aspx для просмотра.

  • Щелкните правой кнопкой мыши → Обновить.

  • Сохранить

0

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

Создание метода нестатического разрешения проблемы для меня.

0

Для VS2015... здесь приведен пример VB для перехода от проекта WebSite к проекту веб-приложения, который работал у меня. Ни один из других решений не работал у меня, поэтому я делюсь этим. Это не изящно, но работает.

Шаг 0: Заменить все "CodeFile =" на "CodeBehind =" в вашем проекте Шаг 1: Закройте решение. Шаг 2. Запустите домашнее приложение Windows со следующим кодом (ниже шаги). Шаг 3: Повторно откройте решение. Шаг 4. В обозревателе решений убедитесь, что вы показываете все файлы, и выполните поиск конструктора .vb(или designer.cs для С#). Шаг 5: выберите все недостающие файлы и включите их в свой проект. Шаг 6: Для каждого файла просмотрите главную страницу/элемент управления и сохраните его.

    private void button1_Click(object sender, EventArgs e)
    {
        ProcessDirectory(new DirectoryInfo(textBox1.Text));
    }

    private void ProcessDirectory(DirectoryInfo directory)
    {
        ProcessMask(directory, ".ascx", ".vb");
        ProcessMask(directory, ".aspx", ".vb");

        foreach (DirectoryInfo directoryInfo in directory.GetDirectories())
            ProcessDirectory(directoryInfo);
    }

    private void ProcessMask(DirectoryInfo directory, string maskStart, string maskEnd)
    {
        FileStream fs;
        foreach (FileInfo file in directory.GetFiles(string.Format("*{0}{1}", maskStart, maskEnd)))
        {
            string designerFileName = file.Name.Replace(string.Format("{0}{1}", maskStart, maskEnd), string.Format("{0}.designer{1}", maskStart, maskEnd));
            if (directory.GetFiles(designerFileName).Length == 0)
            {
                using (fs = File.Create(Path.Combine(directory.FullName, designerFileName)))
                {
                    fs.Close();
                }
            }
        }
    }
0

Я нахожусь в VS 2003, и никто из них не работал у меня. Что работало, так это открыть код в верхней части страницы .vb в разделе "Созданный конструктор веб-форм" (часть, в которой говорится, что там не нужно редактировать) и объявить его там, где система объявила все остальные элементы управления. Bizzare.

0

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

У меня была такая же проблема с файлом ресурсов. Я отредактировал его вне Visual Studio, и файл дизайнера не обновился должным образом.

Переименование файла помогло восстановить файл конструктора. Я только что переименовал его в первоначальное имя, и это сработало просто отлично!

0

Решение для меня:

Я только что скопировал страницу и вставил ее в ту же часть, а затем переименовал первую страницу (то, что когда-либо) и переименовал скопированную страницу в качестве исходной страницы. Теперь элементы управления доступны.

0

У меня возникла проблема с тем, что мои новые элементы управления не будут генерироваться в файле конструктора при объявлении в файле .ascx. Проблема заключалась в том, что я объявил их также в коде. Таким образом, удаление декларации в коде позади проблемы.

0

Я знаю, что опаздываю на вечеринку, но я подумал, что если вы попробуете принятый ответ от @Glenn Slaven и нынешний наивысший рейтинг от @Espo, вам все равно не повезло, следующее может спасти некоторых людей некоторые проблемы.

Пользовательские элементы управления (.ascx) - это то, что постоянно останавливает автогенерирование для меня. Я обнаружил, что в тех случаях, когда я использую другие User Control в своем User Control, он прерывает автоматическое поколение.

Решение, с которым я столкнулся, состояло в том, чтобы использовать трюк, который все мы знаем, для того, чтобы IntelliSense работал в файлах User Controls или Skin при использовании классов CSS из внешних источников. Вместо того, чтобы просто ссылаться на файл CSS, теперь я зарегистрирую другие пользовательские элементы управления, которые мне нужны. Это выглядит примерно так:

<% If False Then %>
<%@ Register TagPrefix="uc" TagName="Title" Src="~/controls/title.ascx" %>
<link rel="stylesheet" type="text/css" href="../css/common.css"  />
<% End If %>

После этого я сохраняю файл, который запрашивает автогенерацию для регенерации, и я снова работаю.

0

В моем случае это было исправлено, когда я добавил CodeBehind в раздел @Page.

0

Помимо всех хороших ответов, уже предоставленных, я хотел бы добавить к @johan-leino отличный ответ. В моем случае, по какой-то произвольной причине, атрибут CodeBehind был опущен из файла директивы @Page/.aspx. Аналогично, может быть полезно проверить атрибут CodeFile для директив @Control директив /.ascx(очевидно, в сочетании с атрибутом Inherits в обоих случаях).

В зависимости от точного сценария и причины, требуемых для "принудительного" регенерации .designer.cs, можно также попытаться отформатировать документ (потенциально указывающий на ошибку синтаксического анализа) до (быстрого) сохранения (независимо от того, были ли какие-либо изменения или нет) и проверьте список ошибок для предупреждений.

0

У меня была эта проблема много, и я снова сделал это. Я попытался исправить это, используя эти предложения, и ничего не получилось. Наконец, я обнаружил, что атрибут "Заголовок" в заголовке страницы дважды (я добавил в конец, не понимая, что VS добавил пустой заголовок = "" в начало) - удаление дополнительного атрибута, вызвавшего повторное создание VS2008 файл конструктора... Надеюсь, VS2010 устранит эту проблему, сообщив нам, почему создание файла конструктора не происходит...

- Дерек

0

У меня была эта проблема раньше. Обычно я просто нажимаю Enter, чтобы добавить строку, а затем дождаться появления плюса/минуса на странице html, и разработчик должен добавить то, что вам нужно. Мне также пришлось закрыть проект и снова открыть его, чтобы он работал.

0

В моем случае у меня просто отсутствовал регистр TagPrefix вверху. Как-то предыдущий разработчик работал без этого?

0

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

0
  • замените свой собственный тег на недопустимое имя тега. Сохраните его.
  • восстановить неверное имя тега обратно до имени настраиваемого тега. Сохрани это. Затем вам будет предложено проверить файлы *.designer.cs(или тихо изменить конструктор .cs) и создать правильную переменную пользовательского управления тегами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню