I am debugging an assembly which I loaded dynamically with Assembly.Load(Byte[]), but I am facing some problems.
First of all, I can’t move the yellow arrow in Visual Studio 2010 to step into other lines of code, and also I am getiing exceptions (“Cannot find the method on the object instance.”) when trying to do a quick watch on objects from a third party library (controls from Infragistics for example.)
Dim data = My.Computer.FileSystem.ReadAllBytes(file.FullName)
Assembly.Load(data)
When using Assembly.Load(String), everything works fine, and there are no problems.
Assembly.Load(IO.Path.GetFileNameWithoutExtension(file.Name))
Any idea why the behaviour is that much different? Anyway to fix this?
I tried loading the debugging symbols for my assembly with Assembly.Load(byte[]. byte[]), but I still get exceptions when trying to debug objects from third party libraries.
The debug symbols for your assembly are not being loaded into the application domain. When you use the string variety, .NET automatically looks for a .PDB alongside the filename you specify.
To load an assembly and its symbols from byte arrays, use
Assembly.Load(byte[], byte[]), like so: