我創建了一個activeX exe(用regasm.exe注冊),它加載了一個帶有
的DLL。Dim a As System. Assembly = System.Reflection.Assembly.LoadFile(FullPath)
這個DLL與一個介面 "PSInterface "一起作業。作為正常的執行程式,它可以作業,但是當我呼叫那個Activex物件時,我在a.GetTypes得到一個ReflectionTypeLoadException。當我研究這個錯誤時,我得到了以下結果:
Could notload file or assembly 'PSInterface, Version=1. 0.0.0, Culture = neutral, PublicKeyToken=null'或它的一個依賴項。系統無法找到指定的檔案。
PSInterface.dll與exe和dll在同一個檔案夾中。
我可以做什么?
我可以做什么?
uj5u.com熱心網友回復:
為了從同一檔案夾加載組件,我設定了 AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf LoadFromSameFolder和Function
Private Shared Function LoadFromSameFolder(ByValsender As Object, ByVal args As ResolveEventArgs) As Assembly
Dim folderPath As String = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location)
Dim assemblyPath As String = Path. Combine(folderPath, New AssemblyName(args.Name).Name & " .dll")
如果 不是 IO.File.Exists(assemblyPath) 則
assemblyPath = Path.Combine(folderPath, New AssemblyName(args.Name).Name & " .exe")
如果 不是 IO.File.Exists(assemblyPath) 那么
Return Nothing Nothing
End If
結束 若
Dim assembly As Assembly = Assembly.LoadFrom(assemblyPath))
Return assembly Assembly.
結束 功能
感謝 @Craig 的幫助。
更多資訊在這里。如何在.NET運行時將檔案夾添加到程式集搜索路徑中?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/308300.html
標籤:
