Échafaudage contrôleur ne fonctionne pas avec visual studio 2013 update 2
PROBLÈME:
J'ai mis à jour pour Visual Studio 2013 update 2 et maintenant je ne peux pas échafaudage contrôleurs.
Le problème n'est pas spécifique du projet: lorsque j'essaie d'échafaudage d'un contrôleur, j'obtiens l'erreur suivante et TOUT et TOUT projet:
There was an error running the selected code generator:
'Exception has been thrown by the target of an invocation.'
Il fonctionnait avant la mise à jour de Visual Studio 2013 update 2.
Ont googlé la question de la mort, mais aucune des diverses suggestions de travail
Par exemple:
-
En commentant OnModelCreating dans mon contexte;
-
La suppression de paquets tels que MvcScaffolding, etc (je n'en ai pas installé, et il ne fonctionne pas avec n'IMPORTE quel projet);
J'ai modifié/personnalisée certains modèles, mais elle s'emploie après les modifications.
EDIT:
J'ai désinstallé Visual Studio 2013 Update 2 et ce qui est revenue à la version de Visual Studio 12.0.21005.1 REL.
Le problème a disparu. Par conséquent, le problème est très certainement avec la mise à Jour 2.
QUESTION:
N'importe qui (y compris Microsoft) connaissaient un correctif?
EDIT 2:
Farruk Soubhani la réponse ne traite pas de la question: La question stipule clairement que la suppression des références à MVCScaffolding ne résout pas le problème.
J'ai ajouté un 200 point de bounty, veuillez répondre à la question comme l'indique clairement.
- êtes-vous à l'aide de EF?
- Oui, d'échafaudage et le contexte de l'option pour le contrôleur et la vue.
- vérifiez si votre EF assemblied sont à jour avec les téléchargements
- Il n'y a pas de problème avec les objectifs EF ou de ses assemblées. J'ai EF 6.1 installé. Si il y a un problème, les échafaudages ne fonctionne pas (comme c'est le cas) si VS 2013 mise à Jour 2 n'est pas installé (c'est à dire, juste VS 2013 à la saveur originale).
- Êtes-vous en utilisant le Premier Code?
- Oui, et tout cela fonctionne lorsque je reviens à Visual Studio 2013 (c'est à dire par la désinstallation de la mise à jour 2).
- - Je résoudre ce problème de mise à jour de Visual Studio 2013 Update 3.
- Je vais avoir le même problème avec VS2015 mise à Jour 2 en cours d'exécution contre le dernier .net 5 (.net core 1.0). Je n'ai rien fait de la non-standard, mais ont été tout simplement en suivant ce docs.asp.net/en/latest/tutorials/.... N'ai pas trouvé de solution pour le moment...
Vous devez vous connecter pour publier un commentaire.
Hey pour vous tous que rien ne fonctionne, la vraie réponse est que vous devez supprimer TOUT ce qui a un configSource sur le web.config et la chaîne de connexion doit être insérée.
EDIT:
Quelqu'un l'a souligné qu'il doit être seulement
<configSettings>
,<appSettings>
, et<connectionStrings>
tags utilisez PAS un configSource attribut. Et qu'il était toujours en mesure d'utiliser configSource attributs ailleurs, comme le graveur tag.Je pense que c'est que de l'outillage ne peut pas suivre configSource emplacements pour les trucs qu'il utilise comme des chaînes de connexion et les paramètres de l'application.
De Microsoft devrait être sur cette question si pas encore fixée.
EDIT 2:
Même pensé @awrigley a marqué sa réponse comme correcte c'est un Visual Studio bug. J'ai réussi à dire à l'époque, et je pense qu'il aura un peu d'attention bientôt.
https://github.com/aspnet/Tooling/issues/169#issuecomment-144197015
Une combinaison de choses ont fonctionné pour moi:
De mise à niveau de Visual Studio 2013 Update 3.
De mise à niveau de l'Entité Cadre 6.1.1
Modifier le contexte de configuration à utiliser IDbSet<...> au lieu de DbSet<...> (j'ai entendu dire que cela peut affecter à l'aide des actions asynchrones, mais pas apparemment dans mon cas, comme je l'utiliser dans mon login actions, etc, tel que fourni par ASP.NET Identité 2 exemple de package Nuget).
Assez pourquoi cette combinaison fonctionne, je n'ai aucune idée. Mais alors le tonitruant silence à partir de MS, je ne suis probablement pas le seul. Je suppose que la mise à jour 2 ne fonctionne pas...
Solution
Assurez-vous que la section
est après
Veuillez exécuter la commande suivante dans la le Gestionnaire de Package Console:
J'ai eu le même problème avec Visual Studio 2013 Update 3, mais seulement pour les scaffolders de travail avec Entity Framework.
Le problème semble être causé par l'incompatibilité entre Entity Framework 6.1.0 et la scaffolders dans Visual Studio 2013 Update 2 et au-dessus.
À la mise à niveau EF procédez de la manière suivante:
Cette réponse est emprunté à ici
Après la mise à niveau de la scaffolders fonctionnent très bien pour moi. Assurez-vous d'installer la nouvelle version dans tous les projets où Entity Framework est nécessaire.
n mon cas, j'ai résolu le problème avec la chaîne de connexion dans le web.config.
Previuos la question que j'ai a
et je ne sait pas pourquoi, mais vs cant se connecter à la base de données et de ne pas.
après le changement
et il fonctionne
Je vais vous expliquer ici un peu plus en anglais, donc n'importe qui peut comprendre. Espérons que cela aide quelqu'un là-bas Cela se produit parce que Visual Studio ne parvient pas à se connecter à la base de données modèle .
Ce qui se passe lorsque vous modifiez le nom et/ou le chemin d'accès dans la classe qui étend la classe DbContext et n'a pas changé sur le Web.fichier de configuration (à la partie la plus extérieure de votre projet: de la racine).
Exemple:
Imaginez que vous échafaudée la DbContext code:
a) Vous avez cliqué avec le bouton droit un dossier de votre projet et ajouté un "ADO.NET Modèle de Données d'Entité", et que vous l'avez nommé "Model1"
Vous obtenez le code suivant:
b) Maintenant, vous avez décidé que le nom que tu viens d'écrire est simplement mauvais, donc, vous le remplacez par AppContext
Votre code ressemble maintenant à ceci:
Ensuite, vous essayez de l'Échafaud le CRUD (Create, Read, Update, Delete) opérations avec vues, et il ne!
Pourquoi est-ce?
Bien, si nous allons sur le web.fichier de config, on peut voir la chaîne suivante:
(Cette ligne est généralement en dessous de
<add name="DefaultConnection"
)Et il est où le problème se situe. Vous avez besoin de changer Model1 pour le nom que vous avez donné!
Dans ce cas, il devrait dire "AppContext" au lieu de "Model1"
Et où il est dit:
Vérifier que:
C'est le nom de la .cs fichier qui a la classe
L'espace de noms (ou la série de noms (séparé par des points) qui vient avant le nom de votre classe) est la bonne. Il est important de noter que vous n'avez pas ajouter à la fin ".cs" extension; juste le nom de votre fichier.
Il devrait ressembler à ceci:
Parce que j'ai changé le nom de la classe, à la fois en interne et en externe (à l'intérieur et c'est le nom de fichier), et n'a pas de modifier son emplacement, je viens de le renommer en AppContext
Après ce qui a été fait. Vous pouvez échafaudage normalement 😉
Espérons que cette aide!
Pour moi, j'ai eu à assurer
<configSettings>
,<appSettings>
, &<connectionStrings>
les balises ont été PAS à l'aide d'unconfigSource
attribut.J'étais encore capable d'utiliser
configSource
attributs ailleurs, comme lerewriter
tag.Je pense, le problème est dû à une mauvaise configuration dans le web.fichier de configuration.
Dans mon cas, j'ai eu plusieurs
<entityFramework>
articles dans le web.config, et le problème résolu après j'ai changé les configurations.Je suis sur VS 2013 Update 4 et ont exactement le même problème. Il fonctionne pour moi lors du déplacement de la chaîne de connexion à partir d'un fichier externe dans le web.config. Donc, je suppose que vous pourriez essayer de faire en sorte de ne pas utiliser configureSource attribut pour connectionString lorsque l'échafaudage.
De mon site web.config avant et après le changement
Avant:
Après:
Cela peut être utile pour les personnes qui n'ont pas installé un échafaudage packages nuget dans leur solution.
En fait je n'ai pas mvcscaffolding ou t4scaffolding installé et a obtenu le même message d'erreur.
Dans mon cas, le problème/bug a été causé par la modification de la chaîne de connexion.
Ici ce que j'avais/étapes à reproduire.
Édité chaîne de connexion pour se connecter à un serveur réel, comme ceci:
Puis j'ai activé les migrations via nuget, comme ceci:
Puis j'ai créé un contrôleur en utilisant l'échafaudage option:
Alors j'ai décidé de ne plus le premier code de changements et de commencer à partir de zéro:
J'ai changé la chaîne de connexion comme suit, à utiliser localdb:
Puis je suis allé sur:
SOLUTION:
Après quelques recherches, ce que j'ai fait, est de changer à nouveau la chaîne de connexion dans le
web.config
à la première de la "real server" (au lieu de localdb). J'ai essayé de nouveau pour générer le contrôleur avec vue. Il a travaillé!Il me semble donc une chaîne de connexion problème/bug ou d'une localdb problème... impossible de l'expliquer. Peut-être que Visual Studio n'est pas comme ce que j'ai fait, je devais garder mon ancienne chaîne de connexion...
De toute façon, maintenant quand j'ai besoin d'échafaudage, je viens de modifier la chaîne de connexion à l'un qui fonctionne. Ensuite, pour tester mon site, j'ai changer de nouveau à la localdb un.
J'ai effectué des opérations suivantes pour résoudre ce problème:
Ce produit le contrôleur et les points de vue pertinents pour moi.
J'ai ajouté une coutume vue partielle appelé QuickView dans ce dossier, cependant cet échafaudage procédure ne considère pas que cela et n'ont généré que des points de vue qu'il était en train de faire par défaut. Je ne suis pas sûr si vous devez ajouter ces vues personnalisées dans un fichier de dire Scaffolder pour générer de ceux aussi bien.
Pour moi ce qui a été de s'assurer de la
<configSections>
nœud dans le web.fichier de configuration a été le premier nœud immédiatement après<configuration>
nœud.Au départ, quand j'ai ajouté mon
connectionStrings
, en fait, j'avais placé avant leconfigSections
, qui a fait l'Échafaud outil de pause.Semble que lorsque l'échafaudage s'exécute et essaie de récupérer des infos de connexion, il s'attend à la section de configuration pour le entityFramework nœud il y a déjà tellement à savoir quelle DB fournisseur à utiliser, mais quand j'ai eu la chaîne de connexion avant configSections, il ne savait pas à utiliser LocalDB (c'est ce que ma conn chaîne a été utilisé).
Je suis en cours d'exécution VS 2015RC le dernier avant la finale de la coupe. Ne pas négliger aucune des solutions ici. Ma solution était sous la pépite du gestionnaire de package et de mettre à jour mon Microsoft.Aspnet.Mvc 5.2.3 paquet et que pour résoudre mon problème.
J'espère que ça aide quelqu'un à l'aide de VS 2015.
j'ai utilisé de l'Initialiseur et au moment de le retirer/commentaire de l'Initialiseur de myDbContext constructeur , d'un échafaudage, beau travail
J'ai eu ce même problème dans la mise à jour 4. J'ai trouvé que le problème venait de la
<configSections></configSections>
de ne pas avoir un nom de section définie. Le corrigé je l'ai mis entre les balises comme suit toutes les erreurs ont été corrigés:Construire le projet et tout devrait fonctionner. Cheers!