12

注: これはデバッグ時のエラーですが、非常に奇妙なエラーです。

問題:

Debugger を接続して実行し、別のポータブル ライブラリで公開されているメソッドを呼び出して、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. コードを含む ConsoleApplication:

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

ノート:

  1. (ジェネリックバージョン)に置き換えるConfiguredTaskAwaitableと、この奇妙な問題が修正されますConfiguredTaskAwaitable<T>
  2. このメソッド フォーム WP8 または Win8 アプリをデバッガーで使用すると、正常に動作します。

現在、デバッガーで単体テストを実行できないという問題が発生しています。"ObjectUnderTest" 実装を変更して generic を返すように強制されましたConfiguredTaskAwaitable<T>。これは実際のプロジェクトでは問題ありませんが、それでも回避策にすぎません。

質問は:

このエラーの理由を知っている人はいますか? それは間違いなくポータブル クラス ライブラリの魔法に関連しています。

4

1 に答える 1

1

IntelliTraceを有効にしてVisualStudioUltimate 2012を使用していますか?これは、Visual Studio 2012、Update 2、および将来のリリースの最新のCTPで修正される必要があるバグのようです。

ツール/オプション/IntelliTraceに移動し、[IntelliTraceを有効にする]をオフにすることで、これが問題であることを確認できます(修正が得られるまで回避できます)。

于 2013-03-21T01:43:57.433 に答える