【问题标题】:"Could not load type 'System.Action' from assembly 'mscorlib, Version=3.7.0.0" exception“无法从程序集‘mscorlib,版本=3.7.0.0’加载类型‘System.Action’”异常
【发布时间】:2011-11-08 20:16:41
【问题描述】:

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

我在 WP7 项目中使用 NUnit 框架进行测试。目前我正在尝试使用 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 变体,但运行时绑定器不知道在哪里查找类型。

也许有人遇到过同样的问题,或者至少知道要看什么?

提前致谢

【问题讨论】:

  • 这可能和stackoverflow.com/questions/4466859/…有关吗?
  • 不,我有一个运行时错误,链接是关于编译器时间的。但感谢这个链接。挺有意思的!
  • 是的,确实如此!好吧,那就等其他方面的启示吧。

标签: c# windows-phone-7 nunit


【解决方案1】:

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

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

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

附:我没有将此帖子标记为答案,可能有人可以解释这种行为。这将是一个真正的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    相关资源
    最近更新 更多