同一 .Net 6 项目中多个 nuget 包中同一 DLL 的不同版本

2024-02-24

我有一个名为 Foundation.dll 的基本 nuget 库。 我还有另外 5 个 nuget 库,它们使用不同版本的 Foundation.dll。 一切都在一个项目中。

  1. 我的问题是,当我构建一个项目时,VS .Net 显然只会在 bin/debug 文件夹中放置一个 Foundation.dll。那么VS/.Net如何决定哪个nuget包的foundation.dll应该放在bin/debug文件夹中呢?是随机的吗?

  2. 如果我直接在项目中引用 Foundation.dll,那么它会将我的直接引用版本放入 bin/debug 文件夹中,但对于团队中的其他一些开发人员来说,它会放入旧版本。

非常可怕的是,相同的分支代码在两台不同的机器上的工作方式不同。我在 Foundation.dll 的一种方法中添加了一个参数,对于一位开发人员来说它正在工作,但对于另一位开发人员来说,相同的代码会出现编译错误。

这个问题的最终解决方案是什么?我应该在我的项目中做出什么改变?

谢谢。


这是一个困难的话题,是的,有很多因素决定将哪个版本放入 bin 文件夹。通常,编译器会自动从所有依赖项中选择最新版本。但特别是如果您的解决方案中有多个“最终”程序集(例如 exe、单元测试库),编译器有时会出错。通常,代码无论如何都能工作,但我同意,这很可怕。

实际结果可能取决于构建顺序、构建环境(无论是从命令行构建还是在 VS 内构建等)。我和我的团队很难找到解决这个问题的最佳方法。

我们发现最安全的方法是直接在项目中引用最新版本的包。这不必是可用的最新版本,而是解决方案中任何地方使用的最新版本。当然,这仅在版本向后兼容的情况下才有效。如果某个图书馆requires旧版本的依赖项,并且您无法重建该库,那么您将遇到很大的麻烦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同一 .Net 6 项目中多个 nuget 包中同一 DLL 的不同版本 的相关文章

