Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 调试动态加载的程序集_.net_Vb.net_Dynamic_Assemblies - Fatal编程技术网

.net 调试动态加载的程序集

.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[]

我正在调试动态加载的程序集,但我面临一些问题

首先,我无法在Visual Studio 2010中移动黄色箭头以进入其他代码行,而且在尝试快速监视第三方库中的对象(例如,来自Infrastics的控件)时,我会遇到异常(“在对象实例上找不到方法”)

使用时,一切正常,没有问题

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)