Nuget将现有共享包引用更改为引用的最后一个包

Nuget将现有共享包引用更改为引用的最后一个包,nuget,nuget-package,package-management,Nuget,Nuget Package,Package Management,我们使用一个内部nuget服务器来处理一些公共类库,并在解决方案级别管理nuget包 当一个项目(比如说MyProject)引用一个公共库,比如Newtonsoft.Json时,该引用通常来自C:\dev\MyProject\packages\Newtonsoft.Json.9.0.1\lib\net461\Newtonsoft.Json.dll。当我向MyProject添加另一个同样引用Newtonsoft.Json的包(比如CommonProject)时,MyProject中的引用会更改为C

我们使用一个内部nuget服务器来处理一些公共类库,并在解决方案级别管理nuget包

当一个项目(比如说MyProject)引用一个公共库,比如Newtonsoft.Json时,该引用通常来自C:\dev\MyProject\packages\Newtonsoft.Json.9.0.1\lib\net461\Newtonsoft.Json.dll。当我向MyProject添加另一个同样引用Newtonsoft.Json的包(比如CommonProject)时,MyProject中的引用会更改为C:\dev\MyProject\packages\CommonProject\lib\net461\Newtonsoft.Json.dll

这会导致严重的问题和大量的灾难。当这些公共项目中的一个更改了它们的引用时——比如说,公共项目不再使用Newtonsoft.Json。当MyProject升级到CommonProject的最新版本时,MyProject现在将无法编译,因为它在C:\dev\MyProject\packages\CommonProject\lib\net461\Newtonsoft.Json.dll中再也找不到Newtonsoft.Json。MyProject仍然将Newtonsoft.Json列为nuget包引用,Newtonsoft dll仍然保存在包的Newtonsoft.Json文件夹中,但是dll引用是从我第一次添加CommonProject nuget包时开始的。Nuget愚蠢地更改了每个共享包引用,以直接映射到CommonProject文件夹,而不是每个包的包文件夹。即使项目引用的是同一包的完全相同版本,nuget仍然会更改引用

将所有共享包引用移动到最后添加的包的文件夹让我觉得nuget根本没有管理包


请告诉我我做错了什么,并让我知道如何从各自的文件夹中正确引用包。

您使用的是哪种项目样式?哪个版本?哪个NuGet客户?不知道你所说的项目风格是什么意思。我正在使用Visual Studio 2015,我想我有最新的nuget。您是说您没有看到特定版本的上述行为吗?我很确定他们的行为都和我描述的一样。这将有助于诊断真正的问题是什么。您可以在“扩展和更新”对话框中检查您的NuGet版本,然后选择扩展。或者打开PackageManager控制台,查看打印出的内容。项目样式是您声明依赖项的方式。您的项目中是否有packages.config文件?json?Nuget是3.5.0.1484。我们通过一个指定路径的nuget.config文件在所有项目文件夹之外使用一个共享包文件夹。