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

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

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

  • Закрытие и повторное открытие всех файлов и Visual Studio
  • Внесение изменений в элемент управления runat = "server" на странице
  • Удаление и повторное добавление директивы страницы
5.09.2008 06:21:06
Смешно ли, что в 2012 году в Visual Studio все еще не было пункта контекстного меню для восстановления файлов дизайнеров из исходных файлов? Это похоже на неспособность восстановить поврежденную DLL. Я не понимаю .. Особенно с внешним управлением исходным кодом и внешними редакторами, вы оставляете калекой Visual Studio. Пустая трата денег, если вы спросите меня. Я на самом деле пытаюсь восстановить ресурсы дизайнеров файлов. Мне удалось отредактировать его, но это произошло из-за неясности ... Ауг !!! 1
bambams 21.11.2012 15:06:05
@ bamccaig, если бы у меня была копейка за каждую странную «черту», ​​подобную этой, я был бы богаче, чем Билл Гейтс. Если вы считаете, что это плохо, посмотрите, где Outlook Express хранит свои почтовые данные. Он находится глубоко в папке пользователя под загадочным именем папки, которое по умолчанию скрыто.
ATL_DEV 15.07.2014 03:41:13
Есть ли решение для VS 2015?
Anton 25.10.2015 10:19:37
См. Связанные с stackoverflow.com/questions/6508252/… для других попыток.
goodeye 12.10.2016 21:08:52
Не постоянное исправление, но это восстанавливает контрольные ссылки в файле .cs: 1. Откройте связанный файл .aspx; 2. Удалить один «>» в ​​конце <%@ Pageдирективной строки; 3. Подождите секунду или две; 4. Поставьте «>» обратно. 5. Переключитесь на файл .cs, и вы увидите, что теперь он не содержит ошибок контрольных ссылок. Я делал это целую вечность, работает каждый раз, в каждой версии VS.
ingredient_15939 1.03.2017 04:55:41
30 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

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

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

367
3.12.2019 20:10:33
Это сработало только после закрытия каждого экземпляра (даже с совершенно разными решениями) VS2008
Kevin 18.02.2010 17:50:36
Я обнаружил, что переход от режима отладки к режиму выпуска помогает мне в этом, Спасибо
Chris 22.06.2010 16:06:26
Просто хотел сказать, что у меня была та же ошибка, и я попробовал все на этой странице, но ничего не получалось. Выяснилось, что мне не хватает тега ">" в div с runat = "server". Бег ВС-2008.
Ber53rker 16.05.2012 14:07:08
Чтобы отобразить «Преобразовать в веб-приложение», сначала необходимо удалить файл Designer.cs ПРАВЫМ, щелкнув файл aspx в обозревателе решений и выбрав «Удалить». Это работало для меня в VS 2010.
DeveloperDan 16.05.2012 21:02:36
VS2013 имеет Преобразовать в веб-приложение в меню Проект. Просто больше нет в контекстном меню.
Dennis Burton 21.07.2014 19:35:42

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

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

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

4
5.09.2008 06:26:24
Столкнулся с этим с VS.Net 2010 ... должен был сделать именно это ... Спасибо @EndangeredMassa за подсказку ... Я имел обыкновение проходить это и в дни VS.Net 2002/2003 ... Хотел бы я знал это тогда;)
Richard B 2.06.2011 12:47:10

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

Хитрая!

94
3.08.2009 00:28:17
Это просто сработало для меня тоже. Не идеально. Понятия не имею, почему оригинальный файл desginer перестал корректно обновляться.
Iain Holder 29.10.2008 10:16:22
Это не сработало для меня. Теперь у меня есть пустой файл, и весь код не работает !!! Перезагрузка ...
DiningPhilanderer 19.03.2009 20:25:09
Это сработало для меня. Я удостоверился, что удалил оригинал, создал новый файл designer.cs с тем же именем, закрыл новый файл, слегка изменил файл .as (p / c) x для принудительного сохранения, тогда все было хорошо.
TJB 15.04.2009 21:43:43
если у вас будет ошибка компиляции вида, она не вернется. Как правило, именно поэтому он перестает восстанавливаться в первую очередь. Вам нужно включить компиляцию вида, чтобы увидеть его, что не так просто.
DevelopingChris 11.02.2010 13:53:57
Я также должен был включить пустой файл в свой проект.
JP Hellemons 25.11.2013 09:50:36

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

14
9.09.2008 14:28:10
Извините, это не сработало, оно работало в VS 2008 для меня, так как я начал его использовать. Есть ли синтаксическая ошибка на вашей странице? Вы должны получить диалоговое окно, которое говорит вам, что нужно исправить, чтобы закончить его работу.
DevelopingChris 9.03.2010 21:48:48
Это сработало для меня. Класс code-behind имеет int Idсвойство, которое прекрасно компилируется в C #, поскольку оно чувствительно к регистру. Но ID="ControlName"на странице aspx пытался сделать Id = "ControlName". Convert to Web Appсказал что-то вроде ControlName cannot be converted to Int32.
Nelson Rothermel 13.12.2010 17:43:00

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

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

