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 回答