gpt4 book ai didi

c# - Spring CodeConfig ScanAllAssemblies 抛出一个 ReflectionTypeLoadException

转载 作者:行者123 更新时间:2023-11-30 15:45:02 25 4
gpt4 key购买 nike

我正在尝试 .NET 的新 Spring CodeConfig,但遇到了很多麻烦。

我安装了 NuGet 包 Spring.CodeConfig到现有的 .NET 4 项目中,但除了遇到麻烦外别无其他。

当我运行这段代码时,ScanAllAssemblies 方法抛出 ReflectionTypeLoadException:

var context = new CodeConfigApplicationContext();
context.ScanAllAssemblies();
context.Refresh();

即使我没有定义配置类也会发生这种情况,但如果我创建一个配置类也会发生这种情况。

LoaderExceptions 属性包含带有此消息的单个异常:

Could not load file or assembly 'System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. Invalid pointer (Exception from HRESULT: 0x80004003 (E_POINTER))

我已经尝试添加从 System 1.0.3300.0 版到 4.0.0.0 版的程序集重定向,这是我的项目中引用的版本,但这不起作用。

我该如何解决这个问题?


根据要求,以下是相关项目的引用资料:

  • mscorlib,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089
  • Ploeh.Samples.MenuModel,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null
  • Spring.Aop,Version=1.3.1.40711,Culture=neutral,PublicKeyToken=65e474d141e25e07
  • Spring.Core,Version=1.3.1.20711,Culture=neutral,PublicKeyToken=65e474d141e25e07
  • Spring.Core,Version=1.3.1.40711,Culture=neutral,PublicKeyToken=65e474d141e25e07
  • Spring.Core.Configuration,Version=1.0.0.4111,Culture=neutral,PublicKeyToken=65e474d141e25e07
  • 系统,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089
  • System.Core,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
  • System.Xml,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
  • System.Xml.Linq,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
  • xunit,Version=1.7.0.1540,Culture=neutral,PublicKeyToken=8d05b1bb7a6fdb6c

由于第二个引用是一个项目引用,我也列出了它的依赖项:

  • mscorlib,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089
  • System.Core,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089

我的 App.config 中也有这些绑定(bind)重定向 - 以防万一:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Spring.Core" publicKeyToken="65e474d141e25e07" culture="neutral" />
<bindingRedirect oldVersion="1.3.1.20711" newVersion="1.3.1.40711" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="1.0.3300.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>

但是,两者都是为了解决 CodeConfig 的问题。删除它们没有帮助...

最佳答案

经过一些调查,我们确定这是 4.0 CLR 下的 ReflectionOnlyLoad API 的一个问题。

CodeConfig 程序集扫描在 2.0 CLR 下工作,但显然尽管 .NET 3.5 和 .NET 4.0 之间的 ReflectionOnlyLoad API 没有明显变化,但 ReflectionOnlyLoad 处理依赖程序集的方式似乎存在行为差异(或者更准确地说,我们在 .NET 4.0 下以编程方式解析 ReflectionOnlyLoad API 类型的方式)。

Spring.NET 团队现在正在开发 CodeConfig (1.0.1) 的快速更新版本,应该可以正确解决此问题并允许其在 .NET 4.0 下成功使用。感谢您提请我们注意!

关于c# - Spring CodeConfig ScanAllAssemblies 抛出一个 ReflectionTypeLoadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5593780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com