在.NET中检索DLL信息

时间:2011-04-08 21:16:34

标签: .net vb.net dll appdomain .net-assembly

我的问题:

给定DLL路径列表,找到它们的版本号和引用的所有程序集。有些可能指向相同的DLL但具有不同的路径或版本。

我的代码:

Dim otherDomain As AppDomain = AppDomain.CreateDomain("otherDomain")

otherDomain.DoCallBack(Sub()
                            Assembly.ReflectionOnlyLoadFrom("filePath")
                       End Sub)

Dim assemblies As New List(Of Assembly)(otherDomain.ReflectionOnlyGetAssemblies())

最后一行抛出:

  

无法加载文件或程序集'file',Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。系统找不到指定的文件。

如果那条线路起作用,我想我会简单地去:

assemblies(0).GetName.version.tostring
assemblies(0).GetReferencedAssemblies

然后卸载Application Domain

1 个答案:

答案 0 :(得分:1)

此处的问题可能与新AppDomain的SetupInformation有关。在创建新的AppDomain时,请尝试像这样创建它,因此它会继承与现有AppDomain相同的安全性和设置信息:

AppDomain.CreateDomain("otherDomain", AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation);

新AppDomain的程序集搜索位置现在将与源AppDomain匹配,并且应找到您的程序集。