2012-03-02 16 views
1

* .dllをダウンロードしてローカルマシン上に見つからない場合はロードできますか?私はVB.Netを使用していますが、AssemblyResolveイベントをキャッチできますが、System.Net.WebClientを使用してWebサーバーからアセンブリをダウンロードし、Reflectionでロードしようとすると例外が発生します。VB.NetでDLLアセンブリをダウンロードする方法

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

クイックレスポンスのおかげで、フレドリク。私はそれが私にスローするエラー情報を追加しました。 –

+0

myassembly.dllへのフルパスは必要ですか?多分このページは便利ですか? http://support.microsoft.com/kb/837908 – jbird

答えて

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 

私はウリ-コンストラクタの内容、WebClient.DownloadFileとAssembly.LoadFromのマニュアルを見上げました。私が何かを見逃していないなら、これらのメソッドはどれもInvalidOperationExceptionを発生させません。だから私は非常に乱暴にあなたが試みることができるものを推測することができます。

  1. が異なるアセンブリを確認するために試してみてください、それはアセンブリ自体ではありません、それが問題を引き起こしています。アセンブリフレームワークとアプリケーションフレームワークバージョンの不一致が問題を引き起こす可能性があると私は想像していました。
  2. フォルダからアプリケーションを起動しようとします。フォルダには、ユーザー権限に関連する問題を排除する最大の特権が設定されています。それがうまくいくなら、あなたはおそらくユーザーの標高を必要とします。
  3. これで手がかりが得られない場合は、できるだけアプリケーションとアセンブリにコードを少なくして、最小限の例を作ってみてください。
関連する問題