37
6.10.2008 22:05:54
У меня была та же проблема, пользовательский элемент управления имел ошибки, поэтому страницы, использующие пользовательский элемент управления, имели несвязанные ошибки из-за ошибок в пользовательском элементе управления.
Ronen Festinger 28.11.2013 15:15:48
По той же причине. У меня был неподдерживаемый атрибут visible = "false", добавленный к кнопке asp. Я удалил его, и дизайнерский код был сгенерирован заново.
chingNotCHing 28.02.2019 03:05:41
  • Выберите все в файле дизайнера и удалите все в файле, оставив его пустым, а затем сохраните
  • Выберите все в файле ASPX / ASCX и обрежьте все, а затем снова вставьте его обратно
  • Файл конструктора должен был восстановить код
2
6.10.2008 22:09:16
Это сработало для меня! Я также сохранил файл .aspx после вырезания всего. Вставлен обратно, сохранен, и мой (ранее пустой) файл конструктора был полностью заполнен.
DaveD 18.03.2012 20:46:16

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

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

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

78
29.01.2009 16:19:44
Я думаю, что удаление одного элемента управления и его повторное добавление имеет тот же эффект.
chris 3.08.2009 00:41:29
Я сделал это, и это сработало для меня. Тем не менее, я должен был создать пустой файл с именем, <name>.aspx.designer.vbчтобы заставить его работать
Tahir Hassan 29.09.2016 13:05:23

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

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

1
10.02.2009 19:52:37

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

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

5
26.03.2009 20:08:42
Добавил этот атрибут, затем сохранил; ничего. Затем удалил Наследует, сохранил, восстановил и вуаля файл кода дизайнера обновился! Эта утомительная особенность ловит меня каждый раз :-(
GlennG 11.05.2012 13:52:24
обе ссылки мертвы = (
Maslow 12.02.2014 21:48:35

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

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

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

6
11.05.2009 02:57:54
Такая ошибка у меня много раз. Если вы копируете HTML с одной страницы на другую и у вас есть элементы управления с runat = "server", элементы управления будут переименованы, чтобы избежать конфликта. Однако если вставить теги html comment <! - whaterver ->, идентификаторы элементов управления не будут изменены, и любой конфликт остановит создание файла конструктора, поскольку существует два элемента управления с одинаковым идентификатором. Это связано с тем, что элементы управления внутри html-тегов "comments" также создаются. ;)
tomasofen 30.11.2013 20:10:14

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

Самир

2
15.01.2010 19:30:20
  1. замените свой пользовательский тег на неверное имя тега. Сохрани это
  2. восстановить неверное имя тега обратно к имени пользовательского тега. Сохрани это. Затем вам будет предложено извлечь файлы * .designer.cs (или изменить молча designer.cs) и создать правильную переменную для управления пользовательскими тегами.
0
29.01.2010 07:13:41

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

0
21.02.2010 22:58:57

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

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

Вновь откройте решение, испачкайте разметку, сохраните. Исправлена.

1
30.04.2010 06:25:09

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

0
17.06.2010 17:42:10

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

0
6.07.2010 15:08:15

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

Кроме того, в моем элементе управления надписью были написаны ошибки (вместо «cssclass» использовался «класс»).

Ta

1
8.07.2010 04:55:37

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

- Дерек

0
9.09.2010 16:36:56

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

4
14.09.2010 06:08:43

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

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

0
24.11.2010 06:54:05

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

64
22.01.2011 20:18:08
Поздно к этой теме. Ни один из ответов, описанных выше, не вынуждает элементы управления быть перечисленными в * .aspx.designer.cs. Я надеялся, что это произойдет, но он все еще не заставляет элементы управления быть объявленными в файле * .aspx.designer.cs. Я использую VS 2010 Pro SP1. Я пытаюсь заставить это работать с любыми файлами по умолчанию, которые IDE генерирует в / Account, такими как ChangePassword.aspx. Спасибо.
paparush 31.10.2011 17:12:10
Мой был установлен на CodeFile, я изменил на CodeBehind, сохранил, обратно на CodeFile, сохранил, все золотое. Предыдущие попытки исправить это не сделали для меня. VS 2010 Pro
Dan 18.03.2016 21:05:57

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

0
29.04.2011 16:13:19

Я знаю, что опаздываю на вечеринку, но я подумал, что если после попытки принять принятый ответ @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 %>

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

0
1.06.2011 18:09:04

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

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

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

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

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

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

1
4.01.2012 13:50:30

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

1
19.07.2011 10:51:21

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

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

1
17.05.2012 23:11:29

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

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

1
22.10.2012 00:10:48

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

2
28.06.2012 13:44:13

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

1
13.07.2012 08:51:40

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

Наконец, пару месяцев назад я решил, что этого достаточно, и через несколько недель я создал инструмент под названием «Редизайнер», который генерирует файлы .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/

2
21.01.2013 06:23:37
кажется излишним для простого исправления
Chris McGrath 3.10.2013 16:48:51
@ChrisMcGrath Может быть, излишним, но я почувствовал боль, которая побудила этот инструмент. Я восхищаюсь его преданностью вкладывать время, чтобы построить его :)
Jordan Rieger 14.07.2014 21:25:56