[Visual-studio-2008] Die Benutzersteuerung stürzt Visual Studio immer ab


Answers

Ihr Benutzersteuerelement verfügt möglicherweise über eine Eigenschaft, die wie folgt geschrieben wird:

private int myPropName; // note the lowercase m
public int MyPropName { get { return MyPropName; } } // the property is returned
                                                     // instead of the variable

Beachten Sie, dass der von get zurückgegebene Wert die Eigenschaft selbst ist. Dies stürzt VStudio 2008 ab, wenn versucht wird, die Eigenschaften des Steuerelements zu sehen, was auch passiert, wenn das Steuerelement (per Drag'n Drop oder sonst) zu einem Formular hinzugefügt wird.

Wie von NickAldwin darauf hingewiesen, generiert dies keine Compiler-Warnung oder Fehler.

Question

Ich versuche, ein Benutzersteuerelement in einem unserer Projekte zu öffnen. Es wurde, glaube ich, in VS 2003 erstellt und das Projekt wurde in VS2008 konvertiert. Ich kann den Code gut sehen, aber wenn ich versuche, die Designer-Ansicht zu laden, reagiert VS nicht mehr und ich muss es mit dem Task-Manager schließen. Ich habe versucht, es für einige Minuten laufen zu lassen, aber es tut nichts. Ich habe "devenv / log" ausgeführt, aber im Log nichts Ungewöhnliches gesehen. Ich kann nirgendwo eine spezifische Fehlermeldung finden. Irgendeine Idee, was das Problem sein könnte? Gibt es einen leichtgewichtigen Bearbeitungsmodus, den ich vielleicht verwenden kann oder etwas?

Der Grund, warum ich mir die visuelle Darstellung dieses Steuerelements ansehen muss, ist die Entscheidung, wo einige neue Komponenten eingefügt werden sollen.

Ich habe versucht es zu googeln und SO zu suchen, aber entweder weiß ich nicht was ich suchen soll oder es gibt nichts da draußen. Jede Hilfe wird geschätzt.

(Das Seltsamste ist, dass das Benutzersteuerelement anscheinend in einem anderen Projekt geladen wird, das darauf verweist, aber VS stürzt ab, sobald ich in diesem Projekt sogar darauf klicke.)

BEARBEITEN

Das Benutzersteuerelement ist ein Wrapper eines HTML-Editors eines Drittanbieters ... also nicht gerade etwas, was auf eine Datenbank zugreift.

Ich habe gerade versucht, das Steuerelement auf ein neues Projekt zu setzen, und es stürzte ab, sobald ich es auf das Formular gezogen habe.




Nach allem, was Sie getan haben, würde ich auch versuchen, das Benutzersteuerelement in ein brandneues Projekt zu laden und zu überprüfen, ob es korrekt geladen wird. und wenn es so ist, dann können Sie " entscheiden, wo Sie neue Komponenten einfügen " ... nur laut denken!




Vor kurzem hatte ich nervige Fehler nach dem Erstellen der Benutzersteuerung und befestigte es über Designer, Visual Studio 2010 würde immer abstürzen, wenn Design-Modus der gleichen Form, wo Benutzer-Steuerelement angeschlossen waren.

Nachdem ich so viele Male und viel experimentiert habe, löste ich mein Problem durch:

1 - Hinzufügen einer neuen class.cs-Datei zu Projekt 2 - Verschieben aller extra-unterstützenden Klassen, die ich selbst zur Benutzersteuerung hinzugefügt hatte 3 - Ich denke, das ist wichtiger: Verschieben aller benutzerdefinierten Delegaten, die Ereignisse auf User_Control in eine neu hinzugefügte Datei übertragen. 4 - Gelöschtes User_Control.Load-Ereignis.

Ich hoffe, dass dies jemandem helfen kann.

Prost




Ich hatte das gleiche Problem. In meinem Fall war das Problem (glaube ich), dass ich ein Member-Array in der Deklaration anstatt im Konstruktor initialisierte. Der Fehler war, dass das VisualStudio-Projekt für meine Anwendung sofort abstürzte, als ich versuchte, das benutzerdefinierte Steuerelement aus meiner Bibliothek zu verwenden, das die "schlechte" Deklaration hatte.

Es war frustrierend, weil meine benutzerdefinierte Komponente lib ohne Fehler kompiliert wurde.

Brooke

Code, der abgestürzt ist:

class MyCustomObject: UserControl
{
  private List<int> myList = new <int>List();
   public MyCustomObject(){
      InitializeComponent();
     }

// other code here
} 

Lösung

class MyCustomObject: UserControl
{
   private List<int> myList;
   public MyCustomObject(){
        InitializeComponent();
        myList= = new <int>List();
     }

// other code here
} 



Für mich hilft, Target Framework von ".Net Framework 4 Client Profile" auf ".Net Framework 4" in Projekteinstellungen zu ändern.