注意:这只是一个调试时错误,但非常奇怪。
问题:
在附加调试器运行并调用方法时,在单独的可移植库中公开,返回ConfiguredTaskAwaitable
,我们得到InvalidProgramException
.
重现它:
有2个项目:
PortableClassLibrary(支持 .Net 4.5;Windows Store;Windows Phone 8)有 1 个类:
public class Weird { public static ConfiguredTaskAwaitable GetConfiguredTaskAwaitable() { return new ConfiguredTaskAwaitable(); } }
带有代码的控制台应用程序:
static void Main(string[] args) { Weird.GetConfiguredTaskAwaitable(); }
笔记:
- 替换
ConfiguredTaskAwaitable
为ConfiguredTaskAwaitable<T>
(通用版本)修复了这个奇怪的问题 - 在 Debugger 下从 WP8 或 Win8 应用程序使用此方法可以正常工作。
目前它会导致问题,因为我无法在调试器下运行我的单元测试。我被迫更改我的“ObjectUnderTest”实现以返回 generic ConfiguredTaskAwaitable<T>
,这对于实际项目来说很好,但仍然只是一种解决方法。
问题是:
有人知道这个错误的原因吗?它肯定与可移植类库的魔法有关。