在.NET Framework 4.7.1项目

时间:2018-05-03 14:51:25

标签: asp.net-web-api dependency-injection nuget odata .net-standard

我试图将Microsoft.Extensions.DependencyInjection和Microsoft.Extensions.DependencyInjection.Abstractions 2.0.0 nuget软件包安装到.NET Framework 4.7.1项目(Microsoft.AspNet.OData)中,但是我&# 39;我得到错误:

  

无法安装软件包' Microsoft.Extensions.DependencyInjection   2.0.0&#39 ;.您正在尝试将此软件包安装到针对.NETFramework,Version = v4.7.1'的项目中,但该软件包不会   包含任何兼容的程序集引用或内容文件   与该框架。有关更多信息,请与软件包作者联系。

这些软件包的依赖项是.NETStandard,Version = v2.0。我知道.NET Standard不是.NET Framework,但我认为.NET Framework 4.6和更高版本的项目可以安装.NET Standard项目吗?如果这不可能,那么.NET Framework的这些nuget包还有其他等效版本吗?

我进行此练习的全部原因是因为许多开发人员完全被Microsoft.AspNet.OData阻止,只支持DI 1.0,而不是2.0。这意味着我们无法在OData web api中升级我们的nuget包,因为其他包需要DI 2.0但OData仍然停留在1.0。我们的其他应用程序使用的是最新的和最好的,所以这意味着我们的OData web api解决方案无法利用我们的任何共享代码,并且在解决此兼容性块之前完全隔离。

1 个答案:

答案 0 :(得分:0)

  

在.NET Framework 4.7.1项目中安装Microsoft.Extensions.DependencyInjection

我认为错误信息不准确。当我将nuget包Microsoft.Extensions.DependencyInjection 2.0.0安装到项目(Microsoft.AspNet.OData)时,我收到以下错误消息:

  

无法解析依赖项。   'Microsoft.Extensions.DependencyInjection 2.0.0'不兼容   使用'Microsoft.AspNet.OData 7.0.0-beta2约束:   Microsoft.Extensions.DependencyInjection(> = 1.0.0&&< 2.0.0)'。

这正是你所说的“,因为许多开发人员完全被Microsoft.AspNet.OData阻止,只支持DI 1.0,而不是2.0。

检查包Microsoft.AspNet.OData的依赖关系,我们可以知道依赖关系存在严格的限制Microsoft.Extensions.DependencyInjectionMicrosoft.Extensions.DependencyInjection.Abstractions(>= 1.0.0 && < 2.0.0)

所以,这确实是包Microsoft.AspNet.OData不支持DI 2.0的问题。许多其他社区也在Github上报告此问题,但仍然没有任何解决方法和解决方案。

我目前的解决方法是:

  • 创建新项目而不安装包Microsoft.AspNet.OData

  • 安装包Microsoft.AspNet.OData的其他依赖项:Microsoft.OData.Core (>= 7.2.0 && < 8.0.0)Microsoft.AspNet.WebApi.Core (>= 5.2.2 && < 5.3.0)Microsoft.AspNet.WebApi.Client (>= 5.2.2 && < 5.3.0)(默认情况下,后两个包应包含在模板中)。

  • 安装nuget包Microsoft.Extensions.DependencyInjection 2.0.0

  • 在软件包管理器控制台中安装带有选项Microsoft.AspNet.OData的nuget软件包-IgnoreDependencies

    update-package Microsoft.AspNet.OData -IgnoreDependencies -IncludePrerelease

通过这种解决方法,我们可以使用Microsoft.AspNet.OData和DI 2.0,但我可以完全确认打破依赖性限制是否会导致Microsoft.AspNet.OData包的任何问题。简单的测试不成问题。

希望这有帮助。