Wie erzwingen Sie, dass Visual Studio die .designer-Dateien für aspx / ascx-Dateien neu generiert?


395

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

57
Es ist lächerlich, dass Visual Studio 2012 noch kein Kontextmenüelement zum Neuerstellen von Designerdateien aus Quelldateien hat. Es ist vergleichbar damit, dass eine beschädigte DLL nicht wiederhergestellt werden kann. Ich verstehe es nicht. Besonders mit externer Quellcodeverwaltung und externen Editoren bleibt Visual Studio verkrüppelt. Geldverschwendung, wenn Sie mich fragen. Ich versuche tatsächlich, Ressourcendateidesigner neu zu generieren. Ich habe es geschafft, es neu zu bearbeiten , aber es ist durch Dunkelheit ... Augh !!! 1
Bambams

3
@bamccaig, wenn ich einen Cent für jedes seltsame "Feature" wie dieses hätte, wäre ich reicher als Bill Gates. Wenn Sie der Meinung sind, dass dies schlecht ist, überprüfen Sie, wo Outlook Express seine E-Mail-Daten speichert. Es befindet sich tief im Benutzerordner unter einem kryptischen Ordnernamen, der standardmäßig ausgeblendet ist.
ATL_DEV

13
Gibt es eine Lösung für VS 2015?
Anton

Siehe ähnlichen stackoverflow.com/questions/6508252/... für andere Versuche.
Goodeye

2
Keine dauerhafte Korrektur, stellt jedoch die Steuerelementreferenzen in der CS-Datei wieder her: 1. Öffnen Sie die zugehörige ASPX-Datei. 2. Löschen Sie das einzelne ">" am Ende der <%@ PageAnweisungszeile. 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.
ingredient_15939

Antworten:


368

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.


1
Dies funktionierte nur für mich, nachdem alle Instanzen (auch solche mit völlig anderen Lösungen) von VS2008
Kevin

11
Ich fand, dass der Wechsel vom Debug-Modus zum Release-Modus den Trick für mich
Chris

5
Ich wollte nur sagen, dass ich den gleichen Fehler hatte und alles auf dieser Seite ausprobiert habe, ohne dass etwas funktioniert hat. Es stellte sich heraus, dass mir ein ">" close-Tag auf einem div fehlte, das runat = "server" hatte. VS-2008 ausführen.
Ber53rker

10
Um "In Webanwendung konvertieren" anzuzeigen, müssen Sie zuerst die Datei Designer.cs löschen, indem Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Aspx-Datei klicken und Löschen auswählen. Dies funktionierte für mich in VS 2010.
DeveloperDan

43
VS2013 verfügt über die Option In Webanwendung konvertieren im Menü Projekt. Nur nicht mehr im Kontextmenü.
Dennis Burton

95

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!


3
Das hat auch bei mir funktioniert. Nicht ideal. Keine Ahnung, warum die ursprüngliche Desginer-Datei nicht mehr ordnungsgemäß aktualisiert wurde.
Iain Holder

3
Das hat bei mir nicht funktioniert. Jetzt habe ich eine leere Datei und der gesamte Code dahinter funktioniert nicht !!! Neustart ...
DiningPhilanderer

7
Das hat bei mir funktioniert. Ich habe darauf geachtet, das Original zu löschen, eine neue designer.cs-Datei mit demselben Namen zu erstellen, die neue Datei zu schließen, die .as (p / c) x-Datei leicht zu ändern, um ein Speichern zu erzwingen, dann war alles in Ordnung.
TJB

9
Wenn Sie einen Fehler beim Kompilieren der Ansicht haben, wird dieser nicht zurückgegeben. Im Allgemeinen hört es deshalb überhaupt nicht mehr auf zu regenerieren. Sie müssen die Ansichtskompilierung aktivieren, um sie zu sehen, was nicht einfach ist.
DevelopingChris

1
Ich musste auch die leere Datei in mein Projekt aufnehmen.
JP Hellemons

78

Ich benutze die folgende Methode, die jedes Mal funktioniert:

  • Wählen Sie den gesamten Code-in-Front (HTML-Markup usw.) im Editor der aspx / ascx-Datei aus.
  • Schnitt.
  • Speichern.
  • Einfügen.
  • Speichern.

Neu kompilieren.


1
Ich denke, nur ein einzelnes Steuerelement zu löschen und es erneut hinzuzufügen, hat den gleichen Effekt.
Chris

Ich habe das gemacht und es hat bei mir funktioniert. Ich musste jedoch eine leere Datei erstellen, die aufgerufen wurde <name>.aspx.designer.vb, damit sie funktioniert
Tahir Hassan,

64

Ich 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:

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

Ändern Sie CodeFile in CodeBehind, speichern Sie es und kehren Sie dann zurück.


