Jak zmusić program Visual Studio do ponownego wygenerowania plików .designer dla plików aspx / ascx?


395

Czasami, gdy edytuję stronę lub kontroluję pliki .designer, przestaję być aktualizowany o nowe kontrolki, które umieszczam na stronie. Nie jestem pewien, co powoduje, że tak się dzieje, ale zastanawiam się, czy jest jakiś sposób na zmuszenie Visual Studio do ponownego wygenerowania pliku .designer. Używam Visual Studio 2008

EDYCJA: Przepraszam, że powinienem zauważyć, że już próbowałem:

  • Zamykanie i ponowne otwieranie wszystkich plików i Visual Studio
  • Wprowadzanie zmiany do kontrolki runat = "server" na stronie
  • Usuwanie i ponowne dodawanie dyrektywy strony

57
Czy to niedorzeczne, że w 2012 roku Visual Studio nadal nie ma pozycji menu kontekstowego do regeneracji plików projektantów z plików źródłowych? Jest to podobne do niemożności odbudowania uszkodzonej biblioteki DLL. Nie rozumiem tego. Zwłaszcza z zewnętrzną kontrolą źródła i zewnętrznymi edytorami pozostawiasz Visual Studio kaleką. Strata pieniędzy, jeśli mnie o to poprosisz. Próbuję zregenerować projektantów plików zasobów. Udało mi się dostać zmienił on zregenerowany, ale to przez zapomnienie ... augh !!! 1
BamBams

3
@bamccaig, gdybym miał grosz za każdą taką dziwną „funkcję” taką jak ta, byłbym bogatszy niż Bill Gates. Jeśli uważasz, że to źle, sprawdź, gdzie Outlook Express przechowuje dane poczty. Jest pochowany głęboko w folderze użytkownika pod nazwą folderu ukrytego, który jest domyślnie ukryty.
ATL_DEV

13
Czy jest jakieś rozwiązanie dla VS 2015?
Anton

Więcej informacji na temat innych prób można znaleźć w powiązanych stosoverflow.com/questions/6508252/ ...
goodeye,

2
Nie jest to stała poprawka, ale przywraca odniesienia kontrolne w pliku .cs: 1. Otwórz powiązany plik .aspx; 2. Usuń pojedynczy znak „>” na końcu <%@ Pagewiersza dyrektywy; 3. Poczekaj sekundę lub dwie; 4. Umieść z powrotem „>”. 5. Przełącz się na plik .cs, a zobaczysz, że jest on teraz wolny od błędów odniesienia kontroli. Robię to od wieków, działa za każdym razem, w każdej wersji VS.
ingredient_15939

Odpowiedzi:


368

Jeśli otworzysz plik .aspx i przełączysz między widokiem projektu a widokiem html i odwrotnie, VS wyświetli monit o sprawdzenie elementów sterujących i dodanie brakujących elementów do pliku projektanta.

W VS2013-15 w menu Projekt znajduje się polecenie Konwertuj na aplikację internetową . Przed VS2013 ta opcja była dostępna w menu kontekstowym prawym przyciskiem myszy dla plików w formacie (c / p) x. Gdy to zrobisz, powinieneś zobaczyć, że masz teraz dostępny plik * .Designer.cs, a twoje kontrolki w Design HTML będą dostępne dla twojej kontroli.

PS: Nie należy tego robić w trybie debugowania, ponieważ nie wszystko jest „rekompilowane” podczas debugowania.

Niektóre osoby zgłosiły również sukces, wykonując kopię zapasową pliku .designer.cs, a następnie usuwając plik .designer.cs. Utwórz ponownie pusty plik o tej samej nazwie.

Istnieje wiele komentarzy do tej odpowiedzi, które dodają wskazówki, jak najlepiej odtworzyć plik designer.cs.


1
To działało tylko dla mnie po zamknięciu każdej instancji VS2008 (nawet tych z zupełnie innymi rozwiązaniami)
Kevin

11
Przekonałem się, że przejście z trybu debugowania do trybu wydania wykopało dla mnie sztuczkę, dzięki
Chris

