2012-03-27 58 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")