“Build failed” sur la Première Base de données d'Échafaudage DbContext
Je suis en train de générer des classes à partir d'une base de données (EntityFramework la base de données de première approche).
Pour des raisons de commodité, je suis plus ou moins en marchant le long de ce tutoriel:
https://docs.efproject.net/en/latest/platforms/full-dotnet/existing-db.html
J'en suis à un point où je suis en cours d'exécution, l'équivalent de cette ligne de code dans Visual Studio Manager Console:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -Verbose
Cette ligne de code qui génère l'erreur (avec -Verbose mode):
Using startup project 'EFSandbox'.
Using project 'EntityFrameworkCore'
Build started...
Build failed.
Je ne vois pas d'autres options que de produire tout sens de la sortie, et je ne vois aucune documentation sur cette erreur particulière. Si elle permet à tous, ce projet n'a pas un projet.fichier json, actuellement. Tout est dans le .fichier csproj, que je n'ai pas modifié manuellement.
- Ne vous obtenez des erreurs/avertissements lorsque vous recompiler l'ensemble de la solution?
- Ça, et oui, j'ai eu la dépendance des erreurs qui n'existait pas avant que j'ai recompilé, et qui ne devraient tout simplement pas existé. Plutôt que d'essayer de le combattre, j'ai refait la solution. J'ai un nouveau problème maintenant, si. Suppose que je devrais faire une nouvelle question après un peu (si celle-ci est similaire), par opposition à l'édition de celui-ci.
- Pense que votre problème est que vous devez avoir un projet.json afin de déclarer au CFE outils. Essayez de réécrire dans le bon type de projet, ce qui pourrait générer un json.
- Pour moi, ce travail a été de vérifier que l'ensemble de la solution ( et pas seulement le projet est construit avec succès avant de délivrer l'échafaudage de commande.
- Je tenais à mettre à jour brièvement à cette question puisqu'il a obtenu beaucoup d'attention - c'était une très ancienne version de EF de Base que ce qui est actuellement disponible, et après plusieurs autres problèmes, la solution que nous avons fini par aller avec a été EF6 jusqu'à ce Noyau avait plus de temps à s'installer. Même EF6 posé des problèmes, mais nous l'avons mis en place beaucoup plus fiable.
- Décharger la dépendance des projets qui comporte des erreurs
Vous devez vous connecter pour publier un commentaire.
Assurez-vous d'abord que votre projet s'appuie avant d'exécuter une nouvelle échafaudage de commande.
Ce qui arrive souvent à moi est que je vais commencer à écrire une ligne de code, de réaliser une nouvelle bd de la colonne est nécessaire, allez essayer d'échafaudage - et ensuite rendre compte au bout de 20 minutes la raison pour laquelle mon build (et d'échafaudage de commande) est un échec parce que j'ai un demi écrit une ligne de code. Oups.
Si vous avez plusieurs Dll vous pouvez générer dans le mauvais projet. Puis "Build failed' est en cours pour un certain nombre de raisons, très probablement que vous n'avez pas EFCore installé dans ce projet.
Dans le gestionnaire de paquets de la console il y a un
Default project
et c'est probablement l'endroit où vos fichiers est terminé.La solution est simple et il vous suffit d'ajouter le
-Project
commutateur de vos options.C'est l'intégralité de la commande que j'utilise:
Remarque: -force d'écraser des fichiers, mais pas de supprimer ceux qui n'existent plus. Si vous supprimez des tables de votre base de données, vous devez supprimer l'ancienne entité fichiers vous-même (juste de tri dans l'Explorateur par jour et supprimer les anciens).
Full options: https://docs.efproject.net/en/latest/miscellaneous/cli/powershell.html#scaffold-dbcontext
Je sais que c'est vieux, mais j'ai passé un certain temps à essayer de comprendre cela aujourd'hui, alors j'espère que cela aide quelqu'un.
J'ai un .Net de Base du projet, mais je veux échafaudage mes fichiers dans un .Net Standard de la bibliothèque de classe.
DbContext-Scaffold
dans le gestionnaire de paquets de la console ne fonctionne pas pour moi, maisdotnet ef dbcontext scaffold
dans une invite de commande n'.J'ai dû installer ces paquets dans ma bibliothèque de classe:
Je devais avoir une .Net de Base du projet définir comme projet de démarrage dans ma solution et que le projet avait une référence à ma bibliothèque de classe. Je pense que la dernière partie est ce que j'étais en manque qui m'a permis de me gratter la tête pour si longtemps.
Enfin, je cd avais dans la bibliothèque de classe à partir d'une invite de commande et de l'exécution de cette:
Manuellement la construction du projet Ctrl+Maj+B m'a aidé à voir les erreurs qui ont été à l'origine de l'échec de la copie.
À l'aide de VS2017 Aperçu 3, .NET Core 2 (EXTRAIT) j'ai eu toutes sortes de problèmes, mais finalement, j'ai pris l'approche proposée ci-dessus et a créé une toute nouvelle solution.
<TargetFramework>netcoreapp2.0</TargetFramework>
Puis, a ajouté le Cadre de l'Entité:
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0-preview2-final" />
Alors;
dossier de projet
"Server=BUREAU-MB70B7U; Database=ForexForme;
Trusted_Connection=True" De Microsoft.EntityFrameworkCore.SqlServer -o
Modèles
Pour moi le problème est que j'ai essayé de l'établir dans un nouveau projet console vide à l'intérieur de la solution, qui n'avait pas de fichiers, de sorte que les échafaudages essayé d'utiliser ce projet comme un projet de démarrage et ne pouvait pas trouver
Main
. J'ai corrigé par l'ajout d'un nouveau fichier avec une main videJ'ai toujours eu ce problème, même quand je me suis assuré que mon projet (qui avait EF Base installée) construit correctement. Elle n'a toujours pas avec le "Build failed." le message, qui est visible lors de l'utilisation de la
-Verbsose
drapeau.J'ai eu à le faire dans mon cas:
-Project
dans le gestionnaire de paquets de commande de la console pour pointer vers mon nouveau (et EF Core-configuré) du projet. La dernière étape était juste pour faire bonne mesure, puisqu'il n'y avait qu'un seul projet dans ma poubelle solution.Il semble que tout ce processus implique un ASP.NET projet de base (ou seulement une .NET de Base du projet qui n'est pas une bibliothèque de classe) quelque part dans la solution, sans doute définir comme la solution de démarrage du projet.
Construire une solution complète et voir où il échoue. J'ai eu quelques NuGet projets caché dans un dossier qui n'a pas construit. Seulement lors de la reconstruction de la solution que j'ai trouvé la source du problème. Tout doit construire ou d'autre Échafaudage sera un échec.
Assurez-vous que votre projet n'est pas en cours d'exécution, pour certaines raisons, cette commande ne fonctionne pas alors que mon API est en cours d'exécution en arrière-plan.
Si l'entité cadre retourne
build failed
, la plupart vous avez probablement un certain type d'erreur dans l'une de vos projets.Même si le projet vous exécutez la commande, est propre et sans erreur, d'autres projets dans cette solution peut provoquer la
build failed
réponse.Solution
Default project
déroulant à l'intérieur dePackage Manager Console
Pour moi, mon projet intégré dans Visual Studio, mais j'ai eu de spécifier une version "de Microsoft.AspNetCore.App" lors de l'exécution d'Échafaudage-DbContext.
Ainsi, au lieu de:
J'ai eu:
Si vous utilisez plusieurs projets dans la solution, consultez le projet par défaut dans le gestionnaire de paquets.
Grâce à la ci-dessus, la reconstruction de la solution de projet réglé ce problème. Certains bémols pour moi personnellement:
dotnet build
n'était pas assez (j'ai eu asssumed c'était)!dotnet build
commande tout à l'intérieur d'un projet enfant (myProject.de données)J'espère que ça aide quelqu'un d'autre qui était tout aussi confus!