Как использовать «ReSharper.ReSharper_SilentCleanupCode» в макросе vs2010? - PullRequest
3 голосов
/ 27 марта 2012

Я пытаюсь создать макрос, который форматирует все измененные файлы перед их сохранением.

Public Module ReformatAndSave

Sub SingleFile()
    DTE.ExecuteCommand("ReSharper.ReSharper_SilentCleanupCode")
    DTE.ActiveDocument.Save()
End Sub

Sub AllFiles()
    For Each doc As Document In DTE.Documents
        If Not doc.Saved Then
            doc.Activate()
            DTE.ExecuteCommand("ReSharper.ReSharper_SilentCleanupCode")
            DTE.ActiveDocument.Save()
        End If
    Next
End Sub
End Module

Это приводит к ошибке

Ошибка HRESULT E_FAIL была возвращена после вызова COM-компонента.

Это работает, когда я использую это вместо:

DTE.ExecuteCommand("ReSharper.ReSharper_CleanupCode")

Я мог бы жить с этим решением для одного файла, но выбор профиля при сохранении всех файлов раздражает.

Я использую ReSharper 6.1.1000.82. Эта ошибка выглядит довольно старой: http://youtrack.jetbrains.com/issue/RSRP-179846

Можно ли обойти эту ошибку, собрав все измененные файлы и выполнив рабочую команду CleanUpCode один раз для всех файлов. Я могу вручную выбрать много файлов и выполнить CleanUp для этих файлов вручную. Я хотел бы сделать это автоматически для всех измененных файлов при их сохранении.

1 Ответ

1 голос
/ 29 марта 2012

Решение очень простое.Все, что мне нужно было сделать, это заменить

DTE.ExecuteCommand("ReSharper.ReSharper_CleanupCode")

на

DTE.ExecuteCommand("ReSharper_SilentCleanupCode")

Это не работает!

DTE.ExecuteCommand("ReSharper.ReSharper_SilentCleanupCode")
...