【发布时间】:2017-05-24 22:06:50
【问题描述】:
我使用 nuget install-package 将一个包(我们称之为 PackageA)安装到一个项目中。安装后,我的 project.json 文件如下所示:
{
"dependencies": {
"PackageA": "1.1.15"
},
"frameworks": {
"net45": {}
},
"runtimes": {
"win": {}
},
"supports": {}
}
现在,PackageA 间接依赖于 PackageC。 Nuget成功安装包,但是我编译的时候报错CS1704 "An assembly with the same simple name 'PackageC' has already been imported. Try removing one of the references (...\PackageC.dll) or sign them to enable side-by-side."
根据那些告诉我该怎么做的人,强签名不是一种选择。
如果我删除 CS1704 消息建议的引用,则会收到一个编译错误,指出 "Could not copy the file ...\PackageC.dll" because it was not found."
如果我将 PackageA 版本更改为浮动版本“*”,那么 Nuget 会抱怨它无法解决一堆依赖项。 (我最终想使用浮动版本。)
{
"dependencies": {
"PackageA": "*"
},
"frameworks": {
"net45": {}
},
"runtimes": {
"win": {}
},
"supports": {}
}
如果我随后过度指定我的 project.json,该错误就会消失并且 CS1704 会返回。
{
"dependencies": {
"PackageA": "*",
"PackageB": "*",
"PackageC": "*"
},
"frameworks": {
"net45": {}
},
"runtimes": {
"win": {}
},
"supports": {}
}
一些额外的注释使这更令人困惑:
- 所有包依赖项也使用浮动版本。
- 我尝试清除 nuget 缓存 (
nuget locals all -clear) 无济于事。 - 如果我放弃 project.json 和 nuget 自动恢复,包安装和编译工作正常。不幸的是,这也不是一个选择。
- 这以前是有效的。不知道是什么改变破坏了它。
我可以做些什么来调试/修复这个问题?
【问题讨论】:
-
您是否偶然直接引用了 ProjectC dll?这可能是问题所在。删除 ProjectA 和 ProjectC 引用。 ...然后只安装 ProjectA,它应该拉并安装 ProjectC
-
两种方法我都试过了。到目前为止,我尝试过的所有道路都通向 CS1704。
标签: c# .net visual-studio nuget project.json