432 Stimmen

Wie erzwingen Sie Visual Studio, um die .designer-Dateien für aspx/ascx-Dateien neu zu generieren?

Wenn ich eine Seite oder ein Steuerelement bearbeite, werden die .designer-Dateien manchmal nicht mehr mit den neuen Steuerelementen aktualisiert, die ich auf der Seite einfüge. Ich bin nicht sicher, was die Ursache dafür ist, 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 erwähnen sollen, dass ich es bereits versucht habe:

  • Schließen und erneutes Öffnen aller Dateien und von Visual Studio
  • Änderungen an einem runat="server"-Steuerelement auf der Seite vornehmen
  • Löschen und erneutes Einfügen der Seitenrichtlinie

23voto

ATL_DEV Punkte 8814

Die meisten der hier vorgestellten Lösungen funktionieren nicht, wenn Sie Visual Studio 2013 und möglicherweise 2012 verwenden. Microsoft hat wahrscheinlich einige Optimierungen vorgenommen, um die IDE schneller zu machen, und folglich die Anzahl der Fälle reduziert, die den Codegenerator auslösen. Die folgenden Szenarien, die früher funktionierten, funktionieren nicht mehr:

  1. Löschen Sie die aspx- oder ascx-Datei -- In diesem Fall wird nicht mehr geprüft
  2. Schneiden Sie den gesamten Inhalt aus und fügen Sie ihn erneut in die aspx- oder ascx-Datei ein - es funktioniert nicht mehr, die Verweise ändern sich nicht.
  3. In Webanwendung konvertieren -- Option nicht mehr verfügbar
  4. Willkürliche Änderung des Inhalts der aspx/ascx-Datei -- Funktioniert nicht mehr (siehe 2).

Die Lösung ist erstaunlich einfach, aber etwas umständlich. Um den Codegenerator auszulösen, müssen Sie etwas ändern, das die Generierung der designer.aspx.cs erfordert. Das Ändern von Inhalten, die keinen Einfluss auf den Code haben, wie z. B. ein CSS-Stil oder das Hinzufügen von Text, löst den Codegenerator nicht aus. Sie müssen ein referenziertes Steuerelement ändern. Und so geht's:

In der ascx oder aspx ändern Sie 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 zur ascx.cs oder aspx.cs und stellen Sie sicher, dass Sie alle Verweise auf "MyLink" ebenfalls in "theLINK" umbenennen. Speichern Sie die Datei und führen Sie einen Build durch, dann sollte alles funktionieren.

16voto

DevelopingChris Punkte 38437

Die einzige Möglichkeit, die ich kenne, ist, die Designerdatei zu löschen und eine Konvertierung in eine Webanwendung vorzunehmen. Allerdings, wenn Sie dies tun, erscheint es in der Regel mit dem Fehler, warum es nicht Auto-Regen in erster Linie, seine in der Regel ein Steuerelement ref, die nicht im Kopf der Seite deklariert ist.

10voto

O D Punkte 21

In eine Webanwendung konvertieren hat bei mir nicht funktioniert.

Das Löschen von designer.cs und Einfügen einer leeren designer.cs funktionierte ebenfalls nicht.

Aber ja, das hat funktioniert:

  1. Alles auswählen(Default.aspx)
  2. Schnitt
  3. Default.aspx speichern
  4. Kleister
  5. Default.aspx speichern

Erledigt. Neue designer.cs generiert :)

6voto

Overflew Punkte 7482

Ich habe oft festgestellt, dass Kopieren/Einfügen verursachte dieses Verhalten für mich. Die meisten Fälle können durch Bearbeiten der ID eines Server-Steuerelements gelöst werden (fügen Sie einfach ein Zeichen hinzu und löschen Sie es dann).

Denken Sie auch daran, dass Steuerelemente innerhalb von Dingen wie Repeatern in der Designerdatei nicht sichtbar sind.

Und ja, es gibt Fälle, in denen Sie die oben erwähnte Magie des Löschens von Dateien anwenden müssen - aber die Lösung mit der Namensänderung wird in den meisten Fällen funktionieren.

5voto

EndangeredMassa Punkte 16782

(Die folgenden Angaben stammen aus Erfahrungen mit VS2005).

Wenn Sie eine ASPX-Seite während des Debuggens bearbeiten, wird der Codebehind nicht mit den neuen Klassen aktualisiert. Sie müssen also das Debugging stoppen, die ASPX-Seite trivial bearbeiten (z. B. eine Schaltfläche hinzufügen oder so), dann auf Designansicht klicken und die Schaltfläche löschen. Dann sollten Ihre Designerdateien aktualisiert werden.

Wenn Sie ein anderes Problem mit VS2008 haben, kann ich Ihnen nicht helfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X