Assembly.GetCallingAssembly
は WinRT で公開されていません。おそらく、そのセマンティクスがインライン化などに直面して信頼できないためです ( source )。ただし、Windows ストア アプリで許可されている制限されたリフレクションにはあまり適合しません。のようなものを取得できますAssembly.GetCurrentAssembly()
。たとえば、次のようになります。
typeof(MainPage).GetTypeInfo().Assembly
しかし、それはまったく同じではありません。制限されたリフレクション モデルでは、.NET で可能なように実行時にスタック トレースを取得することもできません。
Assembly.GetCurrentAssembly()
ポータブル クラス ライブラリに関しては、ポータブル クラス ライブラリでは一般的にサポートされていますが、WinRT ではサポートされていないということを言おうとしていました。しかし実際には、WinRT+.NET4.5 を除く WinRT を含むすべてのプロファイルに存在するようです。したがって、メソッドはWinRT に存在します (さらに、リダイレクトのようなものは行われません) が、コンパイル時に利用可能なメタデータには表示されません。
したがって、リフレクションを使用してメソッドを呼び出すことができます。
var assembly = (Assembly) typeof(Assembly).GetTypeInfo()
.GetDeclaredMethod("GetCallingAssembly")
.Invoke(null, new object[0]);
Windowsストアアプリでこのメソッドが見えないのは、「これがなくなることを望んでいる」ためだと思います。
(この回答は、「すべきか」ではなく「できるか」にのみ関係します)。