有没有一种方法来重命名所有方法,属性等,建议由R#。 我的代码,我从Java转换,所有的方法和属性都在这样“onBeforeInsertExpression”的格式,我想他们跟着骆驼外壳是常见的.NET。
这个问题也是的CodeRush。
有没有一种方法来重命名所有方法,属性等,建议由R#。 我的代码,我从Java转换,所有的方法和属性都在这样“onBeforeInsertExpression”的格式,我想他们跟着骆驼外壳是常见的.NET。
这个问题也是的CodeRush。
不,很不幸,没有办法。 ReSharper的代码清理/重新格式化代码的选择很好地工作进行格式化,namepaces等,但不会做任何自动重命名成员。 你还挺坚持做每件上的“速战速决”。 如果你有很多人,这可能是一个痛苦...
我需要相同的功能,但没有找到它。 我认为使用API编写到ReSharper的加载项,但决定定期的Visual Studio宏来代替。 这个宏重命名当前文档的默认设置ReSharper的的方法和私有字段,但可以很容易地修改通过项目或解决方案中的所有文件进行迭代。
这段代码保存为一个.vb文件并将其导入到你的VS宏。
Imports System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports EnvDTE90a Imports EnvDTE100 Imports System.Diagnostics Public Module RenameMembers Enum NamingStyle UpperCamelCase LowerCamelCase End Enum Public Sub RenameMembers() Try 'Iterate through all code elements in the open document IterateCodeElements(ActiveDocument.ProjectItem.FileCodeModel.CodeElements) Catch ex As System.Exception End Try End Sub 'Iterate through all the code elements in the provided element Private Sub IterateCodeElements(ByVal colCodeElements As CodeElements) Dim objCodeElement As EnvDTE.CodeElement If Not (colCodeElements Is Nothing) Then For Each objCodeElement In colCodeElements Try Dim element As CodeElement2 = CType(objCodeElement, CodeElement2) If element.Kind = vsCMElement.vsCMElementVariable Then RenameField(element) ElseIf element.Kind = vsCMElement.vsCMElementFunction Then 'Rename the methods ApplyNamingStyle(element, NamingStyle.UpperCamelCase) ElseIf TypeOf objCodeElement Is EnvDTE.CodeNamespace Then Dim objCodeNamespace = CType(objCodeElement, EnvDTE.CodeNamespace) IterateCodeElements(objCodeNamespace.Members) ElseIf TypeOf objCodeElement Is EnvDTE.CodeClass Then Dim objCodeClass = CType(objCodeElement, EnvDTE.CodeClass) IterateCodeElements(objCodeClass.Members) End If Catch End Try Next End If End Sub 'Rename the field members according to our code specifications Private Sub RenameField(ByRef element As CodeElement2) If element.Kind = vsCMElement.vsCMElementVariable Then Dim field As EnvDTE.CodeVariable = CType(element, EnvDTE.CodeVariable) If (field.Access = vsCMAccess.vsCMAccessPrivate) Then 'private static readonly If (field.IsShared AndAlso field.IsConstant) Then ApplyNamingStyle(element, NamingStyle.UpperCamelCase) ElseIf (Not field.IsShared) Then 'private field (readonly but not static) ApplyNamingStyle(element, NamingStyle.LowerCamelCase, "_") Else ApplyNamingStyle(element, NamingStyle.UpperCamelCase) End If Else 'if is public, the first letter should be made uppercase ToUpperCamelCase(element) End If 'if public or protected field, start with uppercase End If End Sub Private Function ApplyNamingStyle(ByRef element As CodeElement2, ByVal style As NamingStyle, Optional ByVal prefix As String = "", Optional ByVal suffix As String = "") Dim the_string As String = element.Name If (Not the_string Is Nothing AndAlso the_string.Length > 2) Then If (style = NamingStyle.LowerCamelCase) Then ToLowerCamelCase(the_string) ElseIf (style = NamingStyle.UpperCamelCase) Then ToUpperCamelCase(the_string) Else 'add additional styles here End If End If AddPrefixOrSuffix(the_string, prefix, suffix) If (Not element.Name.Equals(the_string)) Then element.RenameSymbol(the_string) End If End Function Private Function ToLowerCamelCase(ByRef the_string As String) the_string = the_string.Substring(0, 1).ToLower() & the_string.Substring(1) End Function Private Function AddPrefixOrSuffix(ByRef the_string As String, Optional ByVal prefix As String = "", Optional ByVal suffix As String = "") If (Not the_string.StartsWith(prefix)) Then the_string = prefix + the_string End If If (Not the_string.EndsWith(suffix)) Then the_string = the_string + suffix End If End Function Private Function ToUpperCamelCase(ByRef the_string As String) the_string = the_string.Substring(0, 1).ToUpper() & the_string.Substring(1) End Function End Module
的CodeRush的做法对这种修复更是一个互动的过程。
这就是说,你必须身体是他的名字,你想改变,你必须单独更改每一个变量的位置。
这就是说,有一个很强大的引擎下的CodeRush称为DXCore,它可以被用来创建一个非常广泛的功能。 事实上,正是这一层在其上构建整个的CodeRush和RefactoPro的。
我毫不怀疑,它可以被用来创建你以后的功能。 不过,我怀疑你会使用现有的重命名技术。 我将不得不考虑这一点了进一步的,但我对能够生产出乐观。
该功能在ReSharper的9介绍了作为解释在这里 ,现在你可以申请范围,文件,项目或解决方案重新分解。