【问题标题】:How can I configure ReSharper's code cleanup on save?如何在保存时配置 ReSharper 代码清理?
【发布时间】:2011-03-05 13:22:48
【问题描述】:

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

一个额外的好处是只为 C# 文件配置它,因为我有时发现 ASP.NET 文件的清理在不引入错误的情况下不起作用。

【问题讨论】:

    标签: visual-studio resharper


    【解决方案1】:

    更新 Resharper 2020.2

    在 R# 的 2020.2+ 版本中,现在有 run cleanup on save 的内置选项:

    1. 选择 Resharper 选项Alt + R, O
    2. 代码编辑 > 代码清理 > 常规

    【讨论】:

    • 我在 ReSharper 2020.1.3 上找不到此菜单。
    【解决方案2】:

    我刚刚发布了一个免费的Visual Studio Extension,它可以自动执行类似的脚本,以便于设置。您可能想尝试一下

    http://blog.pedropombeiro.com/keeping-code-formatted-the-easy-way/

    【讨论】:

    • 将其实现为使用新的 ReSharper Extension Manager 部署的 ReSharper 插件可能会很有趣。
    • 只是想对您花费的精力和时间表示感谢 :)
    • 当我尝试撤消多个文件中的挂起更改时遇到了一些问题。 TFS 取消了它们,但加载项又重新格式化了 - 这不是我想要的。
    • 很遗憾,由于使用了已弃用的 api 函数/同步执行,此扩展在 Visual Studio 2019 v16.1 中被禁用。
    【解决方案3】:

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

    您可以在此处找到相关问题:click me

    也就是说,这个功能很快就会对所有人开放。否则只需切换到 EAP 版本。

    【讨论】:

      【解决方案4】:

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

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

      2018 注意:由于 ReSharper api 更改,这在更高版本的 ReSharper 中停止工作

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      • @Odedra 鉴于答案是执行提问者想要的扩展,我不确定我是否可以在此处添加“答案的基本部分”,除非 StackOverflow 允许我直接上传扩展::)
      • 成功了。并在保存多个文件时正常工作。也不会干扰撤消多个文件中的未决更改。
      【解决方案5】:

      你可以录制宏(Ctrl+E, Ctrl+C,Run, Ctrl+S)。然后运行它而不是保存。然后您需要做的就是将 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

      【讨论】:

      • 如果您想静默运行清理,则需要 ExecuteCommand("ReSharper_SilentCleanupCode") 并设置静默代码清理选项
      • 不适用于 VS2012,不再支持宏 (stackoverflow.com/a/12065139/23805)
      • 宏可以使用Visual Commander
      • 我正在尝试在 VS2019 上使用它,但执行失败并出现错误。这在 VS 2019 上不再相关了吗?我正在使用 Visual Commander 编写和运行宏
      【解决方案6】:

      也许这会在未来帮助其他人。我真的很喜欢 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】:

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

        问题是关于 R#,但您也提到了 (Visual Studio/ReSharper),所以也许我的提示会对某人有所帮助。在名为“Productivity Power Tools”的 Visual Studio 扩展中,有两个选项(在工具 -> 选项 -> Productivity Power Tools -> PowerCommands: General 中):

        1. 保存时格式化代码。
        2. 保存时删除和排序使用。

        我发现 PPT 很不错,即使安装了 R#。您可以从Visual Studio Gallery(2012 版,但也有 2010 和 2013 版)获取它们。

        【讨论】:

          【解决方案8】:

          如果您在 VS2012 上,并且无法使用宏解决方案,您可以使用 AutoHotKey(或类似的)来自动化它,而不是使用宏:

          1. 在 Visual Studio 中:
            1. 为 ReSharper_SilentCleanupCode 命令分配一个键,例如:CONTRL+SHIFT+C
            2. 将保存键从 CONTROL+S 更改为其他值,例如:CONTRL+SHIFT+S
          2. 在 AutoHotKey 中创建一个如下所示的 sn-p:

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

          【讨论】:

            猜你喜欢
            • 2012-05-21
            • 2015-09-26
            • 2011-06-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-03
            • 1970-01-01
            • 2019-08-20
            相关资源
            最近更新 更多