Impossible d'ajouter un contrôleur MVC VS2012 donne "référence d'objet non définie sur une instance d'un objet"
J'ai beaucoup cherché et ne peut pas trouver une autre personne sur la planète avec ce problème...
Les symptômes sont les suivants:
Dans Visual Studio 2012, sur un MVC 4.0 Projet qui a été mis à niveau à partir de VS2010 et est configuré pour le double de la version de l'édition de VS2012 et VS2010. Quand je clic droit sur le Dossier Controllers et sélectionnez Ajouter->Contrôleur de... dans le menu contextuel, j'obtiens un "Objet de référence non définie à une instance d'un objet" erreur à partir de Visual Studio.
Le code existant dans le projet fonctionne bien, et si j'utilise l'Add->un Nouvel Élément de l'option au lieu de cela, et choisir le Contrôleur à partir de la boîte de dialogue, puis je peux ajouter un contrôleur de vide. J'ai juste ne peut pas ajouter un tapé contrôleur à l'aide de la méthode ci-dessus.
Si j'ai créer un nouveau MVC4 Projet, alors je peux ajouter tapé les contrôleurs de nouveau en utilisant le même menu, de sorte que le problème n'existe pas dans Visual Studio, l'installation, il doit exister dans le Fichier de Projet.
J'ai aussi vérifié les références entre mon projet et un nouveau Projet MVC et de toutes les nouvelles références de projet sont inclus dans mon projet.
Quelqu'un a vécu quelque chose de semblable?
Comment puis-je résoudre ce problème?
source d'informationauteur Francois Grobler
Vous devez vous connecter pour publier un commentaire.
Le problème semble avoir été causé par une incomplètes installer/enregistrement de la MvcScaffolder paquet.
Le processus suivant résolu mon problème pour moi.
Démarrez Visual Studio et ouvrez le projet. Ouvrir le Gestionnaire de paquets de la Console. (C'était le "truc" ou manque de l'information qui a conduit à la solution...)
Ici, j'ai vu l'erreur suivante causés par le script PowerShell utilisée pour l'enregistrement:
Quand j'ai vérifié le régime enregistré d'scaffolders à partir du Gestionnaire de paquets de la Console j'ai:
Donc clairement le scaffolders sont configurés pour utiliser le MvcScaffolding paquet, mais le paquet avait une erreur d'enregistrement.
Une recherche rapide de l'erreur fournie ce lien http://mvcscaffolding.codeplex.com/discussions/437692 qui se réfère à https://visioautomation.codeplex.com/discussions/397034 que suggère l'installation de PowerShell 3, qui est en fait partie de la Windows Management Framework 3.0, disponible à partir de http://www.microsoft.com/en-us/download/details.aspx?id=34595. J'ai choisi le Windows6.1-KB2506143-x64.fichier msu lorsque vous y êtes invité parce que je suis sous Win 7-64 bits.
Redémarrer le PC après l'installation, ré-ouvrez Visual Studio et le projet et de regarder le Gestionnaire de paquets de la Console. Si l'erreur a disparu, puis est donc le problème de régulateur.
J'ai eu ce problème sur VS2012 sur Win8, où Nous travaillons sur un projet que nous avons commencé à développer sur VS2010 et je n'ai pas pu créer de nouveaux contrôleurs avec le CTRL+M CTRL+C raccourci.
D'ouverture d'un projet et d'une ré-installation MvcScaffolder et ses dépendances, sous manage Nuget package avons corrigé cela pour moi.
De ne pas avoir à redémarrer VS2012.
Peut-être que votre projet existant avoir de mauvaises ProjectTypeGuids élément .fichier csproj?
Droit pour MVC4 est {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
Essayer de comparer ce type de projet avez-vous dans un nouveau projet et à votre projet.
La préférée de la réponse de l'installation de Windows Management Framework 3.0 ne fonctionne pas. Télécharger "Windows6.1-KB2506143-x86.msu" ne fonctionne pas sur mon Windows 7 32 bits. Il a échoué avec le message d'erreur "La mise à jour n'est pas applicable à votre ordinateur".
Réinstallation MVCscaffolding à Gérer les Packages Nuget n'a pas de travail.
Mon ProjectType GUID a été correct.
Web de Microsoft Developer Tools a déjà été installé.
De supprimer et de recréer la solution n'a pas fonctionné.
Il a été nécessaire à la réparation de l'installation de Visual Studio 2012 à partir du disque d'installation pour résoudre ce problème.
De l'installation du "Web de Microsoft Developer Tools" corrigé cela pour moi. Connexes:
Comment puis-je ouvrir un csproj avec ProjectTypeGuids 349c5851-65df-11da-9384-00065b846f21?
La mise à jour Windows6.1-KB2506143-x64.msu a fonctionné pour moi. Le problème a commencé après un complet logiciel de SpyWare scan. Je pense qu'il supprime plus de choses que d'habitude. Donc, retour à la vie normale.
J'ai eu le même problème, im en utilisant la base de données tout d'abord, et c'est parce que j'ai changé le .edmx contex.tt pour générer le contex.cs avec le nom de la connexion définie à une méthode personnalisée,
: base(sqlHelper.getMainConnectionString())
à chaque fois, avant de me changer/mettre à jour la .edmx, j'ai besoin de changer le nom de la connexion, c'est la création de valeurs par défaut:
: base("nom=YourWebconfigConnectionstringName")
reconstruire le projet et il fonctionne à nouveau
Réponse:
Vérifier votre connectionstring chaîne et fournisseur de paramètres à la webconfig, puis de les supprimer et de recréer l' .edmx cela va forcer le générateur de reconstruire tous les objets de base de données, métadonnées OU de supprimer toutes les tables dans le concepteur, le changement le contex.cs à la valeur par défaut de création de nom de, reconstruire le projet, ajouter les tables, reconstruire le projet, il shoul de travailler à nouveau.
Ce problème se manifeste sur une cible MVC5 projet à l'aide de VS2017.
Comme l'original op, un nouveau projet a été tenté pour effectuer un Ajout de Contrôleur avec EF échafaudage contre ApplicationUser. L'erreur ne d'abord se manifester jusqu'à un seul utilisateur a été enregistré en forçant la base de données à créer. Après cela, ajouter un échafaudage a fonctionné sans incident. Je pense que cela a un sens parce que l'entité n'a pas vraiment encore exister avant la première inscription, bien que je vais rester corrigé si quelqu'un de plus compétent que moi a une explication plus précise. Mais parce que d'Ajouter un Contrôleur travaillé avec un nouveau projet, tout comme l'original op déterminé, il ne semble pas être un VS2017 problème d'installation. Cela indique quelque chose de mal avec le taret projet.
À ce point dans le projet cible Annuler Tous dans Team Explorer a été exécuté pour remettre le projet à déjà un point de fonctionnement. Tout cela peut être accompli par l'obtention d'une version spécifique, pour ce projet cible tout ce qui était nécessaire était un Annuler Tous. Un mot de prudence: dans le cas de ce projet spécifique, avant d'annuler, le Gestionnaire de paquets a été utilisé pour la restauration de la base de données pour le point de départ qui doit correspondre avec l'Annulation de Tous. Si l'on effectue une version spécifique, assurez-vous de vérifier si la base de données doit obtenir restaurées à la bonne configuration. Après la réinitialisation de toutes les modifications du projet, le
object reference not set to an instance of an object
erreur n'était plus présent lors de l'Ajout de Contrôleur de fonctionnement, la fixation de l'erreur dans le projet cible.Je poste cette réponse un peu à contrecœur parce que je suis incapable de reproduire l'erreur, et je ne suis pas sûr de ce qui est réellement à l'origine du problème en premier lieu, mais c'est particulièrement désagréable d'erreur si l'on est dans le milieu d'un projet et Ajouter un Contrôleur commence à tomber en panne. J'ai pensé que si quelqu'un a ce problème et revenir à l'actuel changement pourrait résoudre le problème pour eux, comme moi, ils seront reconnaissants. Si j'ai par la suite déterminer le motif de l'activité qui a causé le problème à se produire en premier lieu, je vais sûrement ajouter de plus à ce post.