Nuget 如何创建最有可能不会导致版本控制问题的包?

Nuget 如何创建最有可能不会导致版本控制问题的包?,nuget,Nuget,我创建了一个带有空记录器的NuGet包,我的包依赖于Microsoft.Extensions.Logging.Abstractions .nuspec文件中的MyPackageReference行和Mydependency被设置为1.0.0,没有我理解的特殊语法意味着= 我的空日志可以很好地使用这个版本,我认为使用抽象库的最低工作版本会使我的包更容易被可能有更高版本的应用程序使用 然而,当我从一个xUnit测试项目中引用我的包时,我有一个红色的编译器错误CS1705 我的测试项目引用了两个包:

我创建了一个带有空记录器的NuGet包,我的包依赖于Microsoft.Extensions.Logging.Abstractions

.nuspec
文件中的My
PackageReference
行和My
dependency
被设置为1.0.0,没有我理解的特殊语法意味着
=

我的空日志可以很好地使用这个版本,我认为使用抽象库的最低工作版本会使我的包更容易被可能有更高版本的应用程序使用

然而,当我从一个xUnit测试项目中引用我的包时,我有一个红色的编译器错误CS1705

我的测试项目引用了两个包:

  • 该项目正在进行测试,这是一个ASP.NET Core Razor Pages网站,它反过来引用了Microsoft.AspNetCore.App 2.2.0元数据包中包含的相同日志摘要包

  • 我的空日志程序包,它反过来引用了我所描述的日志抽象1.0.0.0

  • 测试项目中的编译器错误显示:

    程序集(Razor Pages proj)使用的(抽象2.2.0.0)版本高于具有标识(抽象1.0.0.0)的引用程序集(抽象)

    我的软件包可以使用更高版本,那么我缺少什么呢


    编辑

    这是一张高保真图;)

    • T是“xUnit项目”
    • W是测试中的“网站项目”
    • E是空的记录器包(nuget.org上的Evoq.Instrumentation)
    • A是元包Microsoft.AspNetCore.App 2.2.0
    • L是Microsoft.Extensions.Logging.Abstractions
    有一个最接近的wins规则,我认为这意味着通过E从T到L的依赖关系将获胜,并将使用2.0.0版,但我希望出现一个包降级警告,而不是硬编译器错误

    最近的胜利:

    编辑2


    我刚想到T>W是一个项目参考。所以,这可能是对NuGet分辨率的短路。我将直接从T向a添加一个引用,看看这是否解决了它。

    我忘了T>W是一个项目引用。所以我认为这是对我期待的NuGet决议的短路


    我直接将T中的一个引用添加到a中,解决了这个问题。

    我忘了T>W是一个项目引用。所以我认为这是对我期待的NuGet决议的短路


    我直接将T中的一个引用添加到a中,解决了这个问题。

    我运行了
    dotnet新mvc
    dotnet添加包Microsoft.Extensions.Logging.Abstractions--version 1.0.0
    dotnet build
    ,没有得到任何错误。你能提供更详细的复制说明,或者我可以下载的样本吗?@zivkan非常感谢你花时间这么做。我在这个问题上加了一张图表。今天上午,我正在探索最近的wins想法。我运行了
    dotnet新mvc
    dotnet添加包Microsoft.Extensions.Logging.Abstracts--version 1.0.0
    dotnet build
    ,没有收到任何错误。你能提供更详细的复制说明,或者我可以下载的样本吗?@zivkan非常感谢你花时间这么做。我在这个问题上加了一张图表。今天早上我正在探索最近的wins想法。我相信项目间的引用参与“最近的wins”算法的方式与包引用的方式相同,所以我认为这是一个项目引用这一事实并不重要。最近的胜利对很多人来说都不是直觉,包括我自己。但它存在的原因之一是,您可以将包设置为直接依赖项,以覆盖任何版本传递依赖项请求。正如您在编辑问题时所说,我还希望出现包降级警告,而不是编译器错误。但既然你用一个直接的包引用解决了这个问题,我就不打算对此进行研究了。我相信项目间引用和包引用一样参与“最近的胜利”算法,所以我认为它是一个项目引用这一事实并不重要。最近的胜利对很多人来说都不是直觉,包括我自己。但它存在的原因之一是,您可以将包设置为直接依赖项,以覆盖任何版本传递依赖项请求。正如您在编辑问题时所说,我还希望出现包降级警告,而不是编译器错误。但既然您通过直接的包引用解决了这个问题,我就不打算对此进行调查了。