我试图将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解决方案无法利用我们的任何共享代码,并且在解决此兼容性块之前完全隔离。
答案 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.DependencyInjection
和Microsoft.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
包的任何问题。简单的测试不成问题。
希望这有帮助。