5
Chciałem tylko powiedzieć, że mam ten sam błąd i próbowałem wszystkiego na tej stronie, ale nic nie działało. Okazało się, że brakuje mi znacznika zamknięcia „>” na divie, który miał runat = "server". Uruchamianie VS-2008.
Ber53rker

10
Aby wyświetlić „Konwertuj na aplikację internetową”, najpierw musisz usunąć plik Designer.cs POPRAWNIE KLIKAJĄC plik aspx w Solution Explorer i wybierając delete. To zadziałało dla mnie w VS 2010.
DeveloperDan

43
VS2013 ma opcję Konwertuj na aplikację internetową w menu Projekt. Po prostu już nie w menu kontekstowym.
Dennis Burton,

95

Cóż, znalazłem rozwiązanie, które działa, ale nie podoba mi się to. Musiałem usunąć plik .designer.cs, a następnie odtworzyć pusty plik o tej samej nazwie. Kiedy wróciłem i ponownie zapisałem plik aspx, plik projektanta został ponownie wygenerowany.

Sprytny!


3
To po prostu zadziałało również dla mnie. Nieidealny. Nie mam pojęcia, dlaczego oryginalny plik desginera przestał poprawnie się aktualizować.
Iain Holder

3
To mi nie zadziałało. Teraz mam pusty plik i cały kod za nim nie działa !!! Ponowne uruchomienie ...
DiningPhilanderer

7
To zadziałało dla mnie. Upewniłem się, że usunąłem oryginał, utwórz nowy plik designer.cs o tej samej nazwie, zamknij nowy plik, zmodyfikuj nieznacznie plik .as (p / c) x, aby wymusić zapis, a potem wszystko było dobrze.
TJB

9
jeśli masz błąd kompilacji widoku, nie wróci. Ogólnie dlatego przede wszystkim przestaje się regenerować. Musisz włączyć kompilację widoku, aby ją zobaczyć, co nie jest proste.
DevelopingChris

1
Musiałem również dołączyć pusty plik do mojego projektu.
JP Hellemons,

78

Korzystam z następującej metody, która działa za każdym razem:

  • Zaznacz cały kod z przodu (znaczniki HTML itp.) W edytorze pliku aspx / ascx.
  • Skaleczenie.
  • Zapisać.
  • Pasta.
  • Zapisać.

Przekompiluj.


1
Myślę, że usunięcie pojedynczej kontrolki i ponowne jej dodanie ma ten sam efekt.
Chris

Zrobiłem to i zadziałało dla mnie. Musiałem jednak utworzyć pusty plik o nazwie wywoływanej <name>.aspx.designer.vb, aby działał
Tahir Hassan

64

Niedawno zobaczyłem, że mam ten sam problem. Visual Studio 2010 odmówił aktualizacji pliku projektanta.

Jak się okazuje, VS nie modyfikuje pliku projektanta dla strony, która używa CodeFile (uruchamianie stron) zamiast CodeBehind (DLL). Dzieje się tak bez względu na to, ile razy zamkniesz VS, przeładujesz projekt, ponownie utworzysz kontrolkę lub zmodyfikujesz plik. Nic nie skłoniłoby VS do zregenerowania projektanta. To tak, jakby nie tworzy pliku projektanta dla stron CodeFile, ale wymaga, aby tam był.

Zmieniłem go na CodeBehind i zapisałem stronę. Plik projektanta został natychmiast zaktualizowany. Potem to zmieniłem i wszystko było nadal złote. To zachowanie wydaje się być nowe w VS 2010 / .NET 4.0, ponieważ VS 2008 domyślnie nie cierpiał z tego powodu.

To ta część:

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

Zmień CodeFile na CodeBehind, zapisz, a następnie przywróć.


Spóźniony do tego wątku. Żadna z opisanych powyżej odpowiedzi nie wymusza wyszczególnienia formantów w pliku * .aspx.designer.cs. Miałem nadzieję, że to zrobi, ale nadal nie wymusza zadeklarowania formantów w pliku * .aspx.designer.cs. Używam VS 2010 Pro SP1. Staram się, aby działało to z dowolnym domyślnym plikiem generowanym przez IDE w / Account, takim jak ChangePassword.aspx. Dzięki.
paparush

