我有一个R·插件和一个测试项目(未A R#的测试项目,但一个简单的,普通的单元测试项目)。 在插件的代码,我从序列化类型信息的一些类型解析。 在这样的类型是从我的模型类的一个对象的名单。 该类型的序列化看起来是这样的:
"System.Collections.Generic.List`1[[Model.Foo, Model]], mscorlib"
我加载此类型(或者,实际上,Json.NET一样)使用下列电话:
Assembly assembly = Assembly.LoadWithPartialName(assemblyName);
Type type = assembly.GetType(typeName);
在我的测试项目,当我运行此代码,一切都运行得很好。 所述的AssemblyName是“mscorlib程序”和第一行解析mscorlib程序组件(如RuntimeAssembly的一个实例)。 typeName为 “System.Collections.Generic.List`1 [[Model.Foo,型号]]” 和调用的GetType()解析我的类型。
当我运行将R#插件,但是,对GetType()调用返回null。 直到该行一切看起来当我从测试项目执行等。 这两个项目都引用了“模式”集会。 当我试图解决只使用完全相同的机制的类型“Model.Foo,型号”,它工作在R#插件和测试项目都。
当我允许的GetType()调用抛出异常,FileNotFound异常(当然只运行将R#插件时抛出)告诉我,“模型”组件无法找到。 堆栈跟踪包含被scannened该位置的列表。 所有这些位置是VisualStudio的安装目录下。
如所提到的,上面的两行是实际Json.NET的一部分。 因此,我不能改变它们。 不过,我完全消除Json.NET而缩小这个问题。 只是两行以上,具有的AssemblyName和的typeName的相应字符串值足以重现该问题。
谁能告诉我在哪里,这个不同的行为从起源? 或者更好:告诉我怎么解决这个问题?
提前致谢! 最好的,斯文