![](/img/trans.png)
[英]UWP 6.2.2 and System.Runtime.CompilerServices.Unsafe Incompatibility
[英]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.