我遇到了一个非常奇怪的问题:
我使用NUnit框架在WP7项目中进行测试。目前我正在尝试使用Silverlight单元测试框架在设备上运行测试(使用NUnitTestProvider
)。
除了使用System.Action
的测试外,一切正常。在这些测试中,我得到运行时错误:
无法从程序集'mscorlib加载'System.Action'类型, 版本= 3.7.0.0
例如,这不起作用(非泛型System.Action)
public void MethodThatAcceptsRawAction(System.Action callback);
...
MethodThatAcceptsRawAction( () => Console.WriteLine("Hi"));
但这会起作用
public void MethodThatAcceptsOneArgAction(System.Action<object> exCallback);
...
MethodThatAcceptsOneArgAction( (ex) => Console.WriteLine(ex.ToString()));
我检查了内存中 mscorlib.dll 的公共类型,它没有System.Action
,但有System.Action'1
类型。看起来 System.Core.dll 有System.Action
。
Microsoft决定在两个库之间拆分System.Action变体,但运行时绑定程序不知道在哪里查找该类型。
也许有人有同样的问题或至少知道要看的东西?
提前致谢
答案 0 :(得分:1)
好的,看起来找到了解决方案。
默认WP7项目模板定义 mscorlib 引用。这有点奇怪,我认为它总是由编译器引用(如果没有/ nostdlib键使用)。
我删除了此引用,现在一切正常。
P.S。我不把这篇文章标记为答案,可能有人可以解释这种行为。这将是一个真正的答案。