我在VB,VS2012中设置了PCL,并将其设置为Profile 78(WinRT,WinPhone8,.NET 4.5)。我在GetExecutingAssembly上没有Assembly可用。根据this,它应该可用于PCL。唯一可用的方法是Assembly.Load()

有谁我应该怎么做?例如。这是真的吗?我的环境是否搞砸了?除了GetExecutingAssembly之外,还有其他方法可以访问Imports System.Reflection吗?还有其他想法吗?

最佳答案

通常,您应该使用typeof(MyType).GetTypeInfo().Assembly之类的东西代替Assembly.GetExecutingAssembly()。 GetExecutingAssembly必须从根本上检查调用堆栈,以找出正在调用它的方法,然后查找相应的程序集。如果跨内装程序边界内联方法,则可能会中断,这就是为什么GetExecutingAssembly方法不在Profile 78(以及Windows Store应用程序的.NET)使用的“新”反射表面区域中的原因。

10-07 16:09