2011-04-08 204 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