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

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

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

  • Закрытие и повторное открытие всех файлов и Visual Studio
  • Внесение изменений в элемент управления runat = "server" на странице
  • Удаление и повторное добавление директивы страницы

person Community    schedule 05.09.2008    source источник
comment
Это смешно, что в Visual Studio 2012 по-прежнему нет пункта контекстного меню для восстановления файлов дизайнера из исходных файлов? Это похоже на невозможность восстановить поврежденную DLL. Я этого не понимаю .. Особенно с внешним контролем версий и внешними редакторами вы оставляете Visual Studio искалеченной. Пустая трата денег, если вы спросите меня. Я на самом деле пытаюсь восстановить конструкторы файлов ресурсов. Мне удалось восстановить его edit, но это из безвестности ... Ох !!! 1   -  person bambams    schedule 21.11.2012
comment
@bamccaig, если бы у меня было пенни за каждую такую ​​странную функцию, я был бы богаче Билла Гейтса. Если вы думаете, что это плохо, посмотрите, где Outlook Express хранит свои почтовые данные. Он спрятан глубоко в папке пользователя под загадочным именем папки, которое по умолчанию скрыто.   -  person ATL_DEV    schedule 15.07.2014
comment
Есть ли какое-нибудь решение для VS 2015?   -  person Anton    schedule 25.10.2015
comment
См. Связанный stackoverflow.com/questions/6508252/ для других попыток.   -  person goodeye    schedule 13.10.2016
comment
Это не постоянное исправление, но оно восстанавливает ссылки на элементы управления в файле .cs: 1. Откройте связанный файл .aspx; 2. Удалите единственный ›в конце строки директивы <%@ Page; 3. Подождите секунду или две; 4. Вставьте ›обратно. 5. Переключитесь на файл .cs, и вы увидите, что теперь он свободен от ошибок контрольных ссылок. Я занимаюсь этим уже много лет, работает каждый раз, в каждой версии VS.   -  person ingredient_15939    schedule 01.03.2017
comment
Наткнулся на это в 2012 году только сейчас. Другие решения проблемы с файлом дизайнера и изменения имен элементов управления не работали. Переименование страницы и ее переименование заставили файлы дизайнера повторно сгенерировать / обновить.   -  person PoloHoleSet    schedule 25.05.2018
comment
@ ингридиент_15939 VS2019 и ваш комментарий помогли мне. Благодаря тонну!   -  person abhi    schedule 07.05.2020


Ответы (48)


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

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

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

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

К этому ответу есть много комментариев, которые добавляют советы о том, как лучше всего воссоздать файл designer.cs.

person Community    schedule 05.09.2008
comment
Это сработало для меня только после закрытия каждого экземпляра (даже с совершенно разными решениями) VS2008. - person Kevin; 18.02.2010
comment
Я обнаружил, что переход из режима отладки в режим выпуска помогает мне понять трюк, спасибо - person Chris; 22.06.2010
comment
Я копировал файлы с веб-сайта в веб-приложение, а преобразование в веб-приложение сделало это за меня. Та! - person Alxwest; 11.04.2012
comment
Просто хотел сказать, что у меня была такая же ошибка, и я пробовал все на этой странице, но ничего не работало. Оказалось, что мне не хватало тега закрытия в блоке div с runat = server. Запуск VS-2008. - person Ber53rker; 16.05.2012
comment
Чтобы отобразить преобразование в веб-приложение, сначала необходимо удалить файл Designer.cs, щелкнув правой кнопкой мыши файл aspx в обозревателе решений и выбрав «Удалить». Это сработало для меня в VS 2010. - person DeveloperDan; 17.05.2012
comment
переключение решения между представлением дизайна и представлением html сработало для меня - person ravidev; 13.11.2013
comment
Хуже того, в VS2013 больше не отображается преобразование в веб-приложение. См.: connect.microsoft.com/VisualStudio/feedback/details/806283/ - person JohnnyBizzle; 30.01.2014
comment
VS2013 имеет Преобразовать в веб-приложение в меню Проект. Просто больше нет в контекстном меню. - person Dennis Burton; 21.07.2014
comment
@DennisBurton Я использую VS2013, и преобразование в веб-приложение помогло мне. Я изменил все пространства имен. - person Juanito; 24.02.2015
comment
@DennisBurton, ваш комментарий решил мою проблему. Мы потратили ЧАСЫ, пытаясь понять, как заставить появиться пункт контекстного меню, хотя все это время он был прямо в главном меню проекта. Отличный комментарий, и должен быть ответ! - person Brien Foss; 22.09.2016
comment
Чтобы отобразить преобразование в веб-приложение, необходимо выбрать узел проекта или решения в обозревателе решений. В противном случае его не будет в меню проекта. - person Tom McDonald; 09.11.2016
comment
Мне помогло удаление файла designer.cs и повторное добавление его вручную. Просто добавьте файл как HTML-файл, назовите его ‹filename› .designer.cs, удалите содержимое HTML из файла и выполните сборку. - person Jordec; 09.03.2017
comment
Для меня у меня были желтые восклицательные знаки рядом со всеми ссылками на проекты решений. Пришлось удалить ссылки и добавить их обратно. - person Vaibhav Garg; 01.05.2017
comment
работал у меня (конвертировать в веб-приложение) в 2012 году. Вы можете делать это по одному файлу за раз, если вы проявляете осторожность, просто щелкнув файл правой кнопкой мыши. - person naskew; 15.10.2017
comment
Я пробовал это последние 2 часа и не могу восстановить файл дизайнера ... есть ли другой способ заставить воссоздать файл дизайнера. - person user1567194; 14.12.2017
comment
Если вы хотите удалить файлы designer.cs, делайте это из Visual Studio, а не из командной строки, в противном случае преобразование в веб-приложение не будет повторно создавать файлы designer.cs. - person desm; 25.01.2018
comment
Возможно, я нашел простое решение: 1) Добавить отсутствующий файл * .designer.cs и включить его в проект. 2) На странице ASPX измените CodeFile = на CodeBehind = 3) Сохраните страницу ASPX. Измените CodeBehind = обратно на CodeFile = - person Derek Wade; 05.02.2020

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

Доджи!

person Community    schedule 05.09.2008
comment
У меня это тоже сработало. Не идеально. Понятия не имею, почему исходный файл Desginer перестал обновляться должным образом. - person Iain Holder; 29.10.2008
comment
У меня это не сработало. Теперь у меня пустой файл, и весь код не работает !!! Перезагрузка ... - person DiningPhilanderer; 19.03.2009
comment
Это сработало для меня. Я не забыл удалить оригинал, создать новый файл designer.cs с тем же именем, закрыть новый файл, слегка изменить файл .as (p / c) x, чтобы принудительно сохранить, и все прошло хорошо. - person TJB; 16.04.2009
comment
если у вас есть ошибка компиляции представления, она больше не вернется. Как правило, именно поэтому он вообще перестает восстанавливаться. Вам нужно включить компиляцию просмотра, чтобы увидеть это, что не так просто. - person DevelopingChris; 11.02.2010
comment
Мне также пришлось включить пустой файл в свой проект. - person JP Hellemons; 25.11.2013
comment
Спасибо за дополнительную информацию @TJB, я без особой радости перепробовал все, что рекомендовано в Интернете. Совсем недавно я открыл файл designer.vb в Notepad ++, удалил все в нем и сохранил как пустой. Он по-прежнему не восстанавливается при восстановлении всего. Я просто добавил новый div в источник .aspx и сохранил его, сделал перестройку, и НАКОНЕЦ, он заработал. - person Resource; 01.07.2015
comment
Спасибо за решение, у меня была аналогичная проблема. Я создал файл ASPX, используя Добавить | Создать из шаблона | Aspx с главной страницей. Он сгенерировал только файл ASPX, это решение было единственным способом, который я нашел, чтобы заставить его сгенерировать файл дизайнера. Мне также пришлось вручную создать код файла. Думаю, я больше не буду использовать этот шаблон (VS 2015, обновление 2) ... - person Scott Gartner; 16.05.2016
comment
Если вы по-прежнему не можете создать designer.cs, вам следует щелкнуть правой кнопкой мыши файл aspx и просмотреть Desginer. Мой VS 2013, и он работает как шарм - person Rocky Andra; 01.09.2016
comment
Отличное использование слова Хитрый. - person Paul; 12.10.2017
comment
Это действительно расстраивает, почему такое поведение непоследовательно. После того, как мое редактирование файла сработало, когда сработало преобразование в веб-приложение, и сегодня мне пришлось создать пустой файл дизайнера в папке. Я использую VS 2019. - person abhi; 05.06.2020
comment
Что означает "включить компиляцию просмотра"? @DevelopingChris - person Jake Gaston; 12.11.2020

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

  • Выберите весь код на переднем плане (разметка HTML и т. Д.) В редакторе файла aspx / ascx.
  • Резать.
  • Сохранить.
  • Вставить.
  • Сохранить.

Перекомпилируйте.

person Community    schedule 29.01.2009
comment
Я думаю, что просто удаление одного элемента управления и его повторное добавление имеет тот же эффект. - person chris; 03.08.2009
comment
Я сделал это, и у меня это сработало. Однако мне пришлось создать пустой файл с именем <name>.aspx.designer.vb, чтобы он заработал. - person Tahir Hassan; 29.09.2016

Недавно я увидел, что у меня такая же проблема. 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, сохраните и вернитесь.

person Community    schedule 22.01.2011
comment
Поздно к этой теме. Ни один из описанных выше ответов не приводит к тому, что элементы управления должны быть перечислены в файле * .aspx.designer.cs. Я надеялся, что это произойдет, но он по-прежнему не требует объявления элементов управления в файле * .aspx.designer.cs. Я использую VS 2010 Pro SP1. Я пытаюсь заставить это работать с любым из файлов по умолчанию, которые IDE создает в / Account, например ChangePassword.aspx. Спасибо. - person paparush; 31.10.2011
comment
Мой был установлен на CodeFile, я изменил на CodeBehind, сохранил, вернулся в CodeFile, сохранил, все в Golden. Предыдущие попытки исправить это не помогли мне. VS 2010 Pro - person Daniel Bragg; 19.03.2016

Существует еще одна возможность: в вашем ASPX-файле может быть ошибка, не позволяющая Visual Studio повторно создать конструктор.

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

person Community    schedule 06.10.2008
comment
У меня была та же проблема, пользовательский элемент управления имел ошибки, поэтому страницы, которые используют пользовательский элемент управления, имели несвязанные ошибки из-за ошибок в пользовательском элементе управления. - person Ronen Festinger; 28.11.2013
comment
По той же причине. У меня был добавлен неподдерживаемый атрибут visible = false к кнопке asp. Я удалил его, и код дизайнера был заново сгенерирован. - person chingNotCHing; 28.02.2019

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

  1. Удалите файл aspx или ascx - больше не проверяет этот случай
  2. Вырежьте все содержимое и вставьте его в файл aspx или ascx - больше не работает, ссылки не меняются.
  3. Преобразовать в веб-приложение - опция больше не доступна
  4. Произвольное изменение содержимого файла 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». Сохраните и создайте, и все будет хорошо.

person Community    schedule 29.01.2014
comment
Очень хороший отзыв об изменениях в более новой версии Visual Studio. Что сработало для меня вместо того, чтобы возиться с идентификаторами, как указано выше, так это стереть файл дизайнера, затем добавить новый, безопасный элемент управления, такой как ‹asp: PlaceHolder ID = Foo runat = server /›, а затем сохранить для запуска регенерация. Тогда даже если вы забудете удалить его, ничего не изменится. - person Jordan Rieger; 15.07.2014
comment
3. «Преобразовать в веб-приложение» становится доступным в меню «ПРОЕКТ», если выбран соответствующий файл. - person WynandB; 22.07.2014
comment
Хм. К сожалению, этот вариант недоступен, если это уже веб-приложение. - person ATL_DEV; 23.07.2014
comment
Быстрое изменение - отредактировать часть пространства имен атрибута Inherits =. Это должно отредактировать пространство имен в файле .designer и восстановить все содержимое внутри. Я просто пробовал это с VS2013.3. - person David Russell; 26.08.2014
comment
Привет, я обычно пытаюсь использовать способ, который вы предоставили, но проблема в том, что другой пользователь не может создать файл g.cs, а это может сделать только администратор. Мы используем TFS, с использованием идентификаторов пользователей нескольких разработчиков в VS, мы можем сгенерировать g.cs. Какие права требуются для создания файлов g.cs на сервере, TFS и SP? - person nirav; 21.05.2015
comment
@WynandB, ваше решение сработало для меня. Если у кого-то возникают проблемы с поиском этой опции в меню, сначала удалите файл дизайнера, прежде чем искать его. - person Bryan Rayner; 13.07.2015

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

