Запустить тихую очистку resharper при сбое сохранения

Я пытаюсь очистить свой код при сохранении с помощью функции Resharper Cleanup Code. Я сделал макрос, который обрабатывает 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 недостаточно.


person Chris    schedule 31.05.2012    source источник


Ответы (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

Это сработало для меня

person Sam Holder    schedule 09.07.2012