Spät zu diesem Thread. Keine der oben beschriebenen Antworten erzwingt die Auflistung der Steuerelemente in der * .aspx.designer.cs. Ich hatte gehofft, dass dies der Fall sein würde, aber es erzwingt immer noch nicht, dass die Steuerelemente in der Datei * .aspx.designer.cs deklariert werden. Ich verwende VS 2010 Pro SP1. Ich versuche, dies mit einer der Standarddateien zum Laufen zu bringen, die die IDE in / Account wie ChangePassword.aspx generiert. Vielen Dank.
Paparush

1
Meins wurde auf CodeFile gesetzt, ich habe auf CodeBehind geändert, gespeichert, zurück zu CodeFile, gespeichert, alles ist golden. Die vorherigen Korrekturversuche haben es für mich nicht getan. VS 2010 Pro
Dan

37

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.


Ich hatte das gleiche Problem, die Benutzersteuerung hatte Fehler, so dass die Seiten, die die Benutzersteuerung verwenden, aufgrund der Fehler in der Benutzersteuerung nicht verwandte Fehler hatten.
Ronen Festinger

1
Gleiche Ursache. Ich hatte ein nicht unterstütztes Attribut sichtbar = "falsch" zu einer Asp-Schaltfläche hinzugefügt. Ich habe es entfernt und der Designer-Code wurde neu generiert.
chingNotCHing

21

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:

  1. Aspx- oder ASCX-Datei löschen - Überprüft diesen Fall nicht mehr
  2. Schneiden Sie den gesamten Inhalt aus und fügen Sie ihn erneut in die Aspx- oder Ascx-Datei ein. Funktioniert nicht mehr, keine Änderung der Referenzen
  3. In Webanwendung konvertieren - Option nicht mehr verfügbar
  4. Willkürliches Ändern des Inhalts der Aspx / Ascx-Datei - Funktioniert nicht mehr (siehe 2).

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

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

zu

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

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.


Sehr guter Punkt zu Änderungen in der neueren Version von Visual Studio. Was für mich funktionierte, anstatt wie oben mit den IDs herumzuspielen, war, die Designer-Datei zu löschen, dann ein brandneues, harmloses Steuerelement wie <asp: PlaceHolder ID = "Foo" runat = "server /> hinzuzufügen und dann zum Auslösen zu speichern Regeneration. Selbst wenn Sie vergessen, es zu entfernen, ist nichts betroffen.
Jordan Rieger

8
3. 'In Webanwendung konvertieren' wird im Menü 'PROJEKT' verfügbar gemacht, wenn eine entsprechende Datei ausgewählt ist.
WynandB

2
Hmm. Leider ist diese Option nicht verfügbar, wenn es sich bereits um eine Webanwendung handelt.
ATL_DEV

Eine schnelle Änderung besteht darin, den Namespace-Teil des Attributs Inherits = zu bearbeiten. Dadurch sollte der Namespace in der Designer-Datei bearbeitet und der gesamte Inhalt neu generiert werden. Ich habe es gerade mit VS2013.3 versucht.
David Russell

Hallo, ich versuche es normalerweise so, wie Sie es angegeben haben, aber das Problem ist, dass ein anderer Benutzer keine g.cs-Datei generieren kann, während dies nur der Administrator kann. Wir verwenden TFS. Mit der Benutzer-ID mehrerer Entwickler in VS können wir g.cs generieren. Welche Rechte sind erforderlich, um g.cs auf Server, TFS & SP zu generieren?
Nirav

14

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.


Es tut mir leid, dass es nicht funktioniert hat. Es hat in VS 2008 für mich funktioniert, seit ich damit angefangen habe. Gibt es einen Syntaxfehler auf Ihrer Seite? Sie sollten ein Dialogfeld erhalten, in dem Sie erfahren, was zu beheben ist, damit es funktioniert.
Entwicklung von

Das hat bei mir funktioniert. Die CodeBehind-Klasse hatte eine int IdEigenschaft, die in C # einwandfrei kompiliert wurde, da zwischen Groß- und Kleinschreibung unterschieden wird. Aber ID="ControlName"auf der Aspx-Seite wurde versucht, dies zu tun Id = "ControlName". Convert to Web Appsagte so etwas wie ControlName cannot be converted to Int32.
Nelson Rothermel

9

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:

  1. Alle auswählen (Default.aspx)
  2. Schnitt
  3. Speichern Sie Default.aspx
  4. Einfügen
  5. Speichern Sie Default.aspx

Erledigt. Neue designer.cs generiert. :) :)


Ich kann bestätigen, dass dies in VS2013 funktioniert. Ich habe es gerade getan und meine Probleme gelöst.
ToastyMallows

Du. haben. habe. zu. Sein. Scherz. mir. Dies funktionierte bei mir in VS2015, beim Konvertieren wie in der ausgewählten Antwort nicht.
GraehamF

6

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.


