Todd Main Todd Main - 3 months ago 36
Vb.net Question

Assembly.GetExecutingAssembly doesn't exist in PCL

I set up a PCL in VB, VS2012 and set it for Profile 78 (WinRT, WinPhone8, .NET 4.5). I don't have

GetExecutingAssembly
available on
Assembly
. According to this, it should be available to PCLs. The only method available is
Assembly.Load()
.

Does anyone what I should do with this? E.g. is this true, is my environment screwed up, is there another way to access
GetExecutingAssembly
other than
Imports System.Reflection
? Any other ideas?

Answer

In general, you should use something like typeof(MyType).GetTypeInfo().Assembly instead of Assembly.GetExecutingAssembly(). GetExecutingAssembly has to basically examine the call stack to figure out what method is calling it and then look up the corresponding assembly. This could break if methods are ever inlined across assembly boundaries, which is why the GetExecutingAssembly method isn't in the "new" reflection surface area which Profile 78 (as well as .NET for Windows Store apps) uses.