Nuget 找不到更新的依赖项
Nuget cannot find newer dependency
我刚刚在 ASP 5 MVC 6 beta8 和兼容的 class 测试库中创建了一个新项目。问题出现在我打算用于测试的这个新 "Web Class Library" 项目中。
这是我的 project.json 的样子:
{
"version": "1.0.0-*",
"description": "ClassLibrary1 Class Library",
"authors": [ "Me" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"dnx451": { }
},
"dependencies": {
"AutoFixture": "3.36.9",
"AutoFixture.AutoMoq": "3.36.9",
"Moq": "4.2.1510.2205"
}
}
在编译过程中出现以下错误:
Severity Code Description Project File Line Source
Error NU1001 The dependency moq >= 4.1.1308.2120 could not be resolved. ClassLibrary1 Path\To\My\Solution\ClassLibrary1\project.json 1 Build
这是我的项目参考的样子:
我想问题是 AutoFixture.AutoMoq
在版本 "4.1.1308.2120"
中需要 Moq
。见 project.lock.json:
"AutoFixture.AutoMoq/3.36.9": {
"type": "package",
"dependencies": {
"autofixture": "3.36.9",
"moq": "4.1.1308.2120"
},
"compile": {
"lib/net40/Ploeh.AutoFixture.AutoMoq.dll": {}
},
"runtime": {
"lib/net40/Ploeh.AutoFixture.AutoMoq.dll": {}
}
},
但是安装的Moq
版本较高"4.2.1510.2205"
,所以根据报错信息应该可以,但是不行
如果我将 Moq
降级到所需版本,它可以正常工作,但我宁愿使用最新版本。我已经安装了最新的 nuget 包管理器,重新启动了 VS 和 OS 但都没有帮助。
我该怎么办?
编辑
我还创建了一个普通的 Class 库,安装了上面的依赖项并尝试了一下。正常 Class 库项目构建良好。
同一项目中不能有两个不同的版本。您可以使用 * 来允许升级或降级。请参阅这篇文章 Dependency-Resolution
更新:现在可以通过升级到 AutoFixture.AutoMoq 3.41.0 或更高版本来解决此问题。
原答案:
在 project.lock.json 的目标部分将 "moq" 大写,这样 AutoMoq 元素看起来像这样:
"AutoFixture.AutoMoq/3.38.0": {
"type": "package",
"dependencies": {
"autofixture": "3.38.0",
"Moq": "4.1.1308.2120"
},
不幸的是,每次重新生成锁定文件时,您都必须再次执行此操作。
我刚刚在 ASP 5 MVC 6 beta8 和兼容的 class 测试库中创建了一个新项目。问题出现在我打算用于测试的这个新 "Web Class Library" 项目中。
这是我的 project.json 的样子:
{
"version": "1.0.0-*",
"description": "ClassLibrary1 Class Library",
"authors": [ "Me" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"dnx451": { }
},
"dependencies": {
"AutoFixture": "3.36.9",
"AutoFixture.AutoMoq": "3.36.9",
"Moq": "4.2.1510.2205"
}
}
在编译过程中出现以下错误:
Severity Code Description Project File Line Source
Error NU1001 The dependency moq >= 4.1.1308.2120 could not be resolved. ClassLibrary1 Path\To\My\Solution\ClassLibrary1\project.json 1 Build
这是我的项目参考的样子:
我想问题是 AutoFixture.AutoMoq
在版本 "4.1.1308.2120"
中需要 Moq
。见 project.lock.json:
"AutoFixture.AutoMoq/3.36.9": {
"type": "package",
"dependencies": {
"autofixture": "3.36.9",
"moq": "4.1.1308.2120"
},
"compile": {
"lib/net40/Ploeh.AutoFixture.AutoMoq.dll": {}
},
"runtime": {
"lib/net40/Ploeh.AutoFixture.AutoMoq.dll": {}
}
},
但是安装的Moq
版本较高"4.2.1510.2205"
,所以根据报错信息应该可以,但是不行
如果我将 Moq
降级到所需版本,它可以正常工作,但我宁愿使用最新版本。我已经安装了最新的 nuget 包管理器,重新启动了 VS 和 OS 但都没有帮助。
我该怎么办?
编辑
我还创建了一个普通的 Class 库,安装了上面的依赖项并尝试了一下。正常 Class 库项目构建良好。
同一项目中不能有两个不同的版本。您可以使用 * 来允许升级或降级。请参阅这篇文章 Dependency-Resolution
更新:现在可以通过升级到 AutoFixture.AutoMoq 3.41.0 或更高版本来解决此问题。
原答案:
在 project.lock.json 的目标部分将 "moq" 大写,这样 AutoMoq 元素看起来像这样:
"AutoFixture.AutoMoq/3.38.0": {
"type": "package",
"dependencies": {
"autofixture": "3.38.0",
"Moq": "4.1.1308.2120"
},
不幸的是,每次重新生成锁定文件时,您都必须再次执行此操作。