我的问题: 给定DLL路径列表,找到它们的版本号和引用的所有程序集.有些可能指向相同的DLL但具有不同的路径或版本. 我的代码: Dim otherDomain As AppDomain = AppDomain.CreateDomain("otherDomain")o
给定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())
最后一行抛出:
Could not load file or assembly ‘file’, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies.The system cannot find the file specified.
如果那条线能起作用,我想我会简单地说:
assemblies(0).GetName.version.tostring assemblies(0).GetReferencedAssemblies
然后卸载Application Domain.
此处的问题可能与新AppDomain的SetupInformation有关.在创建新的AppDomain时,请尝试像这样创建它,因此它会继承与现有AppDomain相同的安全性和设置信息:AppDomain.CreateDomain("otherDomain", AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation);
现在,新AppDomain的程序集搜索位置将与源AppDomain匹配,并且应找到您的程序集.