随机推荐

  • 从 Python 中的“enchant suggest()”获取最相关的单词(拼写检查)

    我想从中获取最相关的单词enchant suggest 有没有更好的方法来做到这一点 我觉得我的函数在检查 100k 或更多范围内的大量单词时效率不高 有问题enchant suggest gt gt gt import enchant g
  • 如何在 Outlook 中添加默认签名

    我正在 Access 中编写一个 VBA 脚本 用于创建并自动填充几十封电子邮件 到目前为止 编码很顺利 但我是 Outlook 新手 创建 mailitem 对象后 如何将默认签名添加到电子邮件中 这将是创建新电子邮件时自动添加的默认签名
  • 如何处理 data.table 中的列表列

    在合并数据的过程中 我经常会得到列表列 例如 左表中的一行在右表中有多个匹配项 让我们定义一下 DT data table x list c 1 2 c 3 4 5 y list c T T c T F T z c 1 2 N c 1L 2
  • 让 javaFX 11 应用程序在 docker 上运行

    我正在尝试让一个在我的机器上完美运行的应用程序在 docker 上运行 这是我的 docker 文件 FROM openjdk 11 jre slim VOLUME tmp ADD someJar jar someJar jar ADD l
  • 如何在 @code 块内编写 Blazor HTML 代码?

    如何在 Blazor 内部的函数中编写 Blazor HTML 代码 code block 考虑以下代码 page Test if option 1 drawSomething Something else drawSomething So
  • 如何获取表单的截图

    有什么方法可以输出活动表单的屏幕截图吗 NET 支持的更简单的答案 控件 DrawToBitmap http msdn microsoft com en us library system windows forms control dra
  • 您可以动态地将 CFBundleDocumentTypes 分配给您的 Cocoa 应用程序吗?

    您可以动态地将 CFBundleDocumentTypes 分配给您的 Cocoa 应用程序吗 这意味着在运行时我可以为我的应用程序分配更多扩展来处理 目前 我为我的应用程序设置了一些扩展来处理 Info plist 中的 CFBundle
  • PhpStorm:满足前提条件时如何处理未处理的异常

    我真的很喜欢 PhpStorm 检查工具 他们帮助我编写了更好的代码 现在我遇到了以下情况 我问自己处理这种情况的最佳方法是什么 我有一个带有一些前提条件的函数 f 例如下面的代码 param int x throws Preconditi
  • 从nodejs中的vtt文件中获取所有提示及其属性

    比如说 我有一个 vtt 文件 我想从中获取 Nodejs 环境中的所有提示及其相关属性 例如 startTime endTime 等 我已经搜索了我能想到的所有关键字 例如 通过 javascript 解析 vtt 文件 但结果都是关于m
  • SQL 和 PHP - mysql_num_rows() 或 'select count()' 哪个更快?

    我只是想知道如果我只是想获取表中的行数 哪种方法最有效 res mysql query SELECT count as number FROM table1 count mysql fetch result res 0 number or
  • 从两个列表中查找共同元素

    我有两个包含一些 3D 坐标的列表 如下所示 例如 a 1 2 3 4 5 6 4 2 3 b 0 11 22 3 12 34 6 41 2 34 198 213 536 1198 1123 1156 b 1 11 22 3 42 25 6
  • 为什么Anaconda不建议设置path环境变量

    Anaconda3 5 3 0 64bit 在安装过程中 我选中了在 PATH 环境变量中添加 Anaconda 的选项 那么它不建议我这样做 它说 相反 请使用 Windows 开始 菜单打开 Anaconda 然后选择 Anaconda
  • 有没有一种方法可以使用 Sorbet 而无需在每个文件中添加 # 类型注释?

    我想开始在 Ruby on Rails 项目中使用 Sorbet 但系统要求我不要向每个文件添加类型注释 有没有办法在不添加注释的情况下使用Sorbet 冰糕支持 typed override您可以为 sorbet 提供一个 YAML 文件
  • Git:如何重写远程历史记录?

    一位同事意外提交了一个大型二进制文件 该文件与源代码管理无关 从而导致存储库异常大 然后 他将此提交推送到公共服务器 从那时起 就有了许多其他提交和推送 我正在寻找一种方法来撤消该提交 或者只是从远程删除二进制文件 以便存储库恢复其通常的大
  • 没有匹配的函数可用于调用“ ”

    我被要求实现该功能 static double distanta const Complex const Complex 返回两个复数之间的距离 函数的定义位于 Complex 类内部 我已经这样实现了 double Complex dis
  • 有谁知道 LocationManager 上的 Android addProximityAlert 是否耗电

    我基本上只是想添加大约 20 个 有时是 80 个接近警报 且半径约为 500 米 且没有时间限制 只是想知道这样做是否会很快耗尽电池电量 减小半径也会有什么不同吗 这肯定会很快耗尽你的电池 在任何情况下 您都不想设置超过几个接近警报 您描
  • 在自定义AuthorizeAttribute中获取Post请求参数

    我在用this https stackoverflow com a 19050773 384554从输入流中获取请求参数 POST 在请求正文中使用 JSON 在我的onAuthorize被覆盖的函数AuthorizeAttribute 它
  • 与证书作斗争:私钥未成功获取访问权限

    我在为开发人员提供许多服务器和个人电脑的公司工作 服务器是win2003 开发PC是Windows XP 在名为 preiis01 的服务器 Win2003 中 在预生产环境中 公司其他人使用任何其他用户 对我来说未知用户 安装客户端证书用
  • 如何发出 jsonp 请求

    我需要做一些跨站点脚本编写 下面的代码块包含 jsonp 的方法 该方法就像失败一样返回 但是当我将其更改为 get 请求时 我就成功了 我需要能够使用 jsonp 方法成功响应 可以排除以下情况 响应是有效的 json 并且此参数位于 u
  • 同一 .Net 6 项目中多个 nuget 包中同一 DLL 的不同版本

    我有一个名为 Foundation dll 的基本 nuget 库 我还有另外 5 个 nuget 库 它们使用不同版本的 Foundation dll 一切都在一个项目中 我的问题是 当我构建一个项目时 VS Net 显然只会在 bin