c# - 如果两个 nuget 包指向同一个 Dll 怎么办
问题描述
好的。所以我有一个包含三个项目的解决方案
- Project-A.csproj(转为A.nupkg)
- Project B.csproj(转为 B.nupkg)
- 实用程序.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 文件夹中寻找它。
我在这里做错了什么吗?如果没有,我该怎么做才能解决这个问题
现在我
解决方案
您的库项目和 nuget 需要以可移植的格式进行维护。这意味着如果您需要它从 json 文件中动态获取配置等,您的 utils 项目不应在内部尝试使用这些 json。您的 utils 项目必须具有类似UtilsConfig.UseJson("your json path")
. 现在可以在启动消费者项目时使用此功能。如果A
并且B
还需要特定的 json 文件,您始终可以使用该UseJson
函数,并且消费者项目将在需要时覆盖它们。
推荐阅读
- java - 从 java Map 生成 Json
- sql-server - 为什么我们使用 SET NOCOUNT ON; 连同 SELECT @@ROWCOUNT;?
- python - 寻找傅立叶系数算法
- reactjs - 使用 React 排序库对 React 元素进行排序
- r - Shiny 应用程序读取包失败:应用程序无法启动(退出代码 1)
- javascript - 个性化列表列 - Nodejs(NPM)
- r - 如何将列存储为导入 csv 文件的变量
- google-sheets - 如何使用 Google App 脚本将 Blogger 网站与 Google 电子表格连接起来?
- php - 我们是否应该手动检查 mysqli_connect() 错误?
- php - 如何回显表格的正确行数