1
Mój został ustawiony na CodeFile, zmieniłem na CodeBehind, zapisałem, z powrotem na CodeFile, zapisano, wszystko jest złote. Poprzednie próby napraw nie zrobiły tego dla mnie. VS 2010 Pro
Dan

37

Istnieje inna możliwość: w pliku .aspx może występować błąd, który nie pozwala programowi Visual Studio na zregenerowanie projektanta.

Jeśli przełączysz się do widoku projektu, pokaże formant jako niemożliwy do renderowania. Naprawienie kontrolki (w moim przypadku było to dodatkowym cytatem we właściwościach) i ponowna kompilacja powinny zregenerować projektanta.


Miałem ten sam problem, kontrola użytkownika miała błędy, więc strony, które korzystają z kontroli użytkownika, miały niepowiązane błędy z powodu błędów w kontroli użytkownika.
Ronen Festinger

1
Ta sama przyczyna. Miałem nieobsługiwany atrybut widoczny = „false” dodany do przycisku asp. Usunąłem go i kod projektanta został ponownie wygenerowany.
chingNotCHing

21

Większość rozwiązań tutaj nie działa, jeśli korzystasz z programu Visual Studio 2013 i prawdopodobnie 2012. Microsoft prawdopodobnie wprowadził pewne optymalizacje, aby IDE był szybszy, w związku z czym zmniejszył liczbę przypadków, które wyzwalają generator kodu. Następujące scenariusze, które kiedyś działały, już nie działają:

  1. Usuń plik aspx lub ascx - nie sprawdza już tej sprawy
  2. Wytnij całą zawartość i ponownie wklej do pliku aspx lub ascx - już nie działa, bez zmian w referencjach
  3. Konwertuj na aplikację internetową - opcja nie jest już dostępna
  4. Arbitralnie zmieniająca się zawartość pliku aspx / ascx - już nie działa (patrz 2).

Rozwiązanie jest zaskakująco proste, ale nieco nieporęczne. Aby uruchomić generator kodu, zmień coś, co wymagałoby wygenerowania pliku designer.aspx.cs. Zmiana treści, która nie wpływa na kod, na przykład styl CSS lub dodawanie tekstu, nie spowoduje uruchomienia generatora kodu. Musisz zmienić formant odniesienia. Oto jak to zrobić:

W ascx lub aspx zmień ID kontrolki

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

do

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

Przejdź do ascx.cs lub aspx.cs i upewnij się, że zmieniłeś nazwy wszystkich odwołań do „MyLink” na „theLINK”. Zapisz i buduj, a powinieneś być gotowy.


Bardzo dobry punkt na temat zmian w nowszej wersji Visual Studio. To, co zadziałało, zamiast zadzierać z takimi identyfikatorami jak powyżej, to wymazanie pliku projektanta, następnie dodanie zupełnie nowej, łagodnej kontroli, takiej jak <asp: PlaceHolder ID = "Foo" runat = "server />, a następnie zapisanie w celu wyzwolenia regeneracja, więc nawet jeśli zapomnisz ją usunąć, nic się nie zmieni
Jordan Rieger

8
3. Opcja „Konwertuj na aplikację internetową” jest udostępniana w menu „PROJEKT”, jeśli zostanie wybrany odpowiedni plik.
WynandB

2
Hmm Niestety ta opcja nie jest dostępna, jeśli jest to już aplikacja internetowa.
ATL_DEV

Szybką zmianą jest edycja części przestrzeni nazw atrybutu Inherits =. Powinno to edytować przestrzeń nazw w pliku .designer i ponownie wygenerować całą zawartość. Właśnie próbowałem tego z VS2013.3.
David Russell

Cześć, zwykle próbuję w sposób, który podałeś, ale problem polega na tym, że inny użytkownik nie jest w stanie wygenerować pliku g.cs, a może to zrobić tylko administrator. Używamy TFS, przy użyciu kilku identyfikatorów użytkowników programistów w VS, jesteśmy w stanie wygenerować g.cs. Jakie są prawa wymagane do generowania g.cs na serwerze, TFS i SP?
nirav

14

jedynym sposobem, jaki znam, jest usunięcie pliku projektanta i konwersja do aplikacji internetowej. Jednak gdy to zrobisz, zwykle pojawia się komunikat o błędzie, dlaczego w ogóle nie został on automatycznie zregenerowany, zwykle jest to kontrolny odnośnik, który nie jest zadeklarowany w nagłówku strony.


Przepraszam, że nie działało, działało dla mnie w VS 2008 od kiedy zacząłem go używać. Czy na Twojej stronie występuje błąd składniowy? Powinieneś dostać okno dialogowe, które mówi, co naprawić, aby zakończyć pracę.
DevelopingChris

To zadziałało dla mnie. Klasa kodu miała int Idwłaściwość, która dobrze kompilowała się w C #, ponieważ rozróżnia małe i duże litery. Ale ID="ControlName"na stronie aspx starałem się to zrobić Id = "ControlName". Convert to Web Apppowiedział coś w stylu ControlName cannot be converted to Int32.
Nelson Rothermel,

9

Konwersja na aplikację internetową nie działała dla mnie.

Usunięcie designer.cs i wklejenie pustego designer.cs również nie działało.

Ale tak, to zadziałało:

  1. Wybierz wszystko (Default.aspx)
  2. Skaleczenie
  3. Zapisz Default.aspx
  4. Pasta
  5. Zapisz Default.aspx

Gotowy. Wygenerowano nowy designer.cs. :)


Mogę potwierdzić, że to działa w VS2013, właśnie to zrobiłem i rozwiązało to moje problemy.
ToastyMallows

Ty. mieć. dostał. do. być. żartować. mnie. Działa to dla mnie w VS2015, gdy konwersja jak w wybranej odpowiedzi nie.
GraehamF,

6

Często stwierdziłem, że kopiowanie / wklejanie spowodowało takie zachowanie . Większość przypadków można rozwiązać, edytując identyfikator kontrolki serwera (wystarczy dodać znak, a następnie go usunąć).

Pamiętaj również, że kontrola w rzeczach takich jak Repeatery nie jest widoczna w pliku projektanta.

I tak, są przypadki, w których musisz wykonać magię usuwania pliku wymienioną powyżej - ale rozwiązanie zmiany nazwy będzie działać przez większość czasu.


2
Taki błąd mam wiele razy. Jeśli kopiujesz HTML z jednej strony na drugą i masz formanty z runat = "server", nazwy kontrolek zostaną zmienione, aby uniknąć konfliktu. Jeśli jednak wkleisz wewnątrz tagów „komentarz html” <! - Whaterver ->, identyfikatory kontrolne nie zostaną zmienione, a wszelkie konflikty zatrzymają odtwarzanie pliku projektanta, ponieważ istnieją dwa kontrolki o tym samym identyfikatorze. Wynika to z faktu, że tworzone są również formanty wewnątrz tagów HTML „komentarzy”. ;)
tomasofen

5

Moje doświadczenie jest takie, że jeśli chcesz zrobić tak jak w tym artykule, jak wspomniano powyżej.

Twój plik znaczników (aspx / ascx) musi zawierać atrybut CodeBehind = "MyPage.aspx.cs", w przeciwnym razie nie będzie działać. Napisałem o tym tutaj blog .


