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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

Хитрая!

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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

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

  • Выбрать все (Default.aspx)
  • Вырезать
  • Сохранить значение по умолчанию .aspx
  • Вставить
  • Сохранить значение по умолчанию .aspx

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

Ответ 9

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

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

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

Ответ 10

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

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

Ответ 11

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

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

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

Ответ 12

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

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

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

Ответ 13

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

Ответ 14

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

  • Вручную удалить, а затем создать файл конструктора в файловой системе.
  • Изменить проект.
  • Добавить код для включения дизайнера
    Например: <Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  • Обновить проект
  • Открыть как (c/p) x файл в режиме дизайна/просмотра и сохранить его.
  • Проверить файл дизайнера. Код будет там.

Ответ 15

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

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

Ответ 16

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

Ответ 17

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

Самир

Ответ 18

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

Ответ 19

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

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

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

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

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

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

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

Ответ 20

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

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

Ответ 21

В Visual Studio:

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

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

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

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

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

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

Ответ 22

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

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

Ответ 23

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

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

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

Ответ 24

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

Также имел орфографию в моем контроле над меткой (использовал "класс" вместо "cssclass" ).

Та

Ответ 25

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

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

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

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

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

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

Ответ 26

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

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

Ответ 27

Решение для меня:

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

Ответ 28

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

Ответ 29

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

Ответ 30

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