2012-03-27 59 views
3

我試圖建立一個宏,在保存之前格式化所有已修改的文件。如何在vs2010宏中使用「ReSharper.ReSharper_SilentCleanupCode」?

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命令一次爲所有文件解決此錯誤。 我可以手動選擇許多文件並對這些文件執行清理。我想在保存所有修改後的文件時自動執行此操作。

回答

1

解決方案非常簡單。 我不得不這樣做與此

DTE.ExecuteCommand("ReSharper_SilentCleanupCode") 

更換此

DTE.ExecuteCommand("ReSharper.ReSharper_CleanupCode") 

這不起作用!

DTE.ExecuteCommand("ReSharper.ReSharper_SilentCleanupCode")