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

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

EDIT: Извините, я должен был заметить, что я уже пробовал:

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

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

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

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

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

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

Хитрая!

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

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

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

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

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

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

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

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

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

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

  

в

  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другое дело, что это было –

  1. Вручную удалите & затем создайте файл конструктора в файловой системе.
  2. Изменить файл проекта .
  3. Добавить код для включения дизайнера
    Например: FileName.ascx
  4. Перезагрузить страницу
  5. Открыть как (c / p) x файл в режиме дизайна / просмотра и сохранить его.
  6. Проверьте файл дизайнера. Код будет там.

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

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

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

Самир

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

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

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

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

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

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

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

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

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

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


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

Этот ответ помог наконец . Мой class выглядел так:

 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 , нажал Save, а затем изменил его обратно на MyProjects.Finance.Pages.FinanceSubmission и снова нажал Save. И стена! Страница дизайнера была обновлена!

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

В Visual Studio:

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

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

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

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

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

Как создать aspx.designer.cs в visual studio?

Удалите файл 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 )

Также имел опечатку в моем контроле над ярлыками (использовал «class» вместо «cssclass»).

Ta

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

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

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

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

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

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

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

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

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

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

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

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

  • Не удалось подключиться к серверу ASP.Net Development Server
  • Request.UrlReferrer null?
  • Не удалось удалить Visual Studio 2008, не удалось открыть ключ «Компоненты»
  • Как запустить NUnit в режиме отладки из Visual Studio?
  • Как я могу заставить Visual Studio 2008 Window Forms создать форму, которая реализует абстрактный базовый class?
  • Комбинация клавиш Visual Studio для автоматического добавления необходимого оператора 'using'
  • В проекте установки Visual Studio, как мне создать сценарий удаления?
  • Общий базовый class для WinForm UserControl
  • Этот тип проекта не поддерживается этой установкой
  • Почему разработчику WPF не удается загрузить библиотеки, вызывающие неуправляемые библиотеки DLL?
  • Как принудительно использовать компилятор C ++ для использования конкретной версии CRT?
  • Interesting Posts
    Давайте будем гением компьютера.