Ich mache ein Projektbeispiel mit ASP.Net Core RC2 mit Microsoft.EntityFramework.Core
und SQLite.
Ich habe dieses Tutorial befolgt: https://damienbod.com/2015/08/30/asp-net-5-with-sqlite-and-entity-framework-7/
Aber wenn ich diesen Befehl ausführe:
dotnet ef migrations add FirstMigration
Ich habe diesen Fehler erhalten:
No executable found matching command "dotnet-ef"
Hier ist meine project.json
Konfiguration:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
"Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-rc2-final"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-preview1-final",
"imports": "portable-net45+win8+dnxcore50"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"gcServer": true
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"appsettings.json",
"web.config"
]
},
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
Antworten:
Entity Framework Core 1.0
Sie müssen nur den
tools
Abschnitt Ihrer Datei project.json aktualisieren, um Folgendes einzuschließen:Dies sollte die
dotnet ef
Befehle verfügbar machen.Wichtig
Ich sollte hier auch beachten, dass die
dotnet ef
Befehle nur verfügbar sind, wenn sie aus demselben Verzeichnis ausgeführt werden, das die Datei project.json enthält.Entity Framework Core 1.1
Wenn dieses Problem nach dem Upgrade auf Entity Framework Core 1.1 erneut auftritt, müssen Sie die
Microsoft.EntityFrameworkCore.Tools
Abhängigkeit durch dieMicrosoft.EntityFrameworkCore.Tools.DotNet
Version ersetzen1.1.0-preview4
. Es ist auch nicht erforderlich, denimports
Abschnitt beizubehalten. Weitere Informationen hierzu finden Sie in der Überschrift "Upgrade auf 1.1" unter dem Blogbeitrag zur Ankündigung der Veröffentlichung von Entity Framework Core 1.1 .quelle
project.json
war mein Problem, danke!Entity Framework Core 1.1
Fügen Sie dies hinzu, wenn Sie VS2017 mit den neuen .csproj-Projekten ohne project.json-Datei verwenden
Sie müssen die .csproj-Datei bearbeiten (klicken Sie im Lösungs-Explorer mit der rechten Maustaste darauf und klicken Sie auf "egal was.csproj bearbeiten") und fügen Sie diese dann ein
Mit freundlicher Genehmigung von: https://github.com/aspnet/EntityFramework/issues/7358#issuecomment-278379967
quelle
VS2017
und es wurde automatischdotnet core CLI
auf eine2.0
Version aktualisiert , die nicht mit kompatibel istdotnet core 1.0
. Aber es scheint an der Zeit zu sein, mein Projekt.net core 1.0
zu aktualisieren2.0
.Speziell für VS2017 15.3 oder höher und ASP.NET CORE 2.0 oder höher ...
Installieren Sie nuget for db provider über die Befehlszeile oder den nuget package manager.
Fügen Sie folgenden Abschnitt zu .csproj hinzu
Installieren Sie die Entwurfszeit-Tools über die Befehlszeile oder den Nuget-Manager in VS2017.
Dies aktiviert dotnet ef * in der Befehlszeile im Projektverzeichnis.
Aktiviert dotnet ef * -Befehle in der Befehlszeile im Projektverzeichnis.
quelle
DotNetCliToolReference
mit Tools.DotNet war der Schlüssel in meinem FallDies ist ein häufiges Problem beim Wechsel von .NET Core 1.0 zu .NET Core 1.1+ oder 2.x.
Um dies zu beheben, müssen Sie:
project.json
(für .NET Core 1.0) oder<projectName>.csproj
(für .NET Core 1.1+ & 2.x) ein.Fügen Sie für .NET Core 1.0-Projekte Folgendes hinzu:
Fügen Sie für .NET Core 1.1+ - und .NET Core 2.x-Projekte Folgendes hinzu:
Wenn Sie bereits einen
tools
JSON-Schlüssel oder ein<ItemGroup>
Element mit einem oder mehreren vorhandenenDotNetCliToolReference
Elementen haben, fügen Sie einfach die neuen zur vorhandenen Gruppe hinzu.WICHTIG : Abgesehen von den oben genannten Schritten müssen Sie den
dotnet ef
Befehl im Projektstammordner (der die Projektdatei enthält) starten , da er sonst nicht funktioniert.Weitere Informationen und eine ausführliche Erläuterung des Problems finden Sie in meinem Blogbeitrag .
quelle
C:\Program Files\dotnet
in der PATH Umgebungsvariable ODER unter Verwendung des vollständigen Pfades, dhC:\Program Files\dotnet\dotnet.exe
Ich glaube, ich habe die genaue Lösung für das Problem gefunden - dotnet: Keine ausführbare Datei gefunden passenden Befehl "dotnet-ef" .
Ich verwende Dot Net Core 2.0 in VS 2017 Version 15.5.3
Dieser Fehler wird dadurch verursacht , dass die Nuget ist nicht in der Lage zu finden , die Lösung Datei auf der Stelle.
Ich bin zum Stammverzeichnis gewechselt, indem ich den folgenden Befehl in Ihrer Package Manager-Konsole hinzugefügt habe .
cd. \ School1
Hier war 'School1' mein Stammverzeichnis des Projekts und es enthält meine 'Startup.cs'-Klasse. In Ihrem Fall wird es anders sein.
dotnet ef
in der Package Manager-Konsole aus, die nun erfolgreich ausgeführt wird.Ich habe Fehler Fehler beim Ausführen
dotnet ef
.Ich habe den Fehler behoben, indem ich mit dem Befehl in den Stammordner verschoben habe
cd .\School1
Ich hoffe, es hilft meinen Dot Net-Entwicklerkollegen.
quelle
Ich musste Microsoft.EntityFrameworkCore.Tools hinzufügen.DotNet funktioniert. Der Abschnitt tools Ihrer Datei project.json sieht folgendermaßen aus:
quelle
Wenn Sie auf dieses Problem gestoßen sind und den asp.net-Kern mit dem CLI-Tool ausführen, können Sie es lösen, indem Sie
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
in die Datei xx.csproj und hinzufügendotnet restore
. Dann können Sie den Befehl dotnet ef verwenden.quelle
Anstatt ein separates Konsolenfenster im VS Package Manager-Konsolentyp zu öffnen, führen Sie die folgenden Befehle aus:
HTH
BEARBEITEN : Möglicherweise benötigen Sie in Ihrem MVC-Kernprojekt auch die folgende Klasse:
quelle
In meinem Fall
dotnet ef
war nicht verfügbar und wird nicht in der Liste angezeigt, wenndotnet -h
es ausgeführt wird.Ich habe dotnet-ef global mit folgendem Befehl installiert und kann es jetzt verwenden. Aber immer noch nicht in der Liste.
quelle
Ich habe ein separates Klassenbibliotheksprojekt verwendet. Nachdem Sie alle oben genannten Schritte in der Paketmanager-Konsole versucht haben und fehlgeschlagen sind. Ich habe die Eingabeaufforderung verwendet und es hat funktioniert! Seltsam. Dieser Artikel wird jedoch gutgeschrieben . Und wenn Sie separate Klassenbibliothek Projekt verwenden, Dies ist Ihre Lösung.
quelle
Unter Visual Studio 2017 musste ich diese Befehle über die Paketmanager-Konsole ausführen
quelle
Fügen Sie im Abschnitt Tools den folgenden Code hinzu:
Dieses Codeformat hat meinen Fehler behoben.
quelle
Wenn Sie ein NuGet-Paket hinzufügen, wird es standardmäßig als PackageReference hinzugefügt. Dies ist falsch. Bearbeiten Sie es daher manuell
1- Bearbeiten Sie die .csproj-Datei
2- Wechsel von "PackageReference":
quelle