Dodano ten atrybut, a następnie zapisano; nic. Następnie usunął Dziedziczenia, zapisał, przywrócił i voila plik kodu projektanta został zaktualizowany! Ta irytująca funkcja łapie mnie za każdym razem :-(
GlennG

oba linki są martwe = (
Maslow

5

Znalazłem sposób na rozwiązanie tego problemu bez zmiany kodu lub uruchamiania poleceń, takich jak „Konwertuj na aplikację internetową” - i to też jest proste!

Odkryłem, że ponowne uruchomienie programu Visual Studio często rozwiązuje problem, ale czasem nie. W takich przypadkach, jeśli zamkniesz program Visual Studio, a następnie usuniesz całą zawartość z katalogu „obj” projektu internetowego przed jego ponownym otwarciem, zawsze działało to dla mnie.

(przy ponownym uruchomieniu po prostu dodajesz spację i usuwasz ją ponownie, a następnie naciśnij Zapisz, aby poprawnie zregenerować plik projektanta)


Mam ten problem ze starszą aplikacją, którą mam za zadanie wspierać. Chcę podziękować za zwrócenie na to uwagi. Nie wolno mi konwertować na aplikacje internetowe ", tworzyć nowych rozwiązań ani robić nic innego, jak naprawiać błędy. Projektant ciągle się zawieszał dla mnie. Ale to do tej pory pomogło.
Jamie Taylor

4

(Poniższe informacje pochodzą z doświadczenia z VS2005.)

Jeśli edytujesz stronę ASPX podczas debugowania, to klucz do kodu nie zostanie zaktualizowany o nowe klasy. Musisz więc przestać debugować, w prosty sposób edytować stronę ASPX (np. Dodać przycisk lub coś), a następnie kliknąć Widok projektu, a następnie usunąć przycisk. Następnie pliki projektanta powinny zostać zaktualizowane.

Jeśli masz inny problem z VS2008, nie mogę pomóc.


Wpadłem na to z VS.Net 2010 ... musiałem zrobić dokładnie to ... Dzięki @EndangeredMassa za wskazówkę ... Kiedyś przechodziłem przez to również w VS.Net 2002/2003 dni ... Chciałbym wiedziałem o tym;)
Richard B

4

W widoku projektu kliknij prawym przyciskiem myszy ekran i naciśnij przycisk odświeżania.


3

Kolejną rzeczą, która działała, było -

  1. Ręcznie usuń, a następnie utwórz plik projektanta w systemie plików.
  2. Edytuj plik projektu .
  3. Dodaj kod, aby dołączyć projektanta
    Np .:<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  4. Załaduj ponownie projekt
  5. Otwórz jako plik (c / p) x w trybie projektowania / przeglądania i zapisz go.
  6. Sprawdź plik projektanta. Kod będzie tam.

3

Jeśli używasz wersji VS2013 lub nowszej, upewnij się, że kod odwołuje się do atrybutu „CodeBehind”, a nie „CodeFile”, a następnie wykonaj poniższe czynności

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %>
  • utwórz pustą stronę projektanta (lub wyczyść ją, jeśli już istnieje „yourControl.ascx.designer.cs”)
  • w ascx (lub aspx) skopiuj cały kod, usuń go, a następnie zapisz. ponownie go wklej, a następnie zapisz.
  • plik projektanta powinien być teraz wypełniony.

2
  • Zaznacz wszystko w pliku projektanta i usuń wszystko z pliku, pozostawiając puste, a następnie zapisz
  • Zaznacz wszystko w pliku ASPX / ASCX i wytnij wszystko, a następnie ponownie wklej
  • Plik projektanta powinien był ponownie wygenerować kod

1
To zadziałało dla mnie! Zapisałem również plik .aspx po wycięciu wszystkiego. Wklejony, zapisany i mój (wcześniej pusty) plik projektanta został w pełni wypełniony.
DaveD

2

Oto doświadczenie, wybierz folder witryny prawym przyciskiem myszy w Eksploratorze rozwiązań, wybierz Konwertuj na aplikację internetową dla wszystkich plików aspx, które zostaną wygenerowane przez projektanta.

Sameer


2

Aby dodać tutaj do długiej listy odpowiedzi - właśnie natrafiłem na ten problem w VS2010 (SP1) z plikiem .aspx. Próbowałem dodawać i usuwać standardowe kontrolki ASP (które działały w przeszłości), ale ostatecznie musiałem usunąć jedną z linii runat = server z istniejącej kontrolki (i zapisać), aby wymusić ponowne wygenerowanie pliku projektanta.


2

Ten sam problem mam od lat, pracując w Visual Studio 2008. Wypróbowałem każde „rozwiązanie” na StackOverflow i dziesiątkach blogów, tak jak na pewno wszyscy. A czasem działają, a czasem nie, tak jak jestem pewien, że wszyscy z was spotkali. I najwyraźniej jest to nadal problem w VS2010 i VS2012.

W końcu, kilka miesięcy temu, zdecydowałem, że wystarczy. W ciągu kilku tygodni zbudowałem narzędzie o nazwie „Redesigner”, które generuje pliki .designer. Jest to oprogramowanie typu open source na licencji BSD , z kodem źródłowym dostępnym na SourceForge - darmowy, darmowy do kradzieży, darmowy do robienia wszystkiego, co chcesz. I robi to, czego Visual Studio nie robi tak często, czyli generuje pliki .designer szybko i niezawodnie.

Jest to samodzielne narzędzie wiersza polecenia, które analizuje pliki .aspx i .ascx, wykonuje wszystkie niezbędne refleksje i wyrzuca prawidłowe pliki .designer. Wykonuje całą analizę i samą refleksję, aby uniknąć polegania na istniejącym kodzie, który, jak wszyscy dobrze wiemy, jest zepsuty. Jest napisany w C # przeciwko .NET 3.5, ale sprawia, że ​​trudno jest nawet używać System.Web do czegokolwiek innego niż deklaracje typu, i w ogóle nie korzysta z Visual Studio .

Redesigner może generować nowe pliki .designer; i oferuje opcję --verbose, dzięki czemu gdy coś pójdzie nie tak, otrzymujesz znacznie lepsze komunikaty o błędach niż „Zgłoszono wyjątek typu System.Exception”. Istnieje również opcja --verify, która może być użyta do informowania o uszkodzeniu istniejących plików .designer - brak formantów, złe deklaracje właściwości, nieczytelne przez Visual Studio lub w inny sposób po prostu zepsute.

Używamy go w moim miejscu pracy, aby wydobyć nas z zacięć przez większą część ostatniego miesiąca, i chociaż Redesigner wciąż jest w fazie testów beta, robi się wystarczająco daleko, że warto podzielić się jego opinią publiczną. Wkrótce zamierzam utworzyć dla niego wtyczkę Visual Studio, aby po prostu kliknąć prawym przyciskiem myszy, aby zweryfikować lub zregenerować pliki projektanta tak, jak zawsze tego chciałeś. Ale w międzyczasie korzystanie z wiersza polecenia jest dość łatwe i pozwoli zaoszczędzić wiele problemów.

W każdym razie, pobierz teraz kopię Redesigner i przestań wyciągać włosy . Nie zawsze będziesz go potrzebować, ale kiedy to zrobisz, będziesz zadowolony, że go masz!

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


prosta przesada wydaje się przesadna
Chris McGrath

1
@ChrisMcGrath Może przesada, ale czułem ból, który spowodował to narzędzie. Podziwiam jego poświęcenie, aby poświęcić czas na jego budowę :)
Jordan Rieger

