我的问题:
给定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。
答案 0 :(得分:1)
此处的问题可能与新AppDomain的SetupInformation有关。在创建新的AppDomain时,请尝试像这样创建它,因此它会继承与现有AppDomain相同的安全性和设置信息:
AppDomain.CreateDomain("otherDomain", AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.SetupInformation);
新AppDomain的程序集搜索位置现在将与源AppDomain匹配,并且应找到您的程序集。