AssemblyResolve イベントを使用する Visual Studio VB ソリューションに取り組んでおり、メッセージを表示し、アプリケーションが起動されるたびにシャットダウンします。
最近、ある同僚が、デバッグ中にデータ ビジュアライザー (気の利いた小さな虫眼鏡ボタン) を使用しようとすると、前述のメッセージが表示された後、それに応じてアプリケーションがシャットダウンすることを報告しました。
AssemblyResolve の処理方法は次のとおりです。
Public Sub New()
AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf AppDomain_CurrentDomain_AssemblyResolve
End Sub
Public Shared Function AppDomain_CurrentDomain_AssemblyResolve(ByVal sender As Object, _
ByVal e As ResolveEventArgs) As Assembly
If _blnShuttingDown Then
Return Nothing
End If
MsgBox(String.Format("Unexpected error : " & vbCrLf & vbCrLf & _
"Assembly {0} raised an error" & vbCrLf & vbCrLf & _
"The application is about to shut down. Please contact tech support.", _
e.Name), _
MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, _
SA.DAP.dapMessages.Titre.Erreur)
_blnShuttingDown = True
Application.Exit()
' The compiler needs this.
Return Nothing
End Function
ResolveEventArgs
プロパティを持たないVisual Studio 2008で作業しRequestingAssembly
ます。役に立ったかもしれませんが、そこまでです。
明らかな回避策は、追加することです
If e.Name.StartsWith("Microsoft.VisualStudio.Debugger.DataSetVisualizer") Then
Return
End If
メソッドの最初に(おそらく だけでも"Microsoft.VisualStudio.Debugger"
)。
最初に強制的にロードしようとはしませんMicrosoft.VisualStudio.Debugger
。それは良い習慣ではないと思うからです。
それでも、その時点で AssemblyResolve が起動される理由がわかりません。アセンブリの読み込みでエラーが発生したときに発生することを理解しています。私は何を間違えましたか?