person Community    schedule 09.09.2008
comment
Извините, это не сработало, оно работало в VS 2008 для меня с тех пор, как я начал его использовать. На вашей странице есть синтаксическая ошибка? Вы должны получить диалоговое окно, в котором сообщается, что исправить, чтобы оно работало. - person DevelopingChris; 10.03.2010
comment
Это сработало для меня. Класс кода программной части имел свойство int Id, которое отлично компилировалось на C #, поскольку оно чувствительно к регистру. Но ID="ControlName" на странице aspx пытался сделать Id = "ControlName". Convert to Web App сказал что-то вроде ControlName cannot be converted to Int32. - person Nelson Rothermel; 13.12.2010

Конвертировать в веб-приложение у меня не получилось.

Удаление файла designer.cs и вставка пустого файла designer.cs тоже не помогло.

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

  1. Выбрать все (Default.aspx)
  2. Резать
  3. Сохранить Default.aspx
  4. Вставить
  5. Сохранить Default.aspx

Выполнено. Создан новый файл designer.cs. :)

person Community    schedule 14.02.2014
comment
Я могу подтвердить, что это работает в VS2013, я только что сделал это, и мои проблемы были решены. - person ToastyMallows; 12.03.2014
comment
Ты. имеют. есть. к. быть. шутя. меня. Это сработало для меня в VS2015, когда преобразование, как в выбранном ответе, не было. - person GraehamF; 13.10.2016

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

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

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

person Community    schedule 11.05.2009
comment
Это ошибка, которую я повторяю много раз. Если вы копируете HTML с одной страницы на другую и у вас есть элементы управления с runat = server, элементы управления будут переименованы во избежание конфликта. Однако, если вы вставите внутри тегов html-комментариев ‹! - whaterver -›, идентификаторы элементов управления не будут изменены, и любой конфликт остановит повторное создание файла дизайнера, потому что есть два элемента управления с одинаковым идентификатором. Это потому, что элементы управления внутри тегов комментариев HTML также создаются. ;) - person tomasofen; 01.12.2013

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

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

person Community    schedule 26.03.2009
comment
Добавлен этот атрибут, затем сохранен; ничего такого. Затем удалил Inherits, сохранил, восстановил и, вуаля, файл кода дизайнера был обновлен! Эта надоедливая особенность ловит меня каждый раз :-( - person GlennG; 11.05.2012
comment
обе ссылки мертвы = ( - person Maslow; 13.02.2014

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

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

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

person Community    schedule 01.02.2013
comment
У меня возникла проблема с устаревшим приложением, за поддержку которого я отвечал. Я хочу поблагодарить вас за то, что указали на это. Мне не разрешено конвертировать в веб-приложение, создавать новое решение или делать что-либо, кроме исправления ошибок. Из-за меня дизайнер постоянно вылетал из строя. Но пока это помогает. - person Jamie Taylor; 11.07.2013

(Следующее исходит из опыта работы с VS2005.)

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

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

person Community    schedule 05.09.2008
comment
Пробежался к этому с VS.Net 2010 ... должен был сделать именно это ... Спасибо @EndangeredMassa за подсказку ... Я тоже проходил через это в дни VS.Net 2002/2003 ... Желаю мне знал это тогда;) - person Richard B; 02.06.2011

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

person Community    schedule 14.09.2010

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

  1. Вручную удалите, а затем создайте файл дизайнера в файловой системе.
  2. Редактировать файл проекта.
  3. Добавьте код для включения дизайнера
    Пример: <Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  4. Перезагрузить проект
  5. Откройте как (c / p) x файл в режиме дизайна / просмотра и сохраните его.
  6. Проверить файл дизайнера. Код будет там.
person Community    schedule 12.11.2013

Если вы используете VS2013 или более позднюю версию, убедитесь, что код указан с атрибутом «CodeBehind», а не «CodeFile», затем выполните следующие действия.

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

  • Выделите все в файле дизайнера и удалите все в файле, оставив его пустым, а затем сохраните
  • Выделите все в файле ASPX / ASCX и вырежьте все, а затем снова вставьте обратно
  • Файл конструктора должен был восстановить код
person Community    schedule 06.10.2008
comment
Это сработало для меня! Я также сохранил файл .aspx после вырезания всего. Вставлен обратно, сохранен, и мой (ранее пустой) файл дизайнера был полностью заполнен. - person DaveD; 19.03.2012

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

Самир

person Community    schedule 15.01.2010

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

person Community    schedule 28.06.2012

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

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

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

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

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

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

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

person Community    schedule 21.01.2013
comment
кажется излишним для простого исправления - person Chris McGrath; 03.10.2013
comment
@ChrisMcGrath Может быть, перебор, но я почувствовал боль, вызвавшую этот инструмент. Я восхищаюсь его самоотверженностью, потраченной на его создание :) - person Jordan Rieger; 15.07.2014

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

