首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用反射处理依赖项

使用反射处理依赖项
EN

Stack Overflow用户
提问于 2011-03-11 03:07:47
回答 1查看 438关注 0票数 0

我正在尝试读取已知路径中某个dll文件的所有依赖项。为了做到这一点,我使用了反射,如以下代码所示:

代码语言:javascript
复制
        For Each AsmName As AssemblyName In asm.GetReferencedAssemblies()
        Try
            Log += AsmName.Name & " : " & [Assembly].ReflectionOnlyLoad(AsmName.ToString).Location & vbCrLf
        Catch ex As Exception
            Log += AsmName.Name & " : NOT FOUND." & vbCrLf
        End Try
    Next

为了测试这一点,我在VB中开发了一个dll,其中包含一些我制作的其他dll文件的依赖项。

当我传递文件路径时,我可以检测到所有依赖于该文件的程序集。但是当我尝试恢复被依赖项的文件路径时,我可以找到所有依赖项的所有文件路径,除了我制作的dll文件。

当我运行代码时,我获得了以下日志结果:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll系统: C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualBasic\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll系统: C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0系统: mscorlib系统:mscorlib系统:mscorlib系统:mscorlib系统:C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0系统__b77a5c561934e089\System.dll IM2_DataFile :未找到。C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll : System.Data IM2_DataRow :未找到。C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll : System.Drawing IM2_DataProviderTools :未找到。未找到C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll : C:\WINDOWS\assembly\GAC_MSIL\Telerik.WinControls.UI\2009.2.9.729__5bb2a467cbec794e\Telerik.WinControls.UI.dll System.Windows.Forms : NOT Telerik.WinControls.UI。C:\WINDOWS\assembly\GAC_MSIL\Telerik.WinControls.GridView\2009.2.9.729__5bb2a467cbec794e\Telerik.WinControls.GridView.dll : Telerik.WinControls.GridView IM2_Language_Controller :未找到。未找到C:\WINDOWS\assembly\GAC_MSIL\System.Core\3.5.0.0__b77a5c561934e089\System.Core.dll : C:\WINDOWS\assembly\GAC_MSIL\Telerik.WinControls\2009.2.9.729__5bb2a467cbec794e\Telerik.WinControls.dll System.Core : NOT Telerik.WinControls。

所有以IM2_开头的文件都是我想要获取路径的文件。

我观察到找不到的文件有PublicKeyToken=null。我用谷歌搜索了一下,这是因为我在编译时没有序列化这些类。

有谁能帮帮我吗?目标是获取dll文件的所有依赖项的所有文件路径。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-03-11 03:52:51

看起来您正在尝试使用程序集名称(而不是程序集的完整文件/路径)加载程序集。对于在全局程序集缓存中注册的程序集,可以工作,但+your+程序集可能没有在全局程序集缓存中注册,因此它们不能以相同的方式加载。我将不得不深入研究如何通过实际的文件名加载程序集的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5264536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档