2016-07-16 132 views
1

我有名为Common的项目位于目录NamespaceA中。 我有名为Common放置在目录NamespaceB中的项目。.Net Core project.json具有相同名称的多个项目

现在我想引用里面使用第二project.json

第一个项目,但它是不可能的!

error: Cycle detected: 
error: Common (>= 9.0.0) -> Common (>= 9.0.0) -> Common (>= 9.0.0). 

VS认为两者都是同一个项目!

+0

难道你不能只重命名项目,可能通过指定['“name”'](https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json#name )在你的project.json? – svick

+0

它看起来单一的方法是真正重命名项目。例如Core.Common,Something.Common。我尝试通过新名称指定项目的名称属性和引用。但出现错误:无法为'.NETFramework,Version = v4.6.1'解析'Core.Common2(> = 9.0.0)'。 VS智能感知不会显示“name”作为project.json的选项。所以它允许在buildOptions中只指定标题和程序集名称。我不知道确切的,但它可以被弃用或尚未得到支持。 – Maxim

+0

''name''属于project.json的顶层,不在''buildOptions''内。 – svick

回答

1

project.json你参考NuGet包。如果你有多个相同的NuGet包,那么项目系统无法弄清楚哪一个是哪个包。所以,不幸的是,你的情况不受支持。唯一的解决方案是重命名包。

这几乎就像有两个同名的类型,既导入也不引用全名。编译器将不知道要选择哪个。

+0

您认为project.json只引用nuget包而不引用解决方案......我想你会同意,在大多数情况下,解决方案中的项目不等于nuget包。 Nuget包中可以包含多个程序集。因此,Net Core试图使所有的普遍,但与csproj系统相比,我可以有项目命名相同的缺点。而.Net Core团队因性能原因删除了名称元素...所以我无法使用它。另外的缺点是没有外部别名。 – Maxim

相关问题