2011-04-08 162 views
4

我的问题:检索DLL信息

鉴于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()) 

最后一行抛出:

无法加载文件或程序集 '文件',版本= 1.0.0.0,文化=中立,公钥=空'或其依赖项之一。系统找不到指定的文件。

如果该行是工作,我想我会简单地去:

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

,然后卸载Application Domain

回答

1

这里的问题可能涉及到SetupInformation新的AppDomain。当你创建新的AppDomain,尝试这样的创造,所以它继承了相同的安全性和设置信息与现有的AppDomain:

新的AppDomain现在源的AppDomain匹配
AppDomain.CreateDomain("otherDomain", AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation); 

装配搜索位置,和应该找到你的组件。

+0

我其实试过已经和它产生相同的结果 – user699362 2011-04-11 13:40:57