从MSTest Runner或Console App的Debugger下的PortableClassLibrary类消耗ConfiguredTaskAwaitable有什么问题?

Sta*_*sha 12 c# mstest console-application async-await portable-class-library

注意:这只是一个调试时错误,但非常奇怪.

问题:

在运行Debugger并调用方法时,在单独的可移植库中公开,返回ConfiguredTaskAwaitable,我们得到InvalidProgramException.

再现它:

有2个项目:

  1. PortableClassLibrary(支持.Net 4.5; Windows应用商店; Windows Phone 8),带有1个类:

    public class Weird
    {
        public static ConfiguredTaskAwaitable GetConfiguredTaskAwaitable()
        {
            return new ConfiguredTaskAwaitable();
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. ConsoleApplication与代码:

    static void Main(string[] args)
    {
        Weird.GetConfiguredTaskAwaitable();
    }
    
    Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 替换ConfiguredTaskAwaitableConfiguredTaskAwaitable<T>(通用版本)修复了这个奇怪的问题
  2. 从Debugger下的WP8或Win8应用程序中使用此方法可以正常工作.

目前它导致问题导致我无法在调试器下运行我的单元测试.我被迫改变我的"ObjectUnderTest"实现以返回泛型ConfiguredTaskAwaitable<T>,这对于真实项目来说很好,但仍然只是一种解决方法.

问题是:

有人知道这个错误的原因吗?它绝对与Portable Class Library魔法有关.

Col*_*sen 1

您使用的 Visual Studio Ultimate 2012 是否启用了 IntelliTrace?这看起来像是一个错误,应该在Visual Studio 2012 Update 2 的最新CTP和未来版本中修复。

您可以通过转到“工具/选项/IntelliTrace”并关闭“启用 IntelliTrace”来确认这就是问题所在(并解决它,直到获得修复)。