我正在.Net Core上开发一个Web应用程序,但由于.Net Core仍处于开发阶段,因此使用的某些库尚未构建在Core上。
我知道我可以在我的应用程序中使用.Net 4.6来使用旧库但是我不确定在我的应用程序中使用新的.Net Core功能实际上有什么变化。
我知道这种方式我正在失去多平台功能但我实际上并不需要它,因为我需要继续使用API和MVC统一管道,集成依赖项Ingnection容器和其他.Net Core新功能< / p>
通过定位旧框架,这是不可能的?
答案 0 :(得分:2)
简短而简单的答案是:您无法在.NET Core项目中引用.NET Framework 4.x库,原因很简单,因为它有两个不同的框架和许多可用的API。 .NET Core中没有.NET 4.5 / 4.6。
但也有一些例外。
portable-net45-win8
,则可以使用它。因为此配置文件确保API表面与.NET Core使用的表面匹配,并且基于System.Runtime
。为了能够在.NET Core应用程序或.NET Core类库中导入此类包/库,您需要添加
"frameworks:" {
"netcoreapp1.0": {
"dependencies : { },
"imports": [ "dotnet5.6", "portable-net45-win8" ]
}
}
dnx5x
/ dotnet5.x
,则可以按照与上述相同的方式使用然后你可以在技术上使用相同的技巧,但我建议从不这样做,因为它将允许你导入任何.NET 4.x库(甚至2.0个)和你&# 39;永远不知道它是否得到支持。 不要这样做永远 。
相反,将类库转换为可移植类库并定位netstandard1.x
(取决于之前使用的.NET Framework版本,请参阅此matrix)。
例如,如果您的类库以前面向.NET Framework 4.5.1,则将其转换为netstandard1.2
。如果有关于缺少API的任何错误,那么它使用的是.NET Core不支持的API。您必须解决此问题(使用netstandard1.2
预编译器指令将其从#if !NETSTANDARD1_2
版本中删除或尝试更高的netstandard版本。您还可以在新项目中定位两个目标.json absed Class库。
答案 1 :(得分:0)
是的,这是可能的。 我有一个针对NHibernate的项目(取决于完整的.NET Framework)以及一些旧格式的类库项目(csproj)。
我没有问题地使用DI和MVC / API。