在我的一个项目中,我使用AutoFixture.AutoMoq包,它依赖于Moq包
<!-- project1.csproj -->
<PackageReference Include="AutoFixture.AutoMoq">
<Version>4.11.0</Version>
</PackageReference>

在另一个项目中,我直接使用Moq包,即
<!-- project2.csproj -->
<PackageReference Include="Moq">
<Version>4.13.1</Version>
</PackageReference>问题是,Visual / MSBuild / Nuget在包版本解析期间总是选择最小依赖项,即Moq4.1.1308.2120,但我想使用最新版本的Moq4.13.1。
如何告诉Visual / nuget显式使用所请求的版本?
更新:
当我试图在Nuget中将依赖行为设置为最高时,我收到一条消息,即它不适用于使用PackageReference方法的项目:

发布于 2020-03-27 03:22:10
如何告诉Visual / nuget显式使用所请求的版本?
这其实是可以做到的。您应该将Dependency behavior更改为NuGet Package 下的Highest,这意味着它将在所需的版本范围内安装所有最新版本的依赖项。
注意到,所有这些都是在包指定的依赖项范围内实现的。Moq (>= 4.1.1308.2120 && < 5.0.0)

溶液
右击您的项目->Manage Nuget packages->将Dependency behavior更改为Options下的Highest,如上图所示。
更新1
对不起,此函数(与使用DependencyVersion highest相同)适用于packages.config格式,而不是PackageReference格式。该选项只支持packages.config格式。见此链接。当您使用PackageReference foramt时,它将忽略此选项。
除了之外,还有类似的问题,它已经讨论了很长时间,并且仍然出现在最新的VS版本中。
由于它的,我已经报告了这个问题在我们的DC论坛,你可以投票赞成它或添加任何评论在此链接,如果我错过了一些其他详细的信息。任何对此感兴趣的人都会投票表决,以便尽快引起微软的注意。
因此,这不可能一步一步地实现。
作为一个建议,您应该使用两个步骤来发布它。首先,清理nuget缓存优先。
4.13.1,然后安装nuget包AutoFixture.AutoMoq 4.11.0。发布于 2020-03-27 17:53:33
目前,NuGet没有提供任何方法来控制用于传递依赖关系的版本。有一个提案正在进行中将解决这个场景。
通过将PackageReference直接添加到Moq (尽管它已经隐含了),您将能够将该版本锁定为现在的主要依赖项。
https://stackoverflow.com/questions/60868895
复制相似问题