是否可以下载* .dll,然后在本地计算机上找不到它时加载它?我正在使用VB.Net,我可以捕获AssemblyResolve事件,但是当我尝试使用System.Net.WebClient从我的Web服务器下载程序集然后使用Reflection加载它时,我得到一个异常。
AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf downloadAssembly
Private Function downloadAssembly()
Dim downloader As New System.Net.WebClient()
downloader.DownloadFile(New Uri("http://path.toserver.com/myassembly.dll"), "myassembly.dll")
Dim NewAssembly As Reflection.Assembly
NewAssembly = Reflection.Assembly.LoadFrom("myassembly.dll")
Return NewAssembly
End Function
The exception is of type: System.InvalidOperationException Problem signature: Problem Event Name: CLR20r3 Problem Signature 01: wind-x.exe Problem Signature 02: 1.0.0.0 Problem Signature 03: 4f5104ea Problem Signature 04: Wind-X Problem Signature 05: 1.0.0.0 Problem Signature 06: 4f5104ea Problem Signature 07: 1f Problem Signature 08: c6 Problem Signature 09: System.InvalidOperationException OS Version: 6.1.7601.2.1.0.256.4 Locale ID: 1033 Additional Information 1: 0a9e Additional Information 2: 0a9e372d3b4ad19135b953a78882e789 Additional Information 3: 0a9e Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
答案 0 :(得分:0)
我知道这是一个非常古老的问题,但这个问题对我和其他人来说仍然很有趣。
我刚试过你的代码,它对我有用。您不太清楚添加处理程序的位置。我尝试添加这样的应用程序事件:
Private Sub MyApplication_Startup(sender As Object, e As ApplicationServices.StartupEventArgs) Handles Me.Startup
AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf Form1.downloadAssembly
End Sub
由于您的异常消息对我来说不是很清楚,请尝试为未捕获的异常添加以下应用程序事件处理(或为您的程序集加载添加适当的try / catch):
Private Sub MyApplication_UnhandledException(sender As Object, e As ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
MsgBox(e.Exception.Message)
End Sub
我查找了Uri-contstructor,WebClient.DownloadFile和Assembly.LoadFrom的文档。如果我没有错过任何东西,这些方法都不会引发InvalidOperationException。所以我只能疯狂地猜测你可以尝试的东西: