【发布时间】:2011-03-05 13:22:48
【问题描述】:
我希望将 Visual Studio/ReSharper 配置为在我保存文件时运行“代码清理”。
一个额外的好处是只为 C# 文件配置它,因为我有时发现 ASP.NET 文件的清理在不引入错误的情况下不起作用。
【问题讨论】:
我希望将 Visual Studio/ReSharper 配置为在我保存文件时运行“代码清理”。
一个额外的好处是只为 C# 文件配置它,因为我有时发现 ASP.NET 文件的清理在不引入错误的情况下不起作用。
【问题讨论】:
在 R# 的 2020.2+ 版本中,现在有 run cleanup on save 的内置选项:
【讨论】:
我刚刚发布了一个免费的Visual Studio Extension,它可以自动执行类似的脚本,以便于设置。您可能想尝试一下
http://blog.pedropombeiro.com/keeping-code-formatted-the-easy-way/
【讨论】:
我创建了一个扩展来在文件保存时自动调用 ReSharper Silent Cleanup: https://visualstudiogallery.msdn.microsoft.com/43be6ead-dabf-4bb1-b019-1e361efd8410
它只支持 ReSharper 静默清理,但它可以工作。
2018 注意:由于 ReSharper api 更改,这在更高版本的 ReSharper 中停止工作
【讨论】:
你可以录制宏(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") 并设置静默代码清理选项
也许这会在未来帮助其他人。我真的很喜欢 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
【讨论】:
这是我的第一篇文章(万岁!)所以如果它在任何方面都不完美,请原谅......
问题是关于 R#,但您也提到了 (Visual Studio/ReSharper),所以也许我的提示会对某人有所帮助。在名为“Productivity Power Tools”的 Visual Studio 扩展中,有两个选项(在工具 -> 选项 -> Productivity Power Tools -> PowerCommands: General 中):
我发现 PPT 很不错,即使安装了 R#。您可以从Visual Studio Gallery(2012 版,但也有 2010 和 2013 版)获取它们。
【讨论】:
如果您在 VS2012 上,并且无法使用宏解决方案,您可以使用 AutoHotKey(或类似的)来自动化它,而不是使用宏:
在 AutoHotKey 中创建一个如下所示的 sn-p:
^s::
Send, ^+c
Sleep, 300
Send, ^+s
return
【讨论】: