Dot-Net

NET Standard vs Net Core App:創建 .NET Core 項目時(使用控制台或類庫)

  • January 10, 2018

我正在嘗試將我的項目開發為跨平台。我以這種方式創建了幾個類庫:在此處輸入圖像描述

但是,當我使用 Entity Framework 搭建我的數據庫時,除了在控制台應用程序中使用之外,沒有安裝所需的 nuget 包。

不同之處在於,控制台應用程序引用了 .NET Core: 在此處輸入圖像描述

類庫引用 NET Standard:

在此處輸入圖像描述

那麼為什麼它們都在 .NET Core 下但引用不同的庫呢?它們都是跨平台的還是僅使用 .NET Core 的控制台?在這種情況下我應該避免使用類庫嗎?

“那麼為什麼它們都在 .NET Core 下但引用不同的庫?”

為其創建庫的推薦 NET 版本現在是Net Standard Library。這就是為什麼在創建類庫時預設使用的是 net 標準版本而不是 Net Core。您可以手動更改它,但不建議您參閱這篇關於Introducing .NET Standard Library的部落格文章。

它們都是跨平台的還是僅使用 .NET Core 的控制台?

是的,它們都是跨平台的。

在這種情況下我應該避免使用類庫嗎?

不,無論如何都可以使用類庫。這不是微軟一開始的初衷,但後來他們改變了主意,所以並不是所有的包都與.net標準兼容,這就是為什麼你不能使用net標準版本來擁有一個腳手架項目,因為“Microsoft. EntityFrameworkCore.Tools”目前只兼容Net core,但可能很快就會兼容DotNet Standard

正如我所說,如果您真的想保留腳手架選項,那麼您可以使用類庫項目並在 project.json 中手動更改 .net 版本,然後一旦兼容,您就可以切換回 .net 標準。您的其他項目(例如服務或數據層)取決於您希望如何保持分離,可以是具有 dotnet 標準的類庫,它們將能夠正常工作。

或者,您可以從原始解決方案中創建一個控制台應用程序(.net 核心),並使用 .net 標準複製並粘貼到您的真實類庫中。(這是我們目前在項目中所做的)

引用自:https://stackoverflow.com/questions/40004339