0

我们使用内部 nuget 服务器来处理一些常见的类库,并且我们在解决方案级别管理我们的 nuget 包。

当一个项目(比如 MyProject)引用一个公共库时,比如 Newtonsoft.Json,引用正确地来自C:\dev\myproject\packages\Newtonsoft.Json.9.0.1\lib\net461\Newtonsoft.Json.dll。当我将另一个包(比如 CommonProject)添加到 MyProject 时,它也引用了 Newtonsoft.Json,MyProject 中的引用更改C:\dev\myproject\packages\CommonProject\lib\net461\Newtonsoft.Json.dll

这会导致严重的问题和大量的 dll 地狱。当这些常见项目之一更改其引用之一时——假设 CommonProject 不再使用 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 根本没有管理包。

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

4

0 回答 0