如果您依賴Microsoft.AspNetCore.*
包作爲絕對最低支持.NET標準是.NET 4.5,您不能。
.NET 4.5是包含.NET Core所基於的System.Runtime
的第一個版本。但是當你仔細思考時,這也沒有意義。如果您在庫中需要對ASP.NET Core的支持。
如果您的庫應該運行ASP.NET Core和ASP.NET 4(即MVC 5,WebApi 2),那麼您將需要有條件地使用ASP.NET依賴項並使用#if
預處理器指令。
"frameworks": {
"net20": {
"dependencies": {
"NameOf.AspNetLegacyPackage": "1.2.3"
}
},
"netstandard1.3": {
"dependencies": {
"Microsoft.AspNetCore.WebUtilities" : "1.1.0"
},
"imports": "dnxcore50"
}
}
我以前netstandard1.3
因爲這是最小的Microsoft.AspNetCore.WebUtilities
,但根據您的其他依賴你可能需要去更高或更低。
NameOf.AspNetLegacyPackage
是包的名稱,其中包含與您需要的Microsoft.AspNetCore.WebUtilities
相同的功能,但它適用於.NET Framework 2.0(如果有)。如果沒有,你必須刪除它並自己寫替代函數。
然後在你的代碼中使用
#if NETSTANDARD1_3
// Code or APIs which is only available in netstandard1.3/net4.6
// this includes the Microsoft.AspNetCore.WebUtillities
#else
// Use code or API which runs under .NET Framework 2.0
#endif
另外,如果你要放棄.NET Framework 2.0的支持,去4.5.1,您可以繼續使用Microsoft.AspNetCore.WebUtillities
(見NuGet page依賴關係)它在這兩個
"dependencies": {
"Microsoft.AspNetCore.WebUtilities" : "1.1.0"
},
"frameworks": {
"net451": {
},
"netstandard1.3": {
"imports": "dnxcore50"
}
}
問題是,如果您想要使用最低要求爲4.5.1/netstandard 1.3(= .NET Framework 4.6)的軟件包,您需要.NET Framework 2.0支持嗎?你想用傳統的ASP.NET 4嗎?如果沒有,如果依賴於ASP.NET Core,那麼沒有理由將目標設定爲低,因爲ASP.NET Core不會在低於4.5或4.5.1的任何值上運行 – Tseng