关于c#:Spring CodeConfig ScanAllAssemblies抛出一个ReflectionTypeLoadException

Spring CodeConfig ScanAllAssemblies throws a ReflectionTypeLoadException

我正在尝试新的Springcodeconfig for.net,但是有很多问题。

我在现有的.NET 4项目中安装了nuget包spring.codeconfig,但除了遇到问题外,什么都没有。

scanalAssemblies方法在运行此代码时引发ReflectionTypeLoadException:

1
2
3
var context = new CodeConfigApplicationContext();
context.ScanAllAssemblies();
context.Refresh();

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

loaderExceptions属性包含此消息的单个异常:

0

我试图添加一个从1.0.3300.0版系统到4.0.0.0.0版的程序集重定向,这是我的项目中引用的版本,但这不起作用。

如何解决此问题?

根据要求,以下是有关项目的参考资料:

  • mscorlib,version=4.0.0.0,culture=neutral,publickeytoken=b7a5c561934e089
  • 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=b7a5c561934e089
  • system.core,version=4.0.0.0,culture=neutral,publickeytoken=b7a5c561934e089
  • system.xml,version=4.0.0.0,culture=neutral,publickeytoken=b7a5c561934e089
  • system.xml.linq,version=4.0.0.0,culture=neutral,publickeytoken=b7a5c561934e089
  • Xunit,版本=1.7.0.1540,区域性=中性,PublicKeyToken=8d05b1b7a6fdb6c

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

  • mscorlib,version=4.0.0.0,culture=neutral,publickeytoken=b7a5c561934e089
  • system.core,version=4.0.0.0,culture=neutral,publickeytoken=b7a5c561934e089

我的app.config中也有这些绑定重定向,以防发生问题:

1
2
3
4
5
6
7
8
9
  <dependentAssembly>
   
    <bindingRedirect oldVersion="1.3.1.20711" newVersion="1.3.1.40711" />
  </dependentAssembly>
  <dependentAssembly>
   
    <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处理依赖程序集的方式(或者更准确地说,我们以编程方式解析Reflection的类型的方式)上似乎存在行为差异。OnOnlyLoad API在.NET 4.0下)。

Spring.net团队现在正在开发一个快速更新的codeconfig(1.0.1)版本,该版本应该能够正确地解决这个问题,并允许它在.NET 4.0下成功使用。感谢您引起我们的注意!