首页 > 解决方案 > 如果两个 nuget 包指向同一个 Dll 怎么办

问题描述

好的。所以我有一个包含三个项目的解决方案

  1. Project-A.csproj(转为A.nupkg)
  2. Project B.csproj(转为 B.nupkg)
  3. 实用程序.csproj

由于 utils.csproj 有很多核心功能,A 和 B 都引用了 utils.dll 作为项目参考。所以基本上当我进入 A 或 BI 的 /bin 文件夹时,可以看到 utils.dll。到目前为止,一切都很好。

现在,我有另一个项目。让我们称它为 consumer.csproj,它确实以提到的相同顺序引用了 A.nupkg 和 B.nupkg。此外,Utils.dll 有一些函数,它需要某些.json文件,它确实希望在某个位置。

现在,当我首先引用 A.nupkg 时,它确实引入了 utils.dll,然后我的消费者项目知道当运行代码确实需要 utils.dll 时它需要转到 /A/lib。这没问题,直到我的消费者项目确实调用了一些 B.nupkg 功能,而后者又调用了 utils.csproj 功能,该功能正在 a.nupkg/lib 文件夹中寻找一些 json 文件,因为现在每次调用 utils.csproj 时,编译器都会运行到 A.nupkg 文件夹中寻找它。

我在这里做错了什么吗?如果没有,我该怎么做才能解决这个问题

现在我

标签: c#.net-corenugetnuget-package

解决方案


您的库项目和 nuget 需要以可移植的格式进行维护。这意味着如果您需要它从 json 文件中动态获取配置等,您的 utils 项目不应在内部尝试使用这些 json。您的 utils 项目必须具有类似UtilsConfig.UseJson("your json path"). 现在可以在启动消费者项目时使用此功能。如果A并且B还需要特定的 json 文件,您始终可以使用该UseJson函数,并且消费者项目将在需要时覆盖它们。


推荐阅读