Иногда, когда я редактирую страницу или управляю, файлы .designer перестают обновляться новыми элементами управления, которые я помещаю на страницу. Я не уверен, что является причиной этого, но мне интересно, есть ли способ заставить Visual Studio заново создать файл .designer. Я использую Visual Studio 2008
РЕДАКТИРОВАТЬ: Извините, я должен был отметить, что я уже пытался:
- Закрытие и повторное открытие всех файлов и Visual Studio
- Внесение изменений в элемент управления runat = "server" на странице
- Удаление и повторное добавление директивы страницы
asp.net
visual-studio
visual-studio-2008
Glenn Slaven
источник
источник
<%@ Page
директивной строки; 3. Подождите секунду или две; 4. Поставьте «>» обратно. 5. Переключитесь на файл .cs, и вы увидите, что теперь он не содержит ошибок контрольных ссылок. Я делал это целую вечность, работает каждый раз, в каждой версии VS.Ответы:
Если вы откроете файл .aspx и переключитесь между представлением конструктора и представлением html и вернитесь назад, система предложит VS проверить элементы управления и добавить все, что отсутствует в файле конструктора.
В VS2013-15 есть команда « Преобразовать в веб-приложение» в меню « Проект» . До VS2013 эта опция была доступна в контекстном меню правой кнопкой мыши для файлов (c / p) x. Когда это будет сделано, вы увидите, что теперь у вас есть файл * .Designer.cs, и ваши элементы управления в Design HTML будут доступны для вашего элемента управления.
PS: Это не следует делать в режиме отладки, так как не все «перекомпилируется» при отладке.
Некоторые люди также сообщали об успехе (создавая резервную копию вашего файла .designer.cs и затем) удаляя файл .designer.cs. Повторно создайте пустой файл с тем же именем.
Есть много комментариев к этому ответу, которые добавляют советы о том, как лучше всего заново создать файл designer.cs.
источник
Ну, я нашел решение, которое работает, хотя мне это не очень нравится. Мне пришлось удалить файл .designer.cs, а затем воссоздать пустой файл с тем же именем. Когда я вернулся и снова сохранил файл aspx, файл конструктора был сгенерирован заново.
Хитрая!
источник
Я использую следующий метод, который работает каждый раз:
Рекомпилированные.
источник
<name>.aspx.designer.vb
чтобы заставить его работатьНедавно я увидел, что у меня такая же проблема. Visual Studio 2010 отказывается обновлять файл конструктора.
Оказывается, VS не изменяет файл конструктора для страницы, которая использует CodeFile (запуск страниц) вместо CodeBehind (DLL). Это верно независимо от того, сколько раз вы закрываете VS, перезагружаете проект, воссоздаете элементы управления или изменяете файл. Ничто не побудит VS переродить дизайнера. Как будто он не создает файл конструктора для страниц CodeFile, но требует его наличия.
Я изменил его на CodeBehind и сохранил страницу. Файл конструктора обновился сразу. Тогда я просто изменил его обратно, и все было по-прежнему золотым. Такое поведение кажется новым для VS 2010 / .NET 4.0, поскольку VS 2008 по умолчанию не страдает от этого.
Это эта часть:
Измените CodeFile на CodeBehind, сохраните, а затем верните.
источник
Существует еще одна возможность: в вашем файле .aspx может быть ошибка, из-за которой Visual Studio не может заново создать конструктор.
Если вы переключитесь в режим конструктора, он покажет, что элемент управления не может быть отображен. Исправление элемента управления (в моем случае это была дополнительная кавычка в свойствах) и перекомпиляция должны перезапустить конструктор.
источник
Большинство решений здесь не работают, если вы работаете с Visual Studio 2013 и, возможно, 2012. Microsoft, вероятно, представила некоторые оптимизации, чтобы сделать IDE более быстрой, следовательно, они сократили количество случаев, которые запускают генератор кода. Следующие сценарии, которые раньше работали, больше не работают:
Решение удивительно простое, но немного громоздкое. Чтобы запустить генератор кода, измените что-то, что потребует генерации designer.aspx.cs. Изменение содержимого, которое не влияет на код, например, стиль CSS или добавление текста, не вызовет генератор кода. Вы должны изменить ссылочный элемент управления. Вот как это сделать:
В ascx или aspx измените идентификатор элемента управления
в
Перейдите в ascx.cs или aspx.cs и убедитесь, что вы переименовали все ссылки на «MyLink» на «theLINK». Сохраните и сделайте сборку, и вам будет хорошо идти.
источник
единственный известный мне способ - удалить файл конструктора и выполнить преобразование в веб-приложение. Однако, когда вы делаете это, он обычно появляется с ошибкой, объясняющей, почему он не был автоматически регенерирован, во-первых, это обычно контрольная ссылка, которая не объявляется в заголовке страницы.
источник
int Id
свойство, которое прекрасно компилируется в C #, поскольку оно чувствительно к регистру. НоID="ControlName"
на странице aspx пытался сделатьId = "ControlName"
.Convert to Web App
сказал что-то вродеControlName cannot be converted to Int32
.Преобразование в веб-приложение не работает для меня.
Удаление designer.cs и вставка пустого файла designer.cs также не работали.
Но да, это сработало:
Выполнено. Создан новый файл designer.cs. :)
источник
Я часто обнаруживал, что копирование / вставка вызывает у меня такое поведение . Большинство случаев можно решить путем редактирования идентификатора серверного элемента управления (просто добавьте символ, а затем удалите его).
Также помните, что управление внутри таких вещей, как Repeaters, не отображается в файле конструктора.
И да, есть случаи, когда вам нужно выполнить волшебство удаления файла, перечисленное выше - но решение для изменения имени будет работать большую часть времени.
источник
Мой опыт показывает, что если вы хотите сделать, как в этой статье, как указано выше.
Ваш файл разметки (aspx / ascx) должен содержать атрибут CodeBehind = "MyPage.aspx.cs", иначе он не будет работать. Я писал об этом здесь .
источник
Я нашел способ решить эту проблему, не меняя код и не выполняя такие команды, как «Преобразовать в веб-приложение» - и это тоже просто!
Я обнаружил, что перезапуск Visual Studio часто решает проблему, но иногда это не так. В этих случаях, если вы закрываете Visual Studio, а затем удаляете все содержимое в каталоге «obj» для веб-проекта, прежде чем открывать его снова, он всегда работал для меня.
(при повторном запуске вы просто добавляете пробел и удаляете его снова, а затем нажимаете «Сохранить», чтобы файл конструктора был правильно восстановлен)
источник
(Следующее приходит из опыта с VS2005.)
Если вы отредактируете страницу ASPX во время отладки, то кодовая часть не будет обновлена новыми классами. Таким образом, вы должны прекратить отладку, тривиально отредактировать страницу ASPX (например, добавить кнопку или что-то в этом роде), затем нажать «Представление», затем удалить кнопку. Затем ваши дизайнерские файлы должны быть обновлены.
Если у вас другая проблема с VS2008, то я не могу помочь.
источник
Когда вы находитесь в режиме конструктора, щелкните правой кнопкой мыши на экране и нажмите «Обновить».
источник
Еще одна вещь, которая работала, была -
Например:
<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
источник
Если вы используете VS2013 или более позднюю версию, убедитесь, что код, на который ссылается атрибут «CodeBehind», а не «CodeFile», выполните следующие действия.
источник
источник
Вот что я испытал: выберите папку веб-сайта правой кнопкой мыши в обозревателе решений, выберите «Преобразовать в веб-приложение» для всех файлов aspx, которые будут сгенерированы дизайнерским файлом.
Самир
источник
Просто чтобы добавить сюда длинный список ответов - я только что столкнулся с этой проблемой в VS2010 (SP1) с файлом .aspx. Я попытался добавить и удалить стандартные элементы управления ASP (что работало в прошлом), но в итоге мне пришлось удалить одну из строк runat = server из существующего элемента управления (и сохранить), чтобы принудительно восстановить файл конструктора.
источник
Я сталкивался с той же проблемой уже много лет, работая в 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/
источник
TL; DR;
Отредактируйте
Inherits
атрибут@Page
директивы страницы ASPX и нажмите «Сохранить». Ваш дизайнерский файл должен быть восстановлен.Убедитесь, что
Inherits
= <namespace>. <Class_name> иCodeBehind
= <class_name> .aspx.csЯ пытался сделать это в проекте Sharepoint 2010, используя VS 2010 и TFS , и ни одно из приведенных выше решений не помогло мне. Прежде всего, опция «Преобразовать в веб-приложение» отсутствует в контекстном меню файла .ASPX при использовании TFS в VS 2010.
Этот ответ помог наконец . Мой класс выглядел так:
И моя
@Page
директива была (разрывы строки здесь для ясности):Я первый изменил
Inherits
к MyProjects.Finance.Pages , нажмите Сохранить, затем изменил его обратно в MyProjects.Finance.Pages.FinanceSubmission и снова нажмите кнопку Сохранить. И Уолла! Страница дизайнера была обновлена!Надеюсь, это поможет кому-то, использующему TFS!
источник
В Visual Studio:
1) Удалите файл aspx.designer.cs
2) Щелкните правой кнопкой мыши по вашему aspx-файлу и выберите «Преобразовать в веб-приложение». Это должно добавить aspx.designer.cs назад и в актуальном состоянии.
Если вы получаете сообщение об ошибке:
«Сбой при создании файла конструктора: метод или операция не реализованы».
Попробуйте закрыть Visual Studio, а затем снова откройте ваш проект и повторите шаг номер два
Как сгенерировать aspx.designer.cs в визуальной студии?
источник
Шаг 1 : Выберите весь код aspx, обрежьте [CTRL + X] этот код и сохраните.
Шаг 2 : снова вставьте тот же код на той же странице и сохраните снова
Теперь ваша страница .desinger обновится со всеми элементами управления на странице .aspx.
источник
Удалите файл designer.cs, затем щелкните правой кнопкой мыши файл .aspx и выберите «Преобразовать в веб-приложение». Если есть проблема с вашими объявлениями управления, такими как неправильная форма тега, вы получите сообщение об ошибке, и вам нужно будет исправить неверно сформированный тег, прежде чем Visual Studio сможет успешно заново сгенерировать ваш файл конструктора.
В моем случае в этот момент я обнаружил, что проблема заключалась в том, что я объявил кнопочный элемент управления, который не находится внутри тега формы с атрибутом runat = "server".
источник
Это ошибка в IDE; Я видел это с VS 2003. Хотя решение простое.
Сохраните ваши файлы. Полностью выйдите из IDE (убедитесь, что процесс останавливается, задание mgr.)
Вновь откройте решение, испачкайте разметку, сохраните. Исправлена.
источник
У меня были две проблемы ... устаревший AJAXControlkit - удалил старую библиотеку DLL, удалил старые элементы управления из панели инструментов, скачал новую версию, загрузил панель инструментов и перетащил новые элементы управления на страницу (см. Http://www.experts-exchange.com /Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html )
Также в моем элементе управления надписью были написаны ошибки (вместо «cssclass» использовался «класс»).
Ta
источник
У меня была проблема с тем, что мои новые элементы управления не будут генерироваться в файле конструктора при объявлении в файле .ascx. Проблема заключалась в том, что я также объявил их в коде. Таким образом, удаление объявления в коде позади решило мою проблему.
источник
Если вы похожи на меня и добавляете старые файлы .ASPX в более свежий проект. Возможно, вы забудете некоторые элементы управления, используемые на странице.
Если это так, то, во-первых, если вы устанавливаете несколько файлов; Исправьте по одному сначала.
Когда вы компилируете, исправляйте сгенерированные ошибки. Вероятно, они будут иметь одинаковые ошибки во всех файлах.
Затем, если у вас есть файлы Designer, удалите все вставленные файлы - конструктора. Затем убедитесь, что при компиляции нет никаких других ошибок, кроме файлов конструктора.
Наконец, щелкните правой кнопкой мыши свой веб-проект и выберите «Преобразовать в веб-приложение». Это вставит нужные вам дизайнерские файлы.
Это самые лучшие шаги для решения проблем.
источник
Одна вещь, которую никто не упомянул, это посетить страницу . Мой дизайнерский файл перестал восстанавливаться, потому что я включил пользовательский элемент управления, который не существовал (по разным причинам), и ничего из предложенного здесь не работало. По какой-то причине я не получил никаких ошибок в Visual Studio - кроме той, которая жаловалась на тот факт, что мои клиентские элементы управления не существовали, потому что они, конечно, не восстанавливались.
На самом деле потребовалось посещение страницы, чтобы ASP.Net сообщил мне об ошибке.
источник
Это также может произойти, если вы обновите пространство имен и не обновите пространство имен в файле конструктора. Исправлено: обновить пространство имен в файле конструктора тоже.
источник
Решение, которое сработало для меня:
Я просто скопировал страницу и вставил ее в ту же часть, затем переименовал первую страницу (какое бы имя она ни назвала) и переименовал скопированную страницу в исходную. Теперь элементы управления доступны.
источник