簡體   English   中英

.NET標准類庫的編譯與.NET Framework有何不同?

[英]How is a compilation of a .NET Standard class library different than .NET Framework?

編譯一個.NET Standard項目會給我一個dll。 .NET Standard項目也可以具有依賴項,因此代碼被編譯成某種形式。 這與.NET Framework或.NET Core項目時編譯的內容有何不同?

創建類庫時,是否只是“擴展” .NET Standard的實現?

我讀過的所有內容都將.NET Standard與一個接口進行了比較,並將.NET Core / .NET Framework與這些接口的某些版本的實現進行了比較。

我的問題是,如果這是真的,那么我該如何創建實際的.NET Standard庫。 為什么不能引用使用任何版本的.NET Standard的.NET Standard庫(例如:.NET Framework 4.5應該能夠使用.NET Standard 2.0類庫,因為它顯然已經被編譯了)?

據我了解,當您針對.NET Standard進行編譯時,您實際上是針對原型進行編譯,即包含包含.NET Standard定義但沒有實現的公共接口的程序集。 在運行時,這些模型由包含轉發到實際實現的類型的程序集替換。 替換之所以有效,是因為樣機和這些類型轉發程序集具有相同的簽名。 但是,並非所有.NET Framework版本都存在這些類型轉發程序集,實際上僅適用於最新版本。

根據微軟的定義:

.NET Standard是所有.NET平台都必須實現的一組API。

請注意,.NET Standard已凍結。 新API首先在.NET Core或.NET Framework中可用,然后在經過委員會審查后,也可以在.NET Standard中添加。 根據上面的定義,個人而言,如果我想開發一個通用庫,以便在產品開發生命周期中使用它,那么我希望使用.NET Standard使它更獨立於框架。 你可以在這里找到更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM