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
asp.net
visual-studio
visual-studio-2008
Glenn Slaven
źródło
źródło
<%@ Page
wiersza 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.Odpowiedzi:
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.
źródło
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!
źródło
Korzystam z następującej metody, która działa za każdym razem:
Przekompiluj.
źródło
<name>.aspx.designer.vb
, aby działał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ęść:
Zmień CodeFile na CodeBehind, zapisz, a następnie przywróć.
źródło
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.
źródło
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ą:
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
do
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.
źródło
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.
źródło
int Id
właściwość, która dobrze kompilowała się w C #, ponieważ rozróżnia małe i duże litery. AleID="ControlName"
na stronie aspx starałem się to zrobićId = "ControlName"
.Convert to Web App
powiedział coś w styluControlName cannot be converted to Int32
.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:
Gotowy. Wygenerowano nowy designer.cs. :)
źródło
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.
źródło
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 .
źródło
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)
źródło
(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.
źródło
W widoku projektu kliknij prawym przyciskiem myszy ekran i naciśnij przycisk odświeżania.
źródło
Kolejną rzeczą, która działała, było -
Np .:
<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
źródło
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
źródło
źródło
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
źródło
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.
źródło
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/
źródło
TL; DR;
Edytuj
Inherits
atrybut@Page
dyrektywy strony ASPX i naciśnij Zapisz. Plik projektanta powinien zostać zregenerowany.Upewnij się, że
Inherits
= <przestrzeń nazw>. <Nazwa klasy> iCodeBehind
= <nazwa klasy> .aspx.csPró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:
A moja
@Page
dyrektywa brzmiała (tutaj dla zachowania przejrzystości)Najpierw zmieniłem plik
Inherits
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!
źródło
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?
źródło
Krok 1 : Wybierz cały kod aspx, Wytnij [CTRL + X] ten kod i Zapisz.
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.
źródło
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".
źródło
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.
źródło
Miałem dwa problemy ... nieaktualny AJAXControlkit - usunąłem starą bibliotekę DLL, usunąłem stare kontrolki z przybornika, pobrałem nową wersję, załadowałem przybornik oraz przeciągnąłem i upuściłem nowe kontrolki na stronie (patrz http://www.experts-exchange.com /Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html )
Miałem także błędy w pisowni w mojej kontroli etykiet (użyłem „class” zamiast „cssclass”).
Ta
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło