如何在保存时配置ReSharper代码清理?

时间:2010-06-18 17:47:23

标签: visual-studio resharper

每当我保存文件时,我都希望将Visual Studio / ReSharper配置为运行“代码清理”。

额外的好处是只为C#文件配置它,因为我有时会发现ASP.NET文件的清理不会引起错误。

8 个答案:

答案 0 :(得分:28)

你可以录制一个宏( Ctrl + E Ctrl + C ,Run, CTRL + 取值)。然后运行它而不是保存。然后,您需要做的就是将 CTRL + S 分配给您的宏。

Public Module RecordingModule
    Sub CLEAN_AND_SAVE()
    DTE.ExecuteCommand ("ReSharper.ReSharper_CleanupCode")
    DTE.ActiveDocument.Save
    End Sub
End Module

此方法将显示代码清理对话框,您必须在其中选择“运行”。

要删除用户交互,您必须选择要在调用代码清理时运行的配置文件。您可以通过进入ReSharper |来配置它选项|工具|代码清理并在“使用静默清理的配置文件”下拉列表中选择配置文件。您还可以在此处创建自定义配置文件,以指定要对您的代码进行哪些更改。在4.5中,它不允许您省略aspx页面。唯一的区别是C#和VB.Net。

有用的链接:http://www.jetbrains.com/resharper/features/code_formatting.html

答案 1 :(得分:15)

我刚刚发布了一个免费的Visual Studio扩展程序,可以自动执行类似的脚本,以便于设置。您可能想尝试http://blog.pedropombeiro.com/keeping-code-formatted-the-easy-way/

答案 2 :(得分:12)

这是我的第一篇文章(万岁!),请原谅我,如果它在任何方面都不完美......

问题是关于R#,但你也提到过( Visual Studio / ReSharper),所以也许我的提示可以帮助某人。在名为“Productivity Power Tools”的Visual Studio扩展中,有两个选项(在工具中 - >选项 - >生产力电动工具 - > PowerCommands:常规):

  1. 保存时格式化代码。
  2. 保存时删除并排序使用。
  3. 即使安装了R#,我也觉得PPT很好用。您可以从Visual Studio Gallery(2012版,但也有2010年和2013年版本)获取它们。

答案 3 :(得分:6)

在R#的2020.2+版本中,现在有内置选项可以在保存时运行清理:

Resharper选项>代码编辑>代码清理>常规

enter image description here

答案 4 :(得分:4)

我创建了一个扩展名,可以在文件保存时自动调用ReSharper Silent Cleanup:  https://visualstudiogallery.msdn.microsoft.com/43be6ead-dabf-4bb1-b019-1e361efd8410

它只支持ReSharper静默清理,但它可以正常工作。

答案 5 :(得分:1)

如果您使用的是VS2012,并且无法使用宏解决方案,则可以使用AutoHotKey(或类似)自动执行该解决方案,而不是使用宏:

  1. 在Visual Studio中:
    1. 为ReSharper_SilentCleanupCode命令分配一个键,例如:CONTRL + SHIFT + C
    2. 将保存键从CONTROL + S更改为其他内容,例如:CONTRL + SHIFT + S
  2. 在AutoHotKey中创建一个类似于以下内容的代码段:

    ^s::
        Send, ^+c
        Sleep, 300
        Send, ^+s
    return
    

答案 6 :(得分:0)

这可能会在将来帮助其他人。我真的很喜欢Macro的想法所以我采用了它。但这对我来说还不够。我想立即保存所有未保存的打开文件,仍然可以享受ReSharper清理功能。所以我想出了这个宏:

Public Module SaveUtils
    Public Sub CleanAndSave()
        DTE.ExecuteCommand("ReSharper_SilentCleanupCode")
        DTE.ActiveDocument.Save()
    End Sub

    Public Sub CleanAndSaveAll()
        For i = 1 To DTE.Documents.Count
            Dim document = DTE.Documents.Item(i)
            If (Not document.Saved) Then
                document.Activate()
                CleanAndSave()
            End If
        Next i
    End Sub
End Module

答案 7 :(得分:0)

今天,我在正式的resharper ++论坛中询问了该功能,并收到了2020.2 EAP(早期访问程序)版本中已经实现的答案。 topic

在这里您可以找到相关的问题:click me

这意味着该功能将很快对所有人开放。否则,只需切换到EAP版本即可。