"无法加载类型' System.Action'来自assembly&#m; mscorlib,Version = 3.7.0.0"例外

时间:2011-11-08 20:16:42

标签: c# windows-phone-7 nunit

我遇到了一个非常奇怪的问题:

我使用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变体,但运行时绑定程序不知道在哪里查找该类型。

也许有人有同样的问题或至少知道要看的东西?

提前致谢

1 个答案:

答案 0 :(得分:1)

好的,看起来找到了解决方案。

默认WP7项目模板定义 mscorlib 引用。这有点奇怪,我认为它总是由编译器引用(如果没有/ nostdlib键使用)。

我删除了此引用,现在一切正常。

P.S。我不把这篇文章标记为答案,可能有人可以解释这种行为。这将是一个真正的答案。