無法使用EF Core 1.1創建遷移

asp.net-core entity-framework-core

我花了整整兩天時間嘗試為我的項目數據庫創建初始遷移。這太令人沮喪了。每個預覽版本的文檔指向不同的方向,並且有很多未公開的問題在一段時間內飛來飛去。

我的項目是在完整框架(net462)上運行的AspNetCore應用程序,雖然我認為我已經嘗試了預覽版本的每個組合,甚至是在這個問題上提出的解決方法: EF Tools 1.1.0-preview4無法識別的選項'--config'或在這一個: https//github.com/aspnet/EntityFramework/issues/7083,但都沒有工作。

這是我的project.json的摘要及相關部分:

{
    "version": "1.0.0-*",
    "buildOptions": {
        "platform": "x86",
        "debugType": "full",
        "preserveCompilationContext": true,
        "emitEntryPoint": true
     },

     "dependencies": {
        ....
        "Microsoft.EntityFrameworkCore": "1.1.0",
        "Microsoft.EntityFrameworkCore.Design": "1.1.0",
        "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
        "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
        ....
       },

      "tools": {
         "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
         "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
       },

       "frameworks": {
            "net462": {
            }
        },

    ...
}

在我的情況下,建議的解決方法不起作用,既不使用每晚構建也不將工具降級到1.0.0-preview3。

如果我使用1.1.0-preview4-final版本的工具我遇到了這個錯誤:

Unrecognized option --config

如果我使用每晚構建我得到這個,這是荒謬的,因為我的應用程序只有一個項目,而不是一個DLL(它還有emitEntryPoint:true set)

Could not load assembly 'Sales'. Ensure it is referenced by the startup project 'Sales'

但這是我最喜歡的一個,當我降級到1.0.0-preview3-final的工具時,我得到了這個超現實主義的工具:

error: Package Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0-preview3-final is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0-preview3-final supports: netcoreapp1.0 (.NETCoreApp,Version=v1.0)

我必須閱讀它五次,以確保在第二句話中說的是與第一句相反的......這似乎是一個笑話!

此外,無論我安裝的工具版本是什麼,無論我是否恢復軟件包以及是否重新啟動計算機,命令都不再在PMC上運行...

我對這麼多版本的東西感到瘋狂,我只想創建一個遷移,我必須使用的工具版本並不重要......現在是否有一個有效的配置或者我嘗試了一些不可能的東西?有沒有人能夠使用任何版本的ef工具在asp.net核心應用程序中創建針對完整.net框架(net462)的遷移?

如果是這樣,怎麼樣?

編輯:

將項目定位到.netcoreapp1.0並刪除不兼容的引用後,我遇到了這個錯誤:

A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\1.0.1'

這裡發生了什麼事???我真的厭倦了.net Core,它仍然是它的第一個版本。我在測試版中遇到了很多這樣的問題,但現在事情應該是穩定的......他們已經改變了20次可以改變的東西,API,程序集名稱,命名空間,包名,約定。 ..現在讓我們等待工具的預覽5,6或25,也許到2035年,EF Core將擁有適當的工具和程序,同時我該死的一百萬次我為此技術投注!

編輯2:

根據評論,global.json可能是相關的:

{
  "projects": [ "src", "test" ],
    "sdk": {
        "version": "1.0.0-preview2-1-003177"
    }
}

並添加1.0.0-preview2-1-003177文件夾,並且是C:\ Program Files(x86)\ dotnet \ sdk \和C:\ Program Files \ dotnet \ sdk \中唯一的文件夾

一般承認的答案

我討厭回答我自己的問題,但我想不會有太多人會進入這條小巷......所以對於那些正在努力解決類似問題的人,我會告訴我,我的是來自project.json的這個配置:

...
"buildOptions": {
    "platform": "x86", <- THIS!!!
    "debugType": "portable",
    "preserveCompilationContext": true,
    "emitEntryPoint": true
},

刪除“平台”鍵後,遷移開始再次起作用...

我不確定我什麼時候引入了該設置,因為在升級到.NET Core SDK 1.1版之前我沒有嘗試創建遷移。也許它是從互聯網上的一個例子中復製過來的,也許它來自以前的版本,我不知道,但這讓我瘋了好幾天,我希望它能幫助別人。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow