我最近遇到了两个不同版本的
Microsoft.Extensions.Options.DataAnnotations
软件包的版本冲突(6.0.0.0 与 7.0.0.0)。我发现这些版本冲突很难调试和解释,但我认为问题在于 net6.0
类库通过 PackageReference
使用了版本 7.0.0.0,并且使用该库的应用程序通过 SDK 包含了 6.0.0.0 包项目文件。
有同事建议把类库里的
PackageReference
换成<FrameworkReference Include="Microsoft.AspNetCore.App" />
。这似乎解决了这个问题。作为副作用,我们可以从库中删除其他包引用,例如,Microsoft.Extensions.Logging.Abstractions
、Microsoft.Extensions.Options
、Microsoft.Extensions.Diagnostics.HealthChecks
。
我喜欢这个解决方案,因为它简化了版本控制,并且使对第三方库的其他依赖项更容易查看。它似乎还可以防止版本冲突。
因此,我很想对使用任何
FrameworkReference
包的所有类库使用 Microsoft.Extensions.*
,但是,我不确定后果。从 docs 我发现消费者现在需要安装 ASP 运行时而不是 .NET 运行时。还有其他我不知道的缺点吗?