1

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 が起動される理由がわかりません。アセンブリの読み込みでエラーが発生したときに発生することを理解しています。私は何を間違えましたか?

4

0 に答える 0