2

TL; DR;
Edytuj Inheritsatrybut @Pagedyrektywy strony ASPX i naciśnij Zapisz. Plik projektanta powinien zostać zregenerowany.

Upewnij się, że Inherits= <przestrzeń nazw>. <Nazwa klasy> i CodeBehind= <nazwa klasy> .aspx.cs


Próbowałem to zrobić w projekcie Sharepoint 2010, używając VS 2010 i TFS , i żadne z powyższych rozwiązań nie działało dla mnie. Przede wszystkim brakuje opcji „Konwertuj na aplikację internetową” w menu prawym przyciskiem myszy pliku .ASPX podczas korzystania z TFS w VS 2010.

Ta odpowiedź w końcu pomogła . Moja klasa wyglądała tak:

namespace MyProjects.Finance.Pages
{
    public partial class FinanceSubmission : WebPartPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        // more code
    }
}

A moja @Pagedyrektywa brzmiała (tutaj dla zachowania przejrzystości)

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="FinanceSubmission.aspx.cs"
    Inherits="MyProjects.Finance.Pages.FinanceSubmission"
    MasterPageFile="~masterurl/default.master" %>

Najpierw zmieniłem plikInherits na MyProjects.Finance.Pages , nacisnąłem Zapisz, a następnie zmieniłem go ponownie na MyProjects.Finance.Pages.FinanceSubmission i nacisnąłem Zapisz ponownie. I ściany! Strona projektanta została zregenerowana!

Mam nadzieję, że to pomoże komuś używającemu TFS!


2

W Visual Studio:

1) Usuń plik aspx.designer.cs

2) Kliknij prawym przyciskiem myszy plik aspx i wybierz „Konwertuj na aplikację internetową”. Powinno to dodać aspx.designer.cs z powrotem i zaktualizować.

Jeśli pojawi się błąd z informacją:

„Generowanie pliku projektanta nie powiodło się: Metoda lub operacja nie została zaimplementowana.”

Spróbuj zamknąć program Visual Studio, a następnie ponownie otwórz projekt i ponownie wykonaj krok drugi

Jak wygenerować aspx.designer.cs w Visual Studio?


2
„Konwertuj na aplikację internetową” nie istnieje w menu kontekstowym pliku aspx. Przynajmniej tak nie jest w VS Professional 2015.
Chris Walsh

2
  1. Krok 1 : Wybierz cały kod aspx, Wytnij [CTRL + X] ten kod i Zapisz.

  2. Krok 2 : Ponownie wklej ten sam kod na tej samej stronie i zapisz ponownie

Teraz strona .desinger odświeży się ze wszystkimi kontrolkami na stronie .aspx.


1

Usuń plik designer.cs, a następnie kliknij prawym przyciskiem myszy plik .aspx i wybierz „Konwertuj na aplikację internetową”. Jeśli wystąpi problem z deklaracjami kontrolnymi, taki jak źle sformatowany znacznik, pojawi się komunikat o błędzie i konieczne będzie poprawienie zniekształconego znacznika, zanim program Visual Studio będzie mógł ponownie wygenerować plik projektanta.

W moim przypadku w tym momencie odkryłem, że problem polegał na tym, że zadeklarowałem kontrolkę przycisku, która nie znajdowała się w znaczniku formularza z atrybutem runat = "server".


1

To jest błąd w IDE; Widziałem to od VS 2003. Rozwiązanie jest jednak proste.

Zapisz swoje pliki. Całkowicie wyjdź z IDE (upewnij się, że proces się zatrzymał, zadaj zadanie)

Ponownie otwórz rozwiązanie, usuń znaczniki, zapisz. Naprawiony.



1

Miałem problem, że moje nowe kontrolki nie generowałyby się w pliku projektanta, gdy były zadeklarowane w pliku .ascx. Problem polegał na tym, że zadeklarowałem je również w kodzie. Usunięcie deklaracji z kodu rozwiązało mój problem.


1

Jeśli jesteś podobny do mnie i dodajesz stare pliki .ASPX do nowszego projektu. Prawdopodobnie zapomnisz niektóre elementy sterujące używane na stronie.

Jeśli tak, po pierwsze, jeśli instalujesz wiele plików; Napraw pojedynczo.

Podczas kompilacji napraw generowane błędy. Prawdopodobnie będą to te same błędy we wszystkich plikach.

Następnie, jeśli masz pliki projektanta, usuń wszystkie wstawione pliki projektanta. Następnie upewnij się, że podczas kompilacji nie ma żadnych innych błędów niż pliki projektanta.

Na koniec kliknij prawym przyciskiem myszy swój projekt internetowy i kliknij Konwertuj na aplikację internetową. Spowoduje to wstawienie potrzebnych plików projektanta.

Są to absolutnie najlepsze kroki do rozwiązania problemów.


1

Jedną z rzeczy, o których nikt nie wspomniał, jest odwiedzenie strony . Mój projektant przestał się regenerować, ponieważ zawierałem kontrolę użytkownika, która nie istniała (z różnych powodów) i żadna z sugerowanych tu rzeczy nie zadziałała. Z jakiegokolwiek powodu nie otrzymałem żadnych błędów w Visual Studio - oprócz tego, że narzeka na fakt, że moje kontrolki po stronie klienta nie istniały, ponieważ nie były regenerowane, oczywiście.

Odwiedzenie strony zajęło ASP.Net, aby poinformować mnie o błędzie.


1

Może się to również zdarzyć, jeśli zaktualizujesz przestrzeń nazw i nie zaktualizujesz przestrzeni nazw w pliku projektanta. Poprawka: zaktualizuj także przestrzeń nazw w pliku projektanta.


1

Rozwiązaniem, które dla mnie zadziałało, jest:

Właśnie skopiowałem stronę i wkleiłem ją w tej samej części, a następnie zmieniłem nazwę pierwszej strony (jakakolwiek nazwa) i przemianowałem skopiowaną stronę na stronę oryginalną. Teraz elementy sterujące są dostępne.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.