我用空的记录器创建了一个NuGet程序包,该程序包取决于 Microsoft.Extensions.Logging.Abstractions 。
我PackageReference
文件中的dependency
行和我的.nuspec
设置为 1.0.0 ,没有特殊语法,我了解的意思是>=
。
我的空记录器在此版本上运行良好,我认为使用最低运行版本的abstractions库会使我的软件包更容易被可能具有更高版本的应用程序使用。
但是,当我从xUnit测试项目中引用我的程序包时,会出现红色的编译器错误CS1705。
我的测试项目引用了两个软件包:
该项目正在测试,这是一个ASP.NET Core Razor Pages网站,该站点依次引用了 Microsoft.AspNetCore.App 2.2.0 元包中包含的同一日志记录抽象包。
我的空记录程序包,该程序包依次引用了我所描述的记录抽象1.0.0.0。
测试项目中的编译器错误说:
Assembly(Razor Pages proj)使用(Abstractions 2.2.0.0),其版本高于具有标识(Abstractions 1.0.0.0)的引用程序集(Abstractions)。
我的包裹可以使用更高的版本,所以我想念什么?
修改
这是一张高保真图;)
有一个最接近的获胜规则,我认为这意味着从T到E到E的依赖关系将获胜,并且将使用2.0.0版,但我希望软件包降级警告不是硬编译器错误。
最近获胜:https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins
编辑2
在我看来,T> W是项目参考。因此,这可能会使NuGet分辨率短路。我将从T到A的引用直接添加,看看是否能解决。
答案 0 :(得分:0)
我忘了T> W是项目参考。因此,我认为这会使我期望发生的NuGet分辨率短路。
我将T的引用直接添加到A,这样就解决了。