.Net Core项目不断引用其他项目而不是同名的Nuget包

时间:2017-02-21 02:49:38

标签: visual-studio .net-core

我似乎遇到与this unanswered question相同的问题。

  

注意:通常情况下,我会避免重新发布,但缺乏答案和低流量似乎需要刷新SO Feed。

设置

  1. 在同一文件夹中的两个单独的解决方案中创建两个.Net Core项目( A & B )。从 A ,创建一个Nuget包。 (您可以将其上传到Nuget,MyGet,或者只保留在本地。只需确保配置了源。)

  2. B 中,添加Nuget包。

  3. 结果

    项目 A 现已添加到项目 B 的解决方案中。

    问题

    1. 为什么会这样?
    2. 如何让VS认识到它应该引用Nuget包,而不是项目?
    3. 其他东西

      我在Windows 10上运行VS 2015 Pro Update 3.

      在我的实际场景中,我的Nuget包是在更高版本。当我打开 project.json 文件时,我会在ProjectA依赖关系上收到编译器警告,该依赖关系说我依赖于版本1.1,但找到版本1.0。

      我已经创建了an example on GitHub供你玩。

2 个答案:

答案 0 :(得分:1)

您必须将解决方案放在单独的目录中,因为VS2015中的.NET Core Projects具有独特的文件系统要求,并且当您将它们放在同一目录中时会表现不佳(每个解决方案都会生成一个隐藏的.vs文件夹,它们最终会重叠。

例如,您可以将目录结构更改为:

.\Solutions\A\ <-- Directory for Solution A
.\Solutions\B\ <-- Directory for Solution B
.\A\ <-- Project A
.\B\ <-- Project B

这意味着每个解决方案的隐藏.vs文件夹将不再重叠(即解决方案不会共享此内容)

.\Solutions\A\ProjectA.sln
.\Solutions\A\global.json
.\Solutions\A\.vs\

.\Solutions\B\ProjectB.sln
.\Solutions\B\global.json
.\Solutions\B\.vs\

答案 1 :(得分:0)

本地项目优先于NuGet包。但是,我不知道这是什么程度。

解决方案是在project.json中明确指定您要引用NuGet包而不是同一解决方案中的项目。

"YourNuGetPackageName": {
    "target": "package",
    "version": "VersionOfYourNuGetPackage"
}

您可以查看示例here