注: これはデバッグ時のエラーですが、非常に奇妙なエラーです。
問題:
Debugger を接続して実行し、別のポータブル ライブラリで公開されているメソッドを呼び出して、ConfiguredTaskAwaitable
を返すと、 が返されますInvalidProgramException
。
それを再現:
2 つのプロジェクトがある:
PortableClassLibrary (.Net 4.5; Windows Store; Windows Phone 8 をサポート) と 1 つのクラス:
public class Weird { public static ConfiguredTaskAwaitable GetConfiguredTaskAwaitable() { return new ConfiguredTaskAwaitable(); } }
コードを含む ConsoleApplication:
static void Main(string[] args) { Weird.GetConfiguredTaskAwaitable(); }
ノート:
- (ジェネリックバージョン)に置き換える
ConfiguredTaskAwaitable
と、この奇妙な問題が修正されますConfiguredTaskAwaitable<T>
- このメソッド フォーム WP8 または Win8 アプリをデバッガーで使用すると、正常に動作します。
現在、デバッガーで単体テストを実行できないという問題が発生しています。"ObjectUnderTest" 実装を変更して generic を返すように強制されましたConfiguredTaskAwaitable<T>
。これは実際のプロジェクトでは問題ありませんが、それでも回避策にすぎません。
質問は:
このエラーの理由を知っている人はいますか? それは間違いなくポータブル クラス ライブラリの魔法に関連しています。