2
Das ist die Art von Fehler, die ich oft habe. Wenn Sie HTML von einer Seite auf eine andere kopieren und Steuerelemente mit runat = "server" haben, werden die Steuerelemente umbenannt, um Konflikte zu vermeiden. Wenn Sie jedoch "HTML-Kommentar" -Tags <! - whaterver -> einfügen, werden die Steuerelement-IDs nicht geändert, und bei Konflikten wird die Neuerstellung der Designer-Datei gestoppt, da zwei Steuerelemente mit derselben ID vorhanden sind. Dies liegt daran, dass auch Steuerelemente in HTML-Tags "Kommentare" erstellt werden. ;)
Thomasofen

5

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 .


Dieses Attribut wurde hinzugefügt und dann gespeichert. nichts. Dann die Vererbungen entfernt, gespeichert, wiederhergestellt und voila die Designer-Code-Datei wurde aktualisiert! Diese lästige Funktion erwischt mich jedes Mal :-(
GlennG

Beide Links sind tot = (
Maslow

5

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.)


Ich habe dieses Problem mit einer Legacy-App, für deren Unterstützung ich verantwortlich bin. Ich möchte mich dafür bedanken, dass Sie darauf hingewiesen haben. Ich darf nicht in eine Webanwendung konvertieren ", eine neue Lösung erstellen oder etwas anderes tun, als Fehler zu beheben. Der Designer würde für mich ständig abstürzen. Aber das hat bisher geholfen.
Jamie Taylor

4

(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.


Ich bin mit VS.Net 2010 darauf gestoßen ... musste genau das tun ... Danke @EndangeredMassa für den Tipp ... Ich habe das auch in den Tagen von VS.Net 2002/2003 durchgemacht ... Ich wünschte, ich wusste das damals;)
Richard B

4

Wenn Sie sich in der Entwurfsansicht befinden, klicken Sie mit der rechten Maustaste auf den Bildschirm und klicken Sie auf Aktualisieren.


3

Eine andere Sache, die funktionierte, war -

  1. Manuelles Löschen und dann Erstellen einer Designer-Datei im Dateisystem.
  2. Projektdatei bearbeiten .
  3. Code hinzufügen, um Designer
    einzuschließen ZB:<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
  4. Projekt neu laden
  5. Öffnen Sie als (c / p) x-Datei im Design- / Ansichtsmodus und speichern Sie sie.
  6. Überprüfen Sie die Designer-Datei. Code wird da sein.

3

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

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %>
  • Erstellen Sie eine leere Designerseite (oder löschen Sie sie, wenn sie bereits vorhanden ist "yourControl.ascx.designer.cs").
  • Kopieren Sie im ASCX (oder AspX) den gesamten Code, löschen Sie ihn und speichern Sie ihn. erneut einfügen und dann speichern.
  • Die Designer-Datei sollte jetzt ausgefüllt sein.

2
  • Wählen Sie alles in der Designer-Datei aus, löschen Sie alles in der Datei, lassen Sie es leer und speichern Sie es
  • Wählen Sie alles in der ASPX / ASCX-Datei aus, schneiden Sie alles aus und fügen Sie es erneut ein
  • Die Designer-Datei sollte den Code neu generiert haben

1
Das hat bei mir funktioniert! Ich habe auch die ASPX-Datei gespeichert, nachdem ich alles ausgeschnitten habe. Zurück eingefügt, gespeichert und meine (zuvor leere) Designer-Datei wurde vollständig ausgefüllt.
DaveD

2

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


2

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.


2

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/


scheint wie ein Overkill für eine einfache Lösung
Chris McGrath

1
@ChrisMcGrath Vielleicht übertrieben, aber ich habe den Schmerz gespürt, der dieses Tool ausgelöst hat. Ich bewundere sein Engagement, die Zeit für den Bau zu investieren :)
Jordan Rieger

2

TL; DR;
Bearbeiten Sie das InheritsAttribut der @PageAnweisung der ASPX-Seite und klicken Sie auf Speichern. Ihre Designer-Datei sollte neu generiert werden.

Stellen Sie sicher, dass Inherits= <Namespace>. <Klassenname> und CodeBehind= <Klassenname> .aspx.cs


Ich 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:

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

        // more code
    }
}

Und meine @PageAnweisung war (Zeilenumbrüche hier aus Gründen der Klarheit):

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

Ich habe das zuerst Inheritsin 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!


2

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?


2
"In Webanwendung konvertieren" ist im Kontextmenü einer Aspx-Datei nicht vorhanden. Zumindest nicht in VS Professional 2015.
Chris Walsh

2
  1. Schritt 1 : Wählen Sie Ihren gesamten Aspx-Code aus, schneiden Sie diesen Code mit [STRG + X] aus und speichern Sie ihn.

  2. 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.


1

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.


1

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.



1

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.


1

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.


1

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.


1

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.


1

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.