c# - 使用单声道时缺少 Microsoft.Extensions.DependencyInjection 的 System.Collection 依赖项
问题描述
我正在处理一个相当复杂的项目,它有很多依赖项。在我使用旧 Mono(来自 Xamarin 的 4.8,遗憾的是当时无法升级)的 Debian 9 安装中,当我尝试运行我的应用程序的可执行文件时,我收到以下错误(我已排除与问题):
Mono: Assembly Loader probing location: '/home/test/Application/Microsoft.Extensions.DependencyInjection.Abstractions.dll'.
Mono: Image addref Microsoft.Extensions.DependencyInjection.Abstractions[0xa3d4aa0] -> /home/test/Application/Microsoft.Extensions.DependencyInjection.Abstractions.dll[0xa3d3ea0]: 2
Mono: Prepared to set up assembly 'Microsoft.Extensions.DependencyInjection.Abstractions' (/home/test/Application/Microsoft.Extensions.DependencyInjection.Abstractions.dll)
Mono: Assembly Microsoft.Extensions.DependencyInjection.Abstractions[0xa3d4aa0] added to domain Application.exe, ref_count=1
Mono: Assembly Loader loaded assembly from location: '/home/test/Application/Microsoft.Extensions.DependencyInjection.Abstractions.dll'.
Mono: Assembly Ref addref Microsoft.Extensions.DependencyInjection[0xa3d0f58] -> Microsoft.Extensions.DependencyInjection.Abstractions[0xa3d4aa0]: 2
Mono: Assembly Loader probing location: '/home/test/Application/System.Runtime.dll'.
Mono: Assembly Ref addref Microsoft.Extensions.DependencyInjection.Abstractions[0xa3d4aa0] -> System.Runtime[0xa3d2160]: 3
Mono: Assembly Loader probing location: '/usr/lib/mono/gac/System.Collections/4.0.0.0__b03f5f7f11d50a3a/System.Collections.dll'.
Mono: Assembly Loader probing location: '/usr/lib/System.Collections.dll'.
Mono: Assembly Loader probing location: '/usr/lib/mono/4.5//Facades/System.Collections.dll'.
Mono: Assembly Loader probing location: '/usr/lib/mono/gac/System.Collections/4.0.0.0__b03f5f7f11d50a3a/System.Collections.exe'.
Mono: Assembly Loader probing location: '/usr/lib/System.Collections.exe'.
Mono: Assembly Loader probing location: '/usr/lib/mono/4.5//Facades/System.Collections.exe'.
Mono: Assembly Loader probing location: '/usr/lib/mono/gac/System.Collections/4.0.0.0__b03f5f7f11d50a3a/System.Collections.dll'.
Mono: Assembly Loader probing location: '/home/test/Application/System.Collections.dll'.
Mono: Assembly Loader probing location: '/usr/lib/System.Collections.dll'.
Mono: Assembly Loader probing location: '/usr/lib/mono/4.5//Facades/System.Collections.dll'.
Mono: Assembly Loader probing location: '/usr/lib/mono/gac/System.Collections/4.0.0.0__b03f5f7f11d50a3a/System.Collections.exe'.
Mono: Assembly Loader probing location: '/home/test/Application/System.Collections.exe'.
Mono: Assembly Loader probing location: '/usr/lib/System.Collections.exe'.
Mono: Assembly Loader probing location: '/usr/lib/mono/4.5//Facades/System.Collections.exe'.
Mono: The following assembly referenced from /home/test/Application/Microsoft.Extensions.DependencyInjection.dll could not be loaded:
Assembly: System.Collections (assemblyref_index=5)
Version: 4.0.0.0
Public Key: b03f5f7f11d50a3a
The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly (/home/test/Application/).
Mono: Failed to load assembly Microsoft.Extensions.DependencyInjection[0xa3d0f58]
Unhandled Exception:
System.TypeLoadException: Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
我通过使用以下命令运行我的应用程序来获得此输出
MONO_LOG_LEVEL=debug MONO_LOG_MASK=asm mono Application.exe
我看到的是程序集加载器正在尝试加载 DependencyInjection,它也存在于我的可执行文件所在的目录中。使用dotPeek我反汇编了Microsoft.Extension.DependencyInjection.dll并且确实System.Collection
存在:
我查看/usr/lib
了内部(包括mono
文件夹),但找不到任何System.Collections.dll
,顺便说一句,Windows 上存在该应用程序,并且该应用程序在那里运行得很好。
我试图寻找所有 Xamarin 软件包,但由于版本的年龄以及 Xamarin 确保在他们的存储库中不容易找到它,这被证明是相当棘手的。作为解决方案一部分的所有项目都以 .NET 4.5.1 为目标。
我将尝试复制 Windows 版本并希望它可以工作,但我仍然感到惊讶的是,没有找到基本的东西。
解决方案
推荐阅读
- python - python - 如何基于python中的xsd将xml文件映射到新的xml文件?
- c# - Google Vision API 从一种语言中检测到正确的字符,但显示检测到的不同语言
- python - 为 AutoDockTools 同时生成多个 pdbqt 文件的 Python 脚本?
- excel - 如何使用第三个对象内的方法将一个对象的属性分配给另一个对象的另一个属性,其中参数指向两个对象
- php - 从数组中检索单个值
- flutter - 你可以让 showSearch() Dismissible 吗?
- flutter - 将变量从 MaterialPageRoute 传递到自定义小部件
- python - 百分比完成计算:整数显示为整数,否则显示小数
- pandas - 从一组字符串 pandas 中删除具有任何字符串的行
- apache-spark - 在 Openshift/Kubernetes 中运行时 Spark 工作人员出错