如果你依赖于Microsoft.AspNetCore.*
包,那么你无法支持.NET Standard的最低版本,因为它需要.NET 4.5。
.NET 4.5是第一个包含System.Runtime
的版本,而.NET Core也是基于此构建的。但是,仔细思考一下,这也是没有意义的。如果你需要在库中支持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
#else
#endif
或者,如果您要放弃 .NET Framework 2.0 的支持并转向4.5.1,您仍然可以在两个中继下使用 Microsoft.AspNetCore.WebUtillities
(有关依赖项,请参见 NuGet 页面)。
"dependencies": {
"Microsoft.AspNetCore.WebUtilities" : "1.1.0"
},
"frameworks": {
"net451": {
},
"netstandard1.3": {
"imports": "dnxcore50"
}
}