Nuget 如何创建最有可能不会导致版本控制问题的包?
我创建了一个带有空记录器的NuGet包,我的包依赖于Microsoft.Extensions.Logging.AbstractionsNuget 如何创建最有可能不会导致版本控制问题的包?,nuget,Nuget,我创建了一个带有空记录器的NuGet包,我的包依赖于Microsoft.Extensions.Logging.Abstractions .nuspec文件中的MyPackageReference行和Mydependency被设置为1.0.0,没有我理解的特殊语法意味着= 我的空日志可以很好地使用这个版本,我认为使用抽象库的最低工作版本会使我的包更容易被可能有更高版本的应用程序使用 然而,当我从一个xUnit测试项目中引用我的包时,我有一个红色的编译器错误CS1705 我的测试项目引用了两个包:
.nuspec
文件中的MyPackageReference
行和Mydependency
被设置为1.0.0,没有我理解的特殊语法意味着=
我的空日志可以很好地使用这个版本,我认为使用抽象库的最低工作版本会使我的包更容易被可能有更高版本的应用程序使用
然而,当我从一个xUnit测试项目中引用我的包时,我有一个红色的编译器错误CS1705
我的测试项目引用了两个包:
编辑 这是一张高保真图;)
- T是“xUnit项目”
- W是测试中的“网站项目”
- E是空的记录器包(nuget.org上的Evoq.Instrumentation)
- A是元包Microsoft.AspNetCore.App 2.2.0
- L是Microsoft.Extensions.Logging.Abstractions
我刚想到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”算法的方式与包引用的方式相同,所以我认为这是一个项目引用这一事实并不重要。最近的胜利对很多人来说都不是直觉,包括我自己。但它存在的原因之一是,您可以将包设置为直接依赖项,以覆盖任何版本传递依赖项请求。正如您在编辑问题时所说,我还希望出现包降级警告,而不是编译器错误。但既然你用一个直接的包引用解决了这个问题,我就不打算对此进行研究了。我相信项目间引用和包引用一样参与“最近的胜利”算法,所以我认为它是一个项目引用这一事实并不重要。最近的胜利对很多人来说都不是直觉,包括我自己。但它存在的原因之一是,您可以将包设置为直接依赖项,以覆盖任何版本传递依赖项请求。正如您在编辑问题时所说,我还希望出现包降级警告,而不是编译器错误。但既然您通过直接的包引用解决了这个问题,我就不打算对此进行调查了。