簡體   English   中英

dll 依賴問題 - 第三方包(Nuget)覆蓋 output 文件夾 System.Runtime.CompilerServices.Unsafe dll 中的其他包

[英]dll dependency problem - 3rd party package(Nuget) overrides the other in the output folder System.Runtime.CompilerServices.Unsafe dll

目標:控制 output dll 而不保存或將工件添加到存儲庫。

主要問題是我的解決方案中有兩個第 3 方包(.net 框架 4.6.1):rabbitMQClient V6.0.0 使用 - system.memory (>= 4.5.4) -> System.Runtime.CompilerServices.Unsafe ( >= 4.5.3)

使用 System.Runtime.CompilerServices.Unsafe (>= 5.0.0) 的 MongoBson v2.12.1(例如)

每個 package 提供以下 System.Runtime.CompilerServices.Unsafe.dll 具有不同的版本,並且由於它們是不同的項目,因此它們中的每一個都覆蓋 Z78E6221F6393D1356D4CE6681DB398F1 目錄中的另一個。

我嘗試了什么:如果我嘗試降級“CompilerServices.Unsafe”,則 mongoDb 連接由於異常而失敗 - 'MongoDB.Driver.Core.Misc.DnsClientWrapper 的類型初始化程序......“

如果我升級,那么兔子將無法連接 - 內部異常:無法加載文件或程序集。

我嘗試使用重定向,但似乎它不起作用(如果是新版本的 dll,rabbitMq 異常)

解決方案起作用的唯一可能性是,如果我在所有項目中將本地副本設置為 false,但使用舊版本的項目除外,由於在 NuGet 更新時它將設置為 true,我需要更穩定的解決方案。

降級不是一個可行的選擇; 升級通常應該可以工作,但您需要修復程序集綁定 System.Runtime.CompilerServices.Unsafe是眾所周知的一大痛點,因為自動綁定生成代碼不適合它 Nick 在此處對如何執行此操作提供了很好的指導 - 主要配置示例恰好使用System.Runtime.CompilerServices.Unsafe ,因此應該只是添加當前版本號的情況。

這是 .NET Core / .NET 5 及以后的許多事情之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM