Ich verfolge ein Video-Tutorial, in dem ich eine leere ASP.NET Web
-Anwendung erstellen muss, bei der MVC
mit Visual Studio 2015
neu in der ASP.NET-Welt ist.
Ich habe mein Projekt gut erstellt. Als nächsten Schritt fügte ich eine Ansicht aus einem vorhandenen Controller
hinzu. Ich wurde von einem Messagebox-Fehler betroffen:
Error :
Beim Ausführen des ausgewählten Codegenerators ist ein Fehler aufgetreten: "Ungültiger Zeiger (Ausnahme von HRESULT: 0x80004003 (E_POINTER))"
Ich googelte das Problem, fand ähnliche Probleme, aber keine führte zu einer klaren Lösung. Einige ähnliche Probleme wurden von der anterioren Version von VisualStudio ausgegeben, aber wie gesagt, keine mit einer klaren Lösung.
Um zu klären, was ich erlebt habe, habe ich Schritt für Schritt getan:
Eine ASP.NET-Webanwendung ausgewählt:
Ausgewählte leere Vorlage mit aktivierter MVC:
Versuchte Add View
von einem Controller aus:
Einige Einstellungen ...
Der Fehler :
Was ist das Problem und was ist die Lösung dafür?
Update:
Es stellt sich heraus, dass selbst beim Versuch, die Ansicht manuell hinzuzufügen, derselbe Fehler angezeigt wird. Das Hinzufügen einer Ansicht ist auf alle Arten unmöglich!
Löschen Sie den ComponentModelCache. Der Cache wird beim nächsten Start von VS neu erstellt.
14.0 ist für Visual Studio 2015. Dies funktioniert auch für andere Versionen.
Führen Sie die folgenden Schritte aus, um eine Ansicht auf andere Weise als auf die übliche Weise hinzuzufügen:
Wenn Sie die von Ihnen erstellte Ansicht nicht öffnen können, klicken Sie einfach mit der rechten Maustaste auf die Ansichtsdatei, wählen Sie Öffnen mit und wählen Sie HTML (Webformulare) - Editor und dann OK.
Nehmen wir an, Sie verwenden einen Datenkontext in einer DLL. Nun, es war mein Fall, und ich weiß nicht, warum ich den gleichen Fehler habe, den Sie beschreiben. dann übergebe ich das Dbset an den korrekten datacontext und lösche den lokalen (Sie können es dort lassen, wenn Sie möchten, kann in der Zukunft hilfreich sein
wenn Sie bereit sind, es im lokalen Datenkontext zu verwenden, erstellen Sie einen neuen und übergeben Sie das Dbset an das richtige
Ich hatte dieses Problem mit einer anderen Fehlermeldung "-1 ist außerhalb der Grenzen von .."
Das einzige, was für mich funktionierte, war das Entfernen des Projekts aus der Projektmappe, indem Sie mit der rechten Maustaste auf das Projekt klicken und "Entfernen" auswählen. Klicken Sie dann mit der rechten Maustaste auf die Projektmappe, und wählen Sie das Projekt aus, um es erneut in die Projektmappe zu laden.
Nach dem erneuten Laden des Projekts kann ich jetzt wieder Ansichten hinzufügen.
nur für den Fall, dass jemand interessiert ist - die Lösung mit sauberem Cache hat bei mir nicht funktioniert. Ich habe es jedoch geschafft, ein Problem zu lösen, deinstallierte jedoch alle .Net-Frameworks im System und installierte sie dann nacheinander.
Versuchen Sie, den ComponentModelCache zu löschen.
1.Schließen Sie Visual Studio
2.Löschen Sie alles in diesem Ordner C:\Users\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
3.Starten Sie Visual Studio neu
4.Überprüfen Sie erneut
dies nutzte auch VS2017, um eine Lösung zu erhalten
Ich versuche gerade, mich mit MVC 4 vertraut zu machen. Ich habe eine Zeitlang mit MVC 5 gearbeitet, aber ich muss MVC 4 kennen, um meine MCSD-Zertifizierung zu erlernen. Ich verfolge ein Tutorial über Pluralsight, das auf viel ältere Versionen von Entity Framework und MVC abzielt (das Video wurde 2013 veröffentlicht!).
Ich habe vor genau zwei Stunden genau diesen Fehler gemacht und habe mir die Haare herausgerissen, um herauszufinden, was falsch ist. Glücklicherweise konnte ich, da das Projekt in diesem Tutorial bedeutungslos ist, im gesamten Prozess zurückgehen, um herauszufinden, was den Objektreferenzfehler nicht verursacht hat, und es zu beheben.
Was ich fand, war ein Fehler in der Struktur meiner tatsächlichen Lösung.
Ich hatte ein MVC-Webprojekt eingerichtet ('ASP.NET-Webanwendung ( .NET Framework )'), aber ich hatte auch 2 Klassenbibliotheken, eine mit meiner Datenzugriffsebene und eine mit der Domäneneinrichtung für Modelle, die eine Verbindung zu meiner Datenbank herstellen.
Dies waren beide vom Typ 'Class Library ( .NET Standard )'.
Das MVC-Projekt hat das nicht gefallen.
Nachdem ich neue Projekte des Typs 'Class Library ( .NET Framework )' erstellt und alle Dateien aus den alten Bibliotheken in die neuen kopiert und die Referenz für das MVC-Webprojekt repariert hatte, wurde ein Neustart durchgeführt Wiederholungsversuch erlaubte mir, die Ansicht korrekt zu rüsten.
Dies kann wie ein naheliegender Fix erscheinen. Legen Sie kein .NET-Standardprojekt neben einem .NET-Framework bereit und erwarten Sie, dass es normal funktioniert, aber es kann anderen helfen, dieses Problem zu beheben!
C:\Users\{WindowsUser}\AppData\Local\Microsoft\VisualStudio\16.0_8183e7d1\ComponentModelCache
Aus diesem Ordner entfernen für VS 2019 ....
Ich habe den gleichen Fehler aber in VS 2017, wenn ich einen Controller erstelle. Ich habe es genauso gemacht wie @ sh.alawneh. Ich habe auch versucht, das zu tun, was @longday geschrieben hat. Aber es hat nicht funktioniert. Dann versuche ich es anders:
Dort wähle ich einen neuen Controller und es funktioniert gut.
Vielleicht helfe ich jemandem.
Ich habe mir auch bei diesem den Kopf zerkratzt. In meiner Instanz stellte ich fest, dass ein zusätzlicher Abschnitt zu meiner Datei "Web.config" hinzugefügt wurde. Das Auskommentieren und Neuaufbau löste das Problem und ich konnte nun einen neuen Controller hinzufügen.
Überprüfen Sie in ASP.NET Core, ob Sie über das Paket Microsoft.VisualStudio.Web.CodeGeneration.Tools
Nuget verfügen, das Ihrer Projektversion entspricht.
Ich stieß auf ein ähnliches Problem, das die Codegenerierung verhinderte. Anscheinend hatten meine Metadaten unbekannte Eigenschaften oder Werte. Ich muss zugeben, dass ich nicht alle Antworten ausprobiert habe, aber wer wirklich die VN neu installieren oder eines der zahlreichen verwendeten Nuget-Pakete herunterladen möchte.
Die Reinigung des Projekts hat für mich funktioniert (Build-> Clean Solution) Der Generator verwendete einige veraltete Binärdateien, um den Controller und die Ansichten zu erstellen. Durch das Säubern der Lösung wurden die veralteten Binärdateien und voilà entfernt.
Mein Problem waren die in der Modellklasse verwendeten Typen.
Verwenden Sie die Typen wie folgt:
[NotMapped]
[Display(Name = "Image")]
public HttpPostedFileBase ImageUpload { get; set; }
[NotMapped]
[Display(Name = "Valid from")]
public Nullable<DateTime> Valid { get; set; }
[NotMapped]
[Display(Name = "Expires")]
public Nullable<DateTime> Expires { get; set; }
Funktioniert nicht mehr im Code Generator. Ich musste diese Typen und Gerüste ohne sie entfernen und später hinzufügen.
Es ist dumm, [NotMapped]
arbeitete beim Gerüstbau.
Verwenden Sie die Basistypen: int, string, byte usw. ohne die folgenden Typen: DateTime, List, HttpPostedFileBase usw.
Ich habe gerade mein Visual Studio neu gestartet und es hat funktioniert.