Manchmal, wenn ich eine Seite bearbeite oder steuere, werden die Designer-Dateien nicht mehr mit den neuen Steuerelementen aktualisiert, die ich auf die Seite lege. Ich bin nicht sicher, was dies verursacht, aber ich frage mich, ob es eine Möglichkeit gibt, Visual Studio zu zwingen, die Designer-Datei neu zu generieren. Ich verwende Visual Studio 2008
EDIT: Entschuldigung, ich hätte bemerken sollen, dass ich es bereits versucht habe:
- Schließen und erneutes Öffnen aller Dateien und von Visual Studio
- Vornehmen einer Änderung an einem runat = "Server" -Steuerelement auf der Seite
- Löschen und erneutes Hinzufügen der Seitenanweisung
asp.net
visual-studio
visual-studio-2008
Glenn Slaven
quelle
quelle
<%@ Page
Anweisungszeile. 3. Warten Sie ein oder zwei Sekunden. 4. Setzen Sie das ">" zurück. 5. Wechseln Sie zur CS-Datei, und Sie werden sehen, dass sie jetzt frei von Steuerreferenzfehlern ist. Ich mache das schon seit Ewigkeiten, funktioniert jedes Mal in jeder VS-Version.Antworten:
Wenn Sie die ASPX-Datei öffnen und zwischen Entwurfsansicht und HTML-Ansicht und zurück wechseln, wird VS aufgefordert, die Steuerelemente zu überprüfen und fehlende Steuerelemente zur Designer-Datei hinzuzufügen.
In VS2013-15 gibt es im Menü Projekt den Befehl In Webanwendung konvertieren . Vor VS2013 war diese Option im Kontextmenü mit der rechten Maustaste für as (c / p) x-Dateien verfügbar. Wenn dies erledigt ist, sollten Sie sehen, dass Sie jetzt eine * .Designer.cs-Datei zur Verfügung haben und Ihre Steuerelemente im Design-HTML für Ihr Steuerelement verfügbar sind.
PS: Dies sollte nicht im Debug-Modus erfolgen, da beim Debuggen nicht alles "neu kompiliert" wird.
Einige Leute haben auch Erfolg gemeldet, indem sie (eine Sicherungskopie Ihrer .designer.cs-Datei erstellt und dann) die .designer.cs-Datei gelöscht haben. Erstellen Sie eine leere Datei mit demselben Namen neu.
Zu dieser Antwort gibt es viele Kommentare, die Tipps hinzufügen, wie die Datei designer.cs am besten neu erstellt werden kann.
quelle
Nun, ich habe eine Lösung gefunden, die funktioniert, obwohl ich sie nicht wirklich mag. Ich musste die Datei .designer.cs löschen und dann eine leere Datei mit demselben Namen neu erstellen. Als ich zurückkam und die Aspx-Datei erneut speicherte, wurde die Designer-Datei neu generiert.
Dodgy!
quelle
Ich benutze die folgende Methode, die jedes Mal funktioniert:
Neu kompilieren.
quelle
<name>.aspx.designer.vb
, damit sie funktioniertIch habe kürzlich gesehen, dass ich das gleiche Problem hatte. Visual Studio 2010 lehnte es ab, die Designer-Datei zu aktualisieren.
Wie sich herausstellt, ändert VS die Designer-Datei nicht für eine Seite, die CodeFile (Auslaufen von Seiten) anstelle von CodeBehind (DLL) verwendet. Dies gilt unabhängig davon, wie oft Sie VS schließen, das Projekt neu laden, die Steuerelemente neu erstellen oder eine Datei ändern. Nichts würde VS dazu veranlassen, den Designer neu zu generieren. Es ist, als würde die Designer-Datei für CodeFile-Seiten nicht erstellt, sondern muss vorhanden sein.
Ich habe es in CodeBehind geändert und die Seite gespeichert. Die Designer-Datei wird sofort aktualisiert. Dann habe ich es einfach wieder geändert und alles war noch golden. Dieses Verhalten scheint in VS 2010 / .NET 4.0 neu zu sein, da VS 2008 standardmäßig nicht darunter gelitten hat.
Es ist dieser Teil:
Ändern Sie CodeFile in CodeBehind, speichern Sie es und kehren Sie dann zurück.
quelle
Es gibt noch eine andere Möglichkeit: Möglicherweise liegt ein Fehler in Ihrer ASPX-Datei vor, der es Visual Studio nicht ermöglicht, den Designer neu zu generieren.
Wenn Sie zur Entwurfsansicht wechseln, wird das Steuerelement als nicht gerendert angezeigt. Durch das Korrigieren des Steuerelements (in meinem Fall war es ein zusätzliches Anführungszeichen in den Eigenschaften) und das Neukompilieren sollte der Designer neu generiert werden.
quelle
Die meisten der hier aufgeführten Lösungen funktionieren nicht, wenn Sie Visual Studio 2013 und möglicherweise 2012 ausführen. Microsoft hat wahrscheinlich einige Optimierungen eingeführt, um die IDE schneller zu machen. Infolgedessen haben sie die Anzahl der Fälle reduziert, die den Codegenerator auslösen. Die folgenden Szenarien, die früher nicht mehr funktionierten, funktionieren nicht mehr:
Die Lösung ist überraschend einfach, aber etwas umständlich. Um den Codegenerator auszulösen, ändern Sie etwas, für das die Datei designer.aspx.cs generiert werden muss. Das Ändern von Inhalten, die keinen Einfluss auf den Code haben, z. B. ein CSS-Stil oder das Hinzufügen von Text, löst den Codegenerator nicht aus. Sie müssen ein referenziertes Steuerelement ändern. So geht's:
Ändern Sie im ASCX oder AspX die ID des Steuerelements
zu
Gehen Sie zu ascx.cs oder aspx.cs und stellen Sie sicher, dass Sie alle Verweise auf "MyLink" in "theLINK" umbenennen. Speichern und bauen und das sollte gut gehen.
quelle
Ich weiß nur, dass ich die Designer-Datei löschen und in eine Web-App konvertieren muss. Wenn Sie dies jedoch tun, wird normalerweise der Fehler angezeigt, warum es überhaupt nicht automatisch neu generiert wurde. Dies ist normalerweise eine Steuerungsreferenz, die nicht im Kopf der Seite deklariert ist.
quelle
int Id
Eigenschaft, die in C # einwandfrei kompiliert wurde, da zwischen Groß- und Kleinschreibung unterschieden wird. AberID="ControlName"
auf der Aspx-Seite wurde versucht, dies zu tunId = "ControlName"
.Convert to Web App
sagte so etwas wieControlName cannot be converted to Int32
.In Webanwendung konvertieren hat bei mir nicht funktioniert.
Das Löschen von designer.cs und das Einfügen einer leeren designer.cs funktionierte ebenfalls nicht.
Aber ja das hat funktioniert:
Erledigt. Neue designer.cs generiert. :) :)
quelle
Ich habe oft festgestellt, dass das Kopieren / Einfügen dieses Verhalten für mich verursacht hat. Die meisten Fälle können durch Bearbeiten der ID eines Serversteuerelements gelöst werden (fügen Sie einfach ein Zeichen hinzu und löschen Sie es).
Denken Sie auch daran, dass die Steuerung in Dingen wie Repeatern in der Designer-Datei nicht sichtbar ist.
Und ja, es gibt Fälle, in denen Sie die oben aufgeführte Magie zum Löschen der Datei ausführen müssen - aber die Lösung zur Namensänderung funktioniert die meiste Zeit.
quelle
Meine Erfahrung ist , dass , wenn Sie wie in tun möchten diese Artikel , wie oben angegeben.
Ihre Markup-Datei (aspx / ascx) muss das Attribut CodeBehind = "MyPage.aspx.cs" enthalten, sonst funktioniert es nicht. Ich darüber gebloggt hier .
quelle
Ich habe einen Weg gefunden, dieses Problem zu lösen, ohne Code zu ändern oder Befehle wie "In Webanwendung konvertieren" auszuführen - und es ist auch einfach!
Was ich fand, war, dass ein Neustart von Visual Studio das Problem oft löst, aber manchmal nicht. In diesen Fällen hat es bei mir immer funktioniert , wenn Sie Visual Studio schließen und dann den gesamten Inhalt im Verzeichnis "obj" für das Webprojekt löschen, bevor Sie es erneut öffnen.
(Wenn Sie erneut starten, fügen Sie einfach ein Leerzeichen hinzu und entfernen es erneut. Klicken Sie dann auf Speichern, um die Designer-Datei ordnungsgemäß neu zu generieren.)
quelle
(Das Folgende stammt aus Erfahrung mit VS2005.)
Wenn Sie während des Debuggens eine ASPX-Seite bearbeiten, wird der Codebehind nicht mit den neuen Klassen aktualisiert. Sie müssen also das Debuggen beenden, die ASPX-Seite trivial bearbeiten (z. B. eine Schaltfläche oder etwas hinzufügen), dann auf Entwurfsansicht klicken und dann die Schaltfläche löschen. Dann sollten Ihre Designer-Dateien aktualisiert werden.
Wenn Sie ein anderes Problem mit VS2008 haben, kann ich nicht helfen.
quelle
Wenn Sie sich in der Entwurfsansicht befinden, klicken Sie mit der rechten Maustaste auf den Bildschirm und klicken Sie auf Aktualisieren.
quelle
Eine andere Sache, die funktionierte, war -
einzuschließen ZB:
<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
quelle
Wenn Sie VS2013 oder höher verwenden, stellen Sie sicher, dass der Code, auf den mit dem Attribut "CodeBehind" verwiesen wird, nicht "CodeFile" ist, und führen Sie die folgenden Schritte aus
quelle
quelle
Hier ist, was ich erlebt habe: Wählen Sie den Website-Ordner aus, klicken Sie mit der rechten Maustaste in den Projektmappen-Explorer, wählen Sie In Webanwendung konvertieren für alle Aspx-Dateien, die eine Designer-Datei generiert.
Sameer
quelle
Nur um die lange Liste der Antworten hier zu ergänzen - ich bin gerade auf dieses Problem in VS2010 (SP1) mit einer ASPX-Datei gestoßen. Ich habe versucht, Standard-ASP-Steuerelemente hinzuzufügen und zu entfernen (was in der Vergangenheit funktioniert hat), aber am Ende musste ich eine der Zeilen runat = server aus einem vorhandenen Steuerelement entfernen (und speichern), um die Neuerstellung der Designer-Datei zu erzwingen.
quelle
Ich bin seit Jahren auf dasselbe Problem gestoßen, als ich in Visual Studio 2008 gearbeitet habe. Und ich habe jede "Lösung" in StackOverflow und Dutzenden von Blogs ausprobiert, genau wie ich sicher bin, dass Sie alle dies getan haben. Und manchmal funktionieren sie und manchmal nicht, so wie ich sicher bin, dass Sie alle darauf gestoßen sind. Und anscheinend ist es immer noch ein Problem in VS2010 und VS2012.
Vor ein paar Monaten entschied ich schließlich, dass genug genug war, und über ein paar Wochen baute ich ein Tool namens "Redesigner", das .designer-Dateien generiert. Es ist Open Source unter der BSD-Lizenz , mit dem auf SourceForge verfügbaren Quellcode - kostenlos zu verwenden, kostenlos zu stehlen, kostenlos zu tun, was immer Sie wollen. Und es macht das, was Visual Studio so oft nicht macht, nämlich .designer-Dateien schnell und zuverlässig zu generieren.
Es ist ein eigenständiges Befehlszeilentool, das ASPX- und ASCX-Dateien analysiert, alle erforderlichen Reflexionszauber ausführt und korrekte Designer-Dateien ausspuckt. Es führt die gesamte Analyse und Reflexion selbst durch, um zu vermeiden, dass Sie sich auf vorhandenen Code verlassen, von dem wir alle wissen, dass er zu gut ist. Es ist in C # gegen .NET 3.5 geschrieben, aber es ist schwierig, nicht einmal System.Web für andere Zwecke als Typdeklarationen zu verwenden, und es verwendet Visual Studio überhaupt nicht oder verlässt sich nicht darauf .
Redesigner kann neue .designer-Dateien generieren. und es bietet eine --verbose-Option, damit Sie im Fehlerfall weitaus bessere Fehlermeldungen erhalten als "Ausnahme vom Typ System.Exception wurde ausgelöst". Und es gibt eine --verify-Option, mit der Sie feststellen können, wenn Ihre vorhandenen .designer-Dateien beschädigt sind - fehlende Steuerelemente, fehlerhafte Eigenschaftsdeklarationen, die von Visual Studio nicht gelesen werden können oder auf andere Weise einfach nur kaputt sind.
Wir haben es an meinem Arbeitsplatz verwendet, um uns den größten Teil des letzten Monats aus Staus herauszuholen, und während Redesigner noch eine Beta ist, ist es weit genug fortgeschritten, dass es sich lohnt, seine Existenz mit der Öffentlichkeit zu teilen. Ich beabsichtige bald, ein Visual Studio-Plugin dafür zu erstellen, damit Sie einfach mit der rechten Maustaste klicken können, um Designer-Dateien so zu überprüfen oder neu zu generieren, wie Sie es sich immer gewünscht haben. In der Zwischenzeit ist die Verwendung der Befehlszeile jedoch recht einfach und erspart Ihnen viele Kopfschmerzen.
Wie auch immer, eine Kopie von Redesigner geht jetzt herunterladen und stoppen Sie Ihr Haar herausziehen . Sie werden es nicht immer brauchen, aber wenn Sie es tun, werden Sie froh sein, dass Sie es haben!
https://sourceforge.net/projects/redesigner/
quelle
TL; DR;
Bearbeiten Sie das
Inherits
Attribut der@Page
Anweisung der ASPX-Seite und klicken Sie auf Speichern. Ihre Designer-Datei sollte neu generiert werden.Stellen Sie sicher, dass
Inherits
= <Namespace>. <Klassenname> undCodeBehind
= <Klassenname> .aspx.csIch habe versucht, dies in einem Sharepoint 2010-Projekt mit VS 2010 und TFS zu tun , und keine der oben genannten Lösungen hat für mich funktioniert. In erster Linie fehlt bei Verwendung von TFS in VS 2010 die Option "In Webanwendung konvertieren" im Kontextmenü der ASPX-Datei.
Diese Antwort hat endlich geholfen . Meine Klasse sah so aus:
Und meine
@Page
Anweisung war (Zeilenumbrüche hier aus Gründen der Klarheit):Ich habe das zuerst
Inherits
in MyProjects.Finance.Pages geändert , auf Speichern geklickt , dann wieder in MyProjects.Finance.Pages.FinanceSubmission geändert und erneut auf Speichern geklickt . Und Wallah! Die Designerseite wurde neu generiert!Hoffe das hilft jemandem mit TFS!
quelle
Im Visual Studio:
1) Entfernen Sie Ihre Datei aspx.designer.cs
2) Klicken Sie mit der rechten Maustaste auf Ihre Aspx-Datei und wählen Sie "In Webanwendung konvertieren". Dadurch sollte die Datei aspx.designer.cs wieder aktuell sein.
Wenn Sie eine Fehlermeldung erhalten:
"Generierung der Designer-Datei fehlgeschlagen: Die Methode oder Operation ist nicht implementiert."
Schließen Sie Visual Studio, öffnen Sie Ihr Projekt erneut und führen Sie Schritt 2 erneut aus
Wie generiere ich aspx.designer.cs in Visual Studio?
quelle
Schritt 1 : Wählen Sie Ihren gesamten Aspx-Code aus, schneiden Sie diesen Code mit [STRG + X] aus und speichern Sie ihn.
Schritt 2 : Fügen Sie erneut denselben Code auf derselben Seite ein und speichern Sie ihn erneut
Jetzt wird Ihre .desinger-Seite mit allen Steuerelementen auf der ASPX-Seite aktualisiert.
quelle
Löschen Sie die Datei designer.cs, klicken Sie mit der rechten Maustaste auf die ASPX-Datei und wählen Sie "In Webanwendung konvertieren". Wenn es ein Problem mit Ihren Steuerelementdeklarationen gibt, z. B. wenn ein Tag nicht gut geformt ist, wird eine Fehlermeldung angezeigt, und Sie müssen das fehlerhafte Tag korrigieren, bevor Visual Studio Ihre Designer-Datei erfolgreich neu generieren kann.
In meinem Fall stellte ich zu diesem Zeitpunkt fest, dass das Problem darin bestand, dass ich ein Schaltflächensteuerelement deklariert hatte, das sich nicht in einem Formular-Tag mit dem Attribut runat = "server" befand.
quelle
Dies ist ein Fehler in der IDE. Ich habe es seit VS 2003 gesehen. Die Lösung ist jedoch einfach.
Speichern Sie Ihre Dateien. Beenden Sie die IDE vollständig (stellen Sie sicher, dass der Prozess stoppt, Task-Manager).
Öffnen Sie die Lösung erneut, verschmutzen Sie das Markup und speichern Sie es. Fest.
quelle
Ich hatte zwei Probleme ... veraltetes AJAXControlkit - löschte die alte DLL, entfernte alte Steuerelemente aus der Toolbox, lud die neue Version herunter, lud die Toolbox und zog neue Steuerelemente auf die Seite und legte sie dort ab (siehe http://www.experts-exchange.com) /Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html )
Hatte auch Rechtschreibfehler in meiner Label-Kontrolle (hatte 'Klasse' anstelle von 'CSS-Klasse' verwendet).
Ta
quelle
Ich hatte das Problem, dass meine neuen Steuerelemente nicht in der Designer-Datei generiert werden, wenn sie in der .ascx-Datei deklariert werden. Das Problem war, dass ich sie auch im Code dahinter deklariert habe. Das Löschen der Deklaration im Code dahinter hat mein Problem gelöst.
quelle
Wenn Sie wie ich sind und einem neueren Projekt alte ASPX-Dateien hinzufügen. Sie werden wahrscheinlich einige der auf der Seite verwendeten Steuerelemente vergessen.
Wenn ja, als erstes, wenn Sie mehrere Dateien installieren; Beheben Sie zuerst einen nach dem anderen.
Beheben Sie beim Kompilieren die generierten Fehler. Es werden wahrscheinlich die gleichen Fehler in allen Dateien sein.
Wenn Sie Designer-Dateien haben, löschen Sie als Nächstes alle eingefügten Designer-Dateien. Stellen Sie als Nächstes sicher, dass beim Kompilieren keine anderen Fehler als die Designer-Dateien auftreten.
Klicken Sie abschließend mit der rechten Maustaste auf Ihr Webprojekt und klicken Sie auf In Webanwendung konvertieren. Dadurch werden die benötigten Designer-Dateien eingefügt.
Dies sind die absolut besten Schritte, um die Probleme zu beheben.
quelle
Eine Sache, die niemand erwähnt hat, ist der Besuch der Seite . Ich habe meine Designer-Datei nicht mehr neu generieren lassen, weil ich ein Benutzersteuerelement eingefügt habe, das (aus verschiedenen Gründen) nicht vorhanden war, und keines der hier vorgeschlagenen Dinge hat funktioniert. Aus irgendeinem Grund habe ich in Visual Studio keine Fehler erhalten - abgesehen davon, dass ich mich darüber beschwert habe, dass meine clientseitigen Steuerelemente nicht vorhanden waren, weil sie natürlich nicht neu generiert wurden.
Es dauerte tatsächlich einen Besuch der Seite, bis ASP.Net mir den Fehler mitteilte.
quelle
Dies kann auch passieren, wenn Sie den Namespace aktualisieren und den Namespace in der Designer-Datei nicht aktualisieren. Fix: Aktualisieren Sie auch den Namespace in der Designer-Datei.
quelle
Die Lösung, die für mich funktioniert hat, ist:
Ich habe die Seite einfach kopiert und in denselben Bereich eingefügt, dann die erste Seite (wie auch immer) umbenannt und die kopierte Seite in die Originalseite umbenannt. Jetzt sind die Steuerelemente zugänglich.
quelle