采用Microsoft.AspNetCore.Http.Abstractions
之类的程序包,它的Microsoft.AspNetCore.Http.Features
中的这一行取决于nuspec
:
<dependency id="Microsoft.AspNetCore.Http.Features" version="2.1.1" exclude="Build,Analyzers" />
以2.1.1
的意思是>= 2.1.1
,用细语来说就是这样。
因此,我完全依赖于项目中的Microsoft.AspNetCore.Http.Abstractions
版本2.1.1
。
当前,nuget中同时存在2.1.1
的{{1}}和2.2
版本,因此我的项目最终以Microsoft.AspNetCore.Http.Features
和Microsoft.AspNetCore.Http 2.1.1
结尾。
但是随后,我运行我的项目,并遇到程序集绑定错误,因为实际的Microsoft.AspNetCore.Http.Features 2.2
dll取决于Microsoft.AspNetCore.Http.Abstractions 2.1.1
。
TLDR
Nuspec说Microsoft.AspNetCore.Http.Features 2.1.1
,dll已绑定到>= 2.1.1
对于几乎所有MS软件包而言,这似乎都是正确的。
这是一个巨大的模仿,还是我做错了什么?我必须遍历依赖关系图并将自己锁定到每个dll需要的每个确切版本,因为nuspec似乎没有正确配置。
怎么回事?
示例绑定错误:
无法加载一种或多种类型:无法加载文件或程序集'Microsoft.AspNetCore.Http.Features,版本= 2.1.1.0,Culture =中性,PublicKeyToken = adb9793829ddae60'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)
(因为nuget给了== 2.1.1
)