Убедитесь, что 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!

person Community    schedule 19.12.2014

В Visual Studio:

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

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

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

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

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

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

person Community    schedule 17.04.2015
comment
Преобразовать в веб-приложение не существует в контекстном меню файла aspx. По крайней мере, в VS Professional 2015 этого нет. - person Chris Walsh; 26.11.2015

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

person Community    schedule 17.03.2016
comment
Выберите файл aspx, разверните и в верхнем меню проекта щелкните параметр «Преобразовать в Интернет». - person fcm; 12.02.2021

  1. Шаг 1: выберите весь свой aspx-код, вырежьте [CTRL + X] этот код и сохраните.

  2. Шаг 2: снова вставьте тот же код на ту же страницу и снова сохраните.

Теперь ваша страница .desinger обновится со всеми элементами управления на странице .aspx.

person Community    schedule 16.07.2019

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

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

person Community    schedule 10.02.2009

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

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

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

person Community    schedule 30.04.2010

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

Также имелась орфографическая ошибка в моем элементе управления меткой (использовала «класс» вместо «cssclass»).

Ta

person Community    schedule 08.07.2010

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

person Community    schedule 19.07.2011

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

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

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

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

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

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

person Community    schedule 02.06.2011

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

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

person Community    schedule 17.05.2012

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

person Community    schedule 13.07.2012

Решение, которое сработало для меня:

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

person Community    schedule 21.05.2012

  1. Закройте файл designer.cs.

  2. Измените свой aspx-файл на представление дизайна.

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

  4. Сохранить

person Community    schedule 19.10.2017

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

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

person Community    schedule 21.02.2010

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

person Community    schedule 17.06.2010

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

person Community    schedule 06.07.2010

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

- Дерек

person Community    schedule 09.09.2010

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

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

person Community    schedule 24.11.2010

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

person Community    schedule 29.04.2011

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

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

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

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

person Community    schedule 01.06.2011

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

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

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

person Community    schedule 24.06.2013

Я использую VS 2003, и ни один из них у меня не работал. Что сработало, так это открыть код в верхней части страницы .vb в разделе, помеченном как созданный код Web Form Designer (часть, которая запрещает редактировать там), и объявить его там, где система объявила все остальные элементы управления. Bizzare.

person Community    schedule 14.08.2013

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

Шаг 0: Замените все «CodeFile =» на «CodeBehind =» в вашем проекте. Шаг 1: Закройте решение. Шаг 2. Запустите собственное приложение для Windows с помощью следующего кода (шаги ниже). Шаг 3: Откройте решение повторно. Шаг 4. В обозревателе решений убедитесь, что вы показываете все файлы, и выполните поиск по запросу designer.vb (или designer.cs для C #). Шаг 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();
                }
            }
        }
    }
person Community    schedule 17.01.2017

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

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

person Community    schedule 12.04.2017

Одно из моих решений, которое работает для меня.

  1. Закройте Visual Studio
  2. Удалить скрытый каталог .vs
  3. Удалить существующий файл .sln
  4. загрузить проект в Visual Studio с помощью файла .csproj
person Community    schedule 11.07.2018

В Visual Studio 2019 ниже приведены шаги:

  1. Создать webform1.aspx
  2. Скопируйте свой aspx-код и вставьте webform1.aspx
  3. Скомпилируйте свой проект, у вас должен быть код дизайнера внутри webform1.aspx.designer.cs
  4. Теперь вы можете скопировать код дизайнера и использовать его в исходной веб-форме.
person Community    schedule 01.08.2020

Если вы видите это при использовании Visual Basic 2019 и нажали на подтверждение окончательного удаления этого файла, вы можете восстановить файлы designer.cs из корзины ... они будут автоматически восстановлены в Visual Basic. Я просто сделал это и нашел свой файл в том виде, в каком он был.

person Community    schedule 01.03.2021

Решение заключалось в том, чтобы я сменил None на Compile в .csproj файле.

<Compile Include="Logout.aspx.designer.cs">
      <DependentUpon>Logout.aspx</DependentUpon>
</Compile>
person Community    schedule 04.04.2021