ef dotnet non trovato in .NET Core 3


171

Sto seguendo i documenti per creare una migrazione iniziale. Quando eseguo dotnet, ottengo la sezione di aiuto, il che significa che il PERCORSO funziona correttamente.

Quindi provo a eseguire il comando seguente dai documenti nella finestra della console:

dotnet ef migrations add InitialCreate  

Ottengo il seguente errore:

Could not execute because the specified command or file was not found.  
Possible reasons for this include:  
  * You misspelled a built-in dotnet command.  
  * You intended to execute a .NET Core program, but dotnet-ef does not exist.  
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
  • Ho escluso il primo elemento da quando ho copiato il comando.
  • Ho escluso il secondo elemento perché è installato il pacchetto Microsoft.EntityFrameworkCore.SqlServer .
  • Ho escluso il terzo elemento perché ottengo la sezione di aiuto quando invoco dotnet .

Sto cercando su Google il problema, ma poiché la versione è nuova, non c'è molto da fare e / o sta affogando in problemi simili rispetto alle versioni precedenti.

Ho provato a installare forzatamente Microsoft.EntityFrameworkCore nel caso in cui debba essere esplicitamente aggiunto. Mi sono imbattuto nel messaggio di errore che mi diceva che l'ultima versione da scegliere è la 2.2.6 e un downgrade è un no-go. Non sono sicuro di come installare la versione compatibile con il pacchetto SQL che ho già sul mio sistema (e ancora meno certo se questo è l'approccio giusto per eliminare questo problema).

Rilevamento del downgrade del pacchetto: Microsoft.EntityFrameworkCore da 3.0.0-preview6.19304.10 a 2.2.6. Fare riferimento al pacchetto direttamente dal progetto per selezionare una versione diversa.
Web ->
Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview6.19304.10 ->
Microsoft.EntityFrameworkCore.Relational 3.0.0-preview6.19304.10 ->
Microsoft.EntityFrameworkCore (> = 3.0.0-preview6.19304.10)
Web -> Microsoft. EntityFrameworkCore (> = 2.2.6)

Risposte:


332

Vedi l' annuncio per ASP.NET Core 3 Preview 4, che spiega che questo strumento non è più integrato e richiede un'installazione esplicita:

Lo strumento dotnet ef non fa più parte di .NET Core SDK

Questa modifica ci consente di dotnet effornire un normale strumento CLI .NET che può essere installato come strumento globale o locale. Ad esempio, per essere in grado di gestire migrazioni o scaffold a DbContext, installare dotnet efcome strumento globale digitando il comando seguente:

dotnet tool install --global dotnet-ef

Per installare una versione specifica dello strumento, utilizzare il comando seguente:

dotnet tool install --global dotnet-ef --version 3.1.4

Il motivo della modifica è spiegato nei documenti :

Perché

Questa modifica ci consente di distribuire e aggiornare dotnet efcome un normale strumento della CLI .NET su NuGet, coerentemente con il fatto che EF Core 3.0 sia sempre distribuito come pacchetto NuGet.

Inoltre, potrebbe essere necessario aggiungere i seguenti pacchetti NuGet al progetto:


5
Ecco il link a nuget se vuoi verificare la versione da installare
Juan De la Cruz,

2
Solo una nota .. [dotnet-ef --version 3.0.0] è il più compatibile per [dotnet core versione 3.1.100].
Catalizzatore

L'installazione a livello globale è conveniente, ma è anche possibile installare gli strumenti dotnet localmente ora
Zach Esposito

Microsoft.EntityFrameworkCore.Tools non è necessario.
Yogihosting il

9

MODIFICA: se si utilizza un file Docker per le distribuzioni, questi sono i passaggi da eseguire per risolvere il problema.

Modificare il file Docker in modo da includere quanto segue:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
ENV PATH $PATH:/root/.dotnet/tools
RUN dotnet tool install -g dotnet-ef --version 3.1.1

Cambia anche i tuoi dotnet efcomandi per esseredotnet-ef


In ogni caso, il PERCORSO non funziona, usa la direttiva ENV in questo modo: ENV PERCORSO $ PERCORSO: /root/.dotnet/tools
Jaliya Udagedara,

4

Gli strumenti globali possono essere installati nella directory predefinita o in una posizione specifica. Le directory predefinite sono:

  • Linux / macOS ---> $ HOME / .dotnet / tools

  • Windows --->% USERPROFILE% \. Dotnet \ tools

Se si sta tentando di eseguire uno strumento globale, verificare che la variabile di ambiente PATH sul proprio computer contenga il percorso in cui è stato installato lo strumento globale e che l'eseguibile si trovi in ​​quel percorso.

Risolvi i problemi di utilizzo dello strumento .NET Core


Questo era il mio problema, quando ho installato su MacOS tramite "dotnet tool install --global dotnet-ef" ho ricevuto la richiesta di chiudere e riaprire la finestra del terminale in modo che la nuova configurazione diventasse effettiva, ma in realtà la cartella di installazione predefinita $ HOME / .net / tools non sono stati aggiunti alla variabile PATH.
Mike Dailor,

Sono contento che ti abbia aiutato :)
Gambitier il

1

Esegui PowerShell o il prompt dei comandi come amministratore ed esegui il comando seguente.

dotnet tool install --global dotnet-ef --version 3.1.3


0

Ho avuto lo stesso problema. Ho risolto, disinstallando tutte le versioni del mio pc e quindi reinstallare dotnet.


6
Più adatto come commento. Dovrebbe spiegare come risolvere e perché con risorse
Josh Adams,

0

se stai usando il pacchetto snap dotnet-sdk su linux questo può risolvere aggiornando il tuo ~ .bashrc / ecc. come segue:

#!/bin/bash
export DOTNET_ROOT=/snap/dotnet-sdk/current
export MSBuildSDKsPath=$DOTNET_ROOT/sdk/$(${DOTNET_ROOT}/dotnet --version)/Sdks
export PATH="${PATH}:${DOTNET_ROOT}"
export PATH="$PATH:$HOME/.dotnet/tools"

0

Per me, il problema è stato risolto dopo aver chiuso Visual Studio e riaprirlo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.