12

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

问题:

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

重现它:

有2个项目:

  1. PortableClassLibrary(支持 .Net 4.5;Windows Store;Windows Phone 8)有 1 个类:

    public class Weird
    {
        public static ConfiguredTaskAwaitable GetConfiguredTaskAwaitable()
        {
            return new ConfiguredTaskAwaitable();
        }
    }
    
  2. 带有代码的控制台应用程序:

    static void Main(string[] args)
    {
        Weird.GetConfiguredTaskAwaitable();
    }
    

笔记:

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

目前它会导致问题,因为我无法在调试器下运行我的单元测试。我被迫更改我的“ObjectUnderTest”实现以返回 generic ConfiguredTaskAwaitable<T>,这对于实际项目来说很好,但仍然只是一种解决方法。

问题是:

有人知道这个错误的原因吗?它肯定与可移植类库的魔法有关。

4

1 回答 1

1

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

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

于 2013-03-21T01:43:57.433 回答