asp.net-core – 在定位.NET Core时引用旧的(完整的.NET Framework)类库

前端之家收集整理的这篇文章主要介绍了asp.net-core – 在定位.NET Core时引用旧的(完整的.NET Framework)类库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发.Net Core上的Web应用程序,但由于.Net Core仍处于开发阶段,因此使用的某些库尚未构建在Core上.

我知道我可以在我的应用程序中使用.Net 4.6来使用旧库,但我不确定在我的应用程序中使用新的.Net Core功能实际上有什么变化.

我知道这种方式我正在失去多平台功能,但实际上我现在并不需要它,我需要继续使用API​​和MVC统一管道,集成依赖项Ingnection容器和其他.Net Core新功能

通过瞄准旧框架,这可能是不可能的?

解决方法

简单而简单的答案是:您无法在.NET Core项目中引用.NET Framework 4.x库,原因很简单,因为它有两个不同的框架,.NET 4.5 / 4.6中提供的许多API在.NET中不可用核心.

但也有一些例外.

>如果您的类库确实以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为目标,则可以按照与上述相同的方式使用它们
>如果您真的很确定,您的类库不使用任何不受支持的API,并且它的所有依赖项都不使用任何不受支持的API

然后你可以在技术上使用相同的技巧,但我建议不要这样做,因为它将允许你导入任何.NET 4.x库(甚至2.0的),你永远不会知道它是否支持.所以不要这样做.

相反,将类库转换为可移植类库和目标netstandard1.x(取决于之前使用的.NET Framework版本,请参阅此matrix).

例如,如果您的类库之前以.NET Framework 4.5.1为目标,则将其转换为netstandard1.2.如果有关于缺少API的任何错误,那么它使用的是.NET Core不支持的API.您必须解决这个问题(使用#if!NETSTANDARD1_2预编译器指令将其从netstandard1.2版本中删除或尝试更高的netstandard版本.您还可以在新project.json中使用两个目标来禁用类库.

猜你在找的.NET Core相关文章