保存失败时运行 resharper 静默清理

Posted

技术标签:

【中文标题】保存失败时运行 resharper 静默清理【英文标题】:Run resharper silent cleanup on save fails 【发布时间】:2012-05-31 20:10:13 【问题描述】:

我正在尝试使用 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. 有什么想法吗?

注意:我看到了How can I configure ReSharper's code cleanup on save?,它在我的情况下不起作用,因为我需要响应保存事件。将宏映射到 CTRL+S 是不够的。

【问题讨论】:

【参考方案1】:

我认为这是因为当您调用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

这对我有用

【讨论】:

以上是关于保存失败时运行 resharper 静默清理的主要内容,如果未能解决你的问题,请参考以下文章

从 Cocoa 应用程序(通过 NSTask)静默运行 xcodebuild 两次失败

Resharper:循环后自动插入大括号

运行 CRON 时,'require' 静默失败

Resharper - 在进行代码清理时保留命名参数

在构建/保存和提交时设置 C# editorconfig 代码清理

防止 Resharper StyleCop 代码清理创建区域