最近嘗試把之前的爬蟲結果存去資料庫,嘗試使用Scaffold-DbContext指令來做EF Core的來自資料庫的Code First,指令一下下去馬上就得到Build failed.
,然後什麼錯誤訊息都沒有。
如果你急著想找解決辦法,請直接看最後一行。
——正文——
改用命令列模式dotnet ef
卻得到以下錯誤訊息。
因為找不到指定的命令或檔案,所以無法執行。
可能的原因包括:
* 拼錯了內建 dotnet 命令。
* 您預計要執行 .NET Core 程式,但 dotnet-ef 並不存在。
* 您預計要執行全域工具,但在 PATH 上找不到此名稱且開頭為 dotnet 的可 執行檔。
依照官方文件和黑大的文章的描述。
.NET Core 3.0的SDK中已經不包含EF Core CLI,所以要使用命令列來操作EF的話需要以下指令來令外安裝:
dotnet tool install --global dotnet-ef
我們就可以高高興興的使用Entity Framework Core了,but…總是有但是
It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '3.1.2' was not found.
- The following frameworks were found:
2.1.15 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
3.1.1 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
- https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.2&arch=x64&rid=win10-x64
奇怪,前幾天我就已經安裝了最新版的.NET SDK怎麼會出現這個問題呢!?。
上網查一下可以在GitHub上找到這個Issue
裡面的解釋是Microsoft.NETCore.App已經從.NET Core 3.1.2中移出,整合進Microsoft.AspNetCore.App。
不曉得這是不是官方回應,愣了幾秒鐘有看沒有懂。意思是dotnet-ef最新版3.1.2雖然可以安裝,但是相依套件沒了所以裝了也不能用???。
最後,文末的解決方法是移除dotnet-ef 3.1.2。改安裝3.1.1。
dotnet tool uninstall -g dotnet-ef
dotnet tool install -g dotnet-ef --version 3.1.1
重新安裝完就回來囉~~~~
真~解決辦法
感謝Sean Mars大大的提點
前面文章寫的老半天都是屁,你只是真的真的忘記安裝最新版的.NET Coer SDK 3.1.102,輸入以下指令檢查安裝的.NET版本
dotnet --version
可以發現我目前電腦上的版號是3.1.101
所以記得去安裝最新版的SDK3.1.102
裡面包含3.1.2 Runtime,我的問題跟GitHub Issue的提問者一樣,看他提供的訊息也真的沒有安裝3.1.2,整個討論串討論的煞有其事,但大家都沒發現根本原因只是沒安裝到對應版本XD