【问题标题】:Reflection Type Load Exception occurred while trying to iterate through types尝试遍历类型时发生反射类型加载异常
【发布时间】:2021-05-20 11:46:43
【问题描述】:

我的 .Net 应用程序引用了一些 nuget 包。当我尝试使用 JavaNet 在 java/scala 中使用 .Net DLL 时。请让我知道如何解决此错误。谢谢

我得到以下“消息:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。堆栈跟踪:在 System.Reflection.RuntimeModule.GetTypes(RuntimeModule 模块) 在 System.Reflection.Assembly.GetTypes() 在 SicsClrController.Engine.ClrEngine.FindTypeInAssembly(程序集程序集,字符串类名,列表`1 genericTypes)。加载程序异常:------------- 加载程序异常 #0

消息:无法加载文件或程序集“System.Memory,Version=4.0.1.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。该系统找不到指定的文件。 完整打印:System.IO.FileNotFoundException:无法加载文件或程序集“System.Memory,Version=4.0.1.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。该系统找不到指定的文件。 文件名:'System.Memory, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'”

【问题讨论】:

    标签: javonet


    【解决方案1】:

    您遇到问题的库是 System.Memory,它是一个框架库。

    因此可能有多种原因:

    1. 确保它在 .NET 本身中工作,有时 Nuget 包引用框架库的具体版本,这可能与其他 nuget 包冲突,即使没有 Javonet 也会导致类似问题
    2. 如果它在纯 .NET 中工作,那么某些库动态加载 System.Memory 可能会出现问题,在这种情况下,Javonet 有时可能无法识别正确的版本。解决方案是使用在 .NET 中注入事件 AssemblyLoad 并提供基于具体 System.Memory 实现的库名称的完整路径的小助手。

    您可以使用来自 Javonet 的帮助器: http://download.javonet.com/support/AssemblyResolverLibV2.zip

    Javonet.addReference("AssemblyResolverLib.dll");
    
    //Register custom sections DLLs (if you have more than one call this line for each DLL)
    Javonet.New("AssemblyResolver","log4net","c:\\samplepath\\log4net.dll");
    

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多