.net 调试动态加载的程序集
我正在调试动态加载的程序集,但我面临一些问题 首先,我无法在Visual Studio 2010中移动黄色箭头以进入其他代码行,而且在尝试快速监视第三方库中的对象(例如,来自Infrastics的控件)时,我会遇到异常(“在对象实例上找不到方法”) 使用时,一切正常,没有问题.net 调试动态加载的程序集,.net,vb.net,dynamic,assemblies,.net,Vb.net,Dynamic,Assemblies,我正在调试动态加载的程序集,但我面临一些问题 首先,我无法在Visual Studio 2010中移动黄色箭头以进入其他代码行,而且在尝试快速监视第三方库中的对象(例如,来自Infrastics的控件)时,我会遇到异常(“在对象实例上找不到方法”) 使用时,一切正常,没有问题 Assembly.Load(IO.Path.GetFileNameWithoutExtension(file.Name)) 你知道为什么行为会如此不同吗?怎么解决这个问题 我尝试用assembly.Load(byte[]
Assembly.Load(IO.Path.GetFileNameWithoutExtension(file.Name))
你知道为什么行为会如此不同吗?怎么解决这个问题
我尝试用assembly.Load(byte[].byte[])为我的程序集加载调试符号,但在尝试调试来自第三方库的对象时仍然会出现异常。当您向它传递一个字节数组时,无法知道它来自哪个文件(或者它是否来自某个文件)因此,它无法找到包含源代码行信息的PDB文件
您可以通过将
字节[]
保存为文件并确保有具有相同文件名的PDB来修复此问题。程序集的调试符号未加载到应用程序域中。使用字符串变体时,.NET会自动在指定的文件名旁边查找.PDB
要从字节数组加载程序集及其符号,请使用,如下所示:
Dim data = My.Computer.FileSystem.ReadAllBytes(file.FullName)
Dim pdbData = My.Computer.FileSystem.ReadAllBytes(pdbFile.FullName)
Assembly.Load(data, pdbData)
我尝试了这个,符号被加载了,但是我仍然对来自这个程序集的依赖项的类/对象有问题。你也必须手动加载依赖项。订阅该活动可能对您的情况有所帮助。
Dim data = My.Computer.FileSystem.ReadAllBytes(file.FullName)
Dim pdbData = My.Computer.FileSystem.ReadAllBytes(pdbFile.FullName)
Assembly.Load(data, pdbData)