框架参考与包参考

问题描述 投票:0回答:0

我最近遇到了两个不同版本的

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 运行时。还有其他我不知道的缺点吗?

c# asp.net-core versioning
© www.soinside.com 2019 - 2024. All rights reserved.