Вопрос:

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

asp.net visual-studio visual-studio-2008

295833 просмотра

30 ответа

23504 Репутация автора

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

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

  • Закрытие и повторное открытие всех файлов и Visual Studio
  • Внесение изменений в элемент управления runat = "server" на странице
  • Удаление и повторное добавление директивы страницы
Автор: Glenn Slaven Источник Размещён: 05.09.2008 06:21

Ответы (30)


363 плюса

34877 Репутация автора

Решение

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

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

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

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

Автор: Espo Размещён: 05.09.2008 06:25

4 плюса

13509 Репутация автора

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

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

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

Автор: EndangeredMassa Размещён: 05.09.2008 06:26

89 плюса

23504 Репутация автора

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

Хитрая!

Автор: Glenn Slaven Размещён: 05.09.2008 06:32

14 плюса

21087 Репутация автора

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

Автор: DevelopingChris Размещён: 09.09.2008 02:28

37 плюса

3042 Репутация автора

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

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

Автор: y0mbo Размещён: 06.10.2008 10:05

2 плюса

86310 Репутация автора

  • Выберите все в файле дизайнера и удалите все в файле, оставив его пустым, а затем сохраните
  • Выделите все в файле ASPX / ASCX и обрежьте все, а затем вставьте обратно
  • Файл конструктора должен был восстановить код
Автор: Mark Cidade Размещён: 06.10.2008 10:09

77 плюса

145 Репутация автора

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

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

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

Автор: Ruvan Fernando Размещён: 29.01.2009 04:19

1 плюс

0 Репутация автора

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

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

Автор: Max Lancaster Размещён: 10.02.2009 07:37

5 плюса

3120 Репутация автора

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

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

Автор: Johan Leino Размещён: 26.03.2009 08:08

6 плюса

5257 Репутация автора

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

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

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

Автор: Overflew Размещён: 11.05.2009 02:57

2 плюса

767 Репутация автора

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

Самир

Автор: sameer Размещён: 15.01.2010 07:30

0 плюса

1 Репутация автора

  1. замените свой пользовательский тег на неверное имя тега. Сохрани это
  2. восстановить неверное имя тега обратно к имени пользовательского тега. Сохрани это. Затем вам будет предложено извлечь файлы * .designer.cs (или изменить молча designer.cs) и создать правильную переменную для управления пользовательским тегом.
Автор: osexp2000 Размещён: 29.01.2010 07:13

1 плюс

11 Репутация автора

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

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

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

Автор: bcweis Размещён: 30.04.2010 06:25

1 плюс

11 Репутация автора

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

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

Ta

Автор: user381377 Размещён: 08.07.2010 04:55

4 плюса

11 Репутация автора

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

Автор: yertle Размещён: 14.09.2010 06:08

60 плюса

91 Репутация автора

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

Автор: Geoff Размещён: 22.01.2011 08:18

1 плюс

11 Репутация автора

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

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

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

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

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

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

Автор: Carlo Размещён: 02.06.2011 02:46

1 плюс

360 Репутация автора

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

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

Автор: Tacroy Размещён: 17.05.2012 11:11

1 плюс

1 Репутация автора

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

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

Автор: you y Размещён: 21.05.2012 10:18

2 плюса

1396 Репутация автора

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

Автор: Rory Solley Размещён: 28.06.2012 01:44

1 плюс

1 Репутация автора

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

Автор: Ben Weeks Размещён: 13.07.2012 08:51

2 плюса

2804 Репутация автора

Я уже много лет сталкиваюсь с той же проблемой, работая в 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/

Автор: Sean Werkema Размещён: 21.01.2013 06:23

5 плюса

158 Репутация автора

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

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

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

Автор: tommycode Размещён: 01.02.2013 09:21

3 плюса

2204 Репутация автора

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

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

21 плюса

1798 Репутация автора

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

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

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

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

<asp:HyperLink ID="MyLink" runat="server" NavigateUrl="~/Default.aspx" Text="Home" />

в

<asp:HyperLink ID="theLINK" runat="server" NavigateUrl="~/Default.aspx" CssClass="tab" Text="Home" />

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

Автор: ATL_DEV Размещён: 29.01.2014 11:36

9 плюса

6 Репутация автора

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

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

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

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

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

Автор: O D Размещён: 14.02.2014 09:23

2 плюса

11560 Репутация автора

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

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

Автор: SNag Размещён: 19.12.2014 02:58

3 плюса

3130 Репутация автора

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

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %>
  • создать пустую страницу дизайнера (или очистить ее, если она уже существует, «yourControl.ascx.designer.cs»)
  • в ascx (или aspx) скопируйте весь код, удалите его и сохраните. Снова пройдитесь, затем сохраните.
  • файл конструктора должен быть заполнен сейчас.
Автор: Tarek El-Mallah Размещён: 11.02.2015 06:56

2 плюса

365 Репутация автора

В Visual Studio:

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

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

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

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

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

Как сгенерировать aspx.designer.cs в визуальной студии?

Автор: nouman arshad Размещён: 17.04.2015 06:43

1 плюс

40 Репутация автора

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

Автор: user3911976 Размещён: 17.03.2016 08:48
Вопросы из категории :
32x32