如何在Visual Studio 2008中对代码进行排序(按方法名称)?

时间:2020-03-06 14:59:56  来源:igfitidea点击:

缺少剪切和粘贴,是否可以对Visual Studio 2008中的类中的方法进行排序?我喜欢井井有条的代码。

解决方案

我们可能会发现或者能够创建一个宏来执行此操作,但是VS没有内置的功能可以对方法进行排序。一些第三方生产力工具,例如Resharper和CodeRush,提供了一些对代码进行重新排序的功能。

ReSharper具有代码重新排序功能和"文件结构"视图,可让我们进行拖放重新排序。

Resharper将以有限的方式做得很好。这取决于我们想要多少。例如,它不会根据生命周期或者类似情况在asp.net页中对重写进行重新排序,但是它将保留属性,字段,方法以及未明确分组的内容

编辑:到了那时,我指的是自动重新排序(也称为重新格式化)。

这是一个免费插件,可满足要求:http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=800978aa-2aac-4440-8bdf-6d1a76a5c23c

更新

不幸的是,链接已过时。我们可以在http://www.rauchy.net/regionerate/docs/2007/05/download.html下载Regionerate

如果使用的是Resharper,则可以更改"类型成员布局"模板,以便按自己的喜好排序代码。请参见Resharper>选项>语言> C#>类型成员布局。
替代文字http://www.jetbrains.com/resharper/features/screenshots/40/automatic_member_layout_full.png

例如,我们可以将具有特定属性的方法放在文件中的第一位,例如标有NUnit的[Setup]和[TearDown]的方法可能要比标有[Test]的方法靠前的代码,方法是:

<!--Fixture Setup/Teardown-->
<Entry>
  <Match>
    <And>
      <Kind Is="method"/>
      <Or>
        <HasAttribute CLRName="NUnit.Framework.TestFixtureSetUpAttribute" Inherit="true"/>
        <HasAttribute CLRName="NUnit.Framework.TestFixtureTearDownAttribute" Inherit="true"/>
      </Or>
    </And>
  </Match>
 </Entry>

前:

<!--Test methods-->
<Entry>
  <Match>
    <And Weight="100">
      <Kind Is="method"/>
      <HasAttribute CLRName="NUnit.Framework.TestAttribute" Inherit="false"/>
    </And>
  </Match>
  <Sort>
    <Name/>
  </Sort>
</Entry>

然后为所有其他内容提供全面的帮助:

<!--All other members-->
<Entry>
  <Sort>
    <Name/>
  </Sort>
</Entry>

模板系统非常强大,应该可以满足需求。