1

Resharperのクリーンアップコード機能を使用して、保存時にコードをクリーンアップしようとしています。DocumentSavedイベントを処理するマクロを作成しました。重要な部分:

Private Sub DocumentEvents_DocumentSaved(ByVal document As EnvDTE.Document) _
                                         Handles DocumentEvents.DocumentSaved
    ...
    DTE.ExecuteCommand("ReSharper_SilentCleanupCode")
    document.Save()
End Sub

保存するたびに、「Error HRESULT E_FAIL has been returned from a call to a COM component.アイデアはありますか? 」という例外メッセージが表示されます。

注:保存時にReSharperのコードクリーンアップを構成するにはどうすればよいですか?保存イベントに応答する必要があるため、私の状況では機能しません。マクロをCTRL+Sにマッピングするだけでは不十分です。

4

1 に答える 1

0

document.Save()これは、呼び出すと再帰して再度保存され、その後フォールオーバーするためだと思います。これを試して:

Private Sub DocumentEvents_DocumentSaved(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentSaved
    Static currentDocument As EnvDTE.Document

    If Not currentDocument Is Document Then
        currentDocument = Document
        DTE.Windows.Item(Document.Name).Activate()
        DTE.ExecuteCommand("ReSharper_SilentCleanupCode")
        DTE.ActiveDocument.Save()
    End If
End Sub

これは私のために働いた

于 2012-07-09T14:19:51.723 に答える