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

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

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

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

30 ответов


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

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

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

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


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

изворотливые!


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

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

перекомпиляции.


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

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

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

вот эта часть:

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

измените кодовый файл на CodeBehind, сохраните,а затем вернитесь.


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

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


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

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

решение удивительно простое, но немного громоздкое. Чтобы запустить генератор кода, измените что-то, что потребует конструктора.аспн.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". Сохранить и построить, и вы должны быть хорошо идти.


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


преобразовать в веб-приложение не работает для меня.

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

Но да, это работает:

  1. выбрать все(по умолчанию.aspx)
  2. вырезать
  3. Сохранить По Умолчанию.аспн
  4. вставить
  5. Сохранить По Умолчанию.аспн

сделано. Новый дизайнер.CS создаваемый. :)


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

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

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


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

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

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


(следующий приходит с опытом с VS2005.)

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

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


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

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


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


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

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

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

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

  • выберите-все в файле конструктора и удалите все в файле, оставив его пустым, а затем сохраните
  • Select-all в файле ASPX / ASCX и вырезать все, а затем повторно вставить его обратно
  • файл конструктора должен был регенерировать код

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

Самир


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


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

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

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

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

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

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

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


TL; DR;
Отредактируйте Inherits атрибут страницы ASPX


в Visual Studio:

1) Удалите aspx.дизайнер.cs файл

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

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

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

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

как генерировать aspx.дизайнер.cs в visual studio?


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

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


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

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

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


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

также имел опечатку в моем элементе управления label (использовал "class" вместо "cssclass").

ТП


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

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

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

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

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

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


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

потребовалось фактически посетить страницы ASP.Net чтобы сказать мне об ошибке.


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


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


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

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