ReSharper格式化:对齐相等的操作数

Mac*_*iej 27 c# resharper code-formatting

Google员工注意,此问题有些过时,因为ReSharper 2017.3.1的当前版本现在支持所请求的功能

我喜欢格式化我的代码以对齐相等操作数的右侧.
像这儿:

bool    canRead     = false;
bool    canReadClass    = true;
string  className   = boType.Name;
Run Code Online (Sandbox Code Playgroud)

我最近切换到ReSharper并发现它非常有用,但找不到允许我以描述的方式格式化代码的选项.

你知道是否有这样的选项/插件?
也许除了ReSharp解决方案之外您还知道吗?

编辑:
如何决定代码的哪一部分应该对齐?
我的约定是将所有变量对齐在同一个块中.
通过"块"我的意思是部分代码没有被空行分割.

例如

// First block
int      count     = 10;
string   name      = "abc";
bool     calculate = true;
.....
.....
// Second block
MyOwnType    myType   = new MyOwntype();
int          count    = 10;
Run Code Online (Sandbox Code Playgroud)

编辑-2
我为此打开了R#票.如果有兴趣的话请投票!

Iga*_*nik 10

在ReSharper中,(目前)无法开箱即用.幸运的是,ReSharper具有非常丰富的可扩展性API(尽管文档记录很少).我花了很多时间与Reflector一起试图解决问题.

我们为我工作的公司中的类成员使用类似的对齐准则(极端地,我们还对齐方法参数).我为ReSharper写了一个插件来帮助我做到这一点.这是一个"代码清理"模块,它在代码清理期间运行(Ctrl- E,Ctrl- F),并为您调整代码.sealed如果可能的话,它也会上课.

一些例子:

方法参数:

public void DoSomething(string      name,
                        int         age,
                        IEnumerable coll)
Run Code Online (Sandbox Code Playgroud)

(您需要在选项 - >格式样式 - >换行和换行中将Wrap形式参数更改为Chop,以使其正常工作)

常量:

private const int    RESOURCEDISPLAYTYPE_DOMAIN = 0x00000001;
private const int    CONNECT_COMMANDLINE        = 0x00000800;
private const int    CONNECT_INTERACTIVE        = 0x00000008;
private const string RESOURCE_NAME              = "Unknown";
Run Code Online (Sandbox Code Playgroud)


您可以从我的SkyDrive下载源代码.
编辑我似乎无法访问该SkyDrive,也丢失了文件.这是在github之前:(

请注意,编译/调试它需要几件事:

  1. 使用输出DLL的正确路径更新Command Line Arguments in Debug选项卡Project Properties:

    /ReSharper.Plugin "X:\<projects>\MyCompany.CodeFormatter\MyCompany.CodeFormatter\bin\Debug\MyCompany.CodeFormatter.dll"

    这允许通过调试插件 F5,它将自动安装在将打开的新Visual Studio实例中的ReSharper插件中.

  2. 该插件适用于ReSharper 4.5,它引用了此版本的DLL.如果您在其他任何地方安装了ReSharper C:\Program Files\JetBrains\ReSharper,则必须修复引用.
  3. 这不会在方法内部对齐变量,但是添加起来应该不难:)

安装完成后,只需运行Code Cleanup以修复对齐(不幸的是,我从未得到JetBrains的回复,关于如何在大括号/分号格式化期间执行此操作).

大会改名为保护无辜者:)

祝好运!


Der*_*ler 10

我认为值得注意的是Visual Studio Productivity Power Tools具有Align Assignments功能.这是Visual Studio 2013 Productivity Power Tools的链接.

  • 这些链接已经死了,包括有关源代码的评论;您可以在这里找到 2017/2019 版本:https://marketplace.visualstudio.com/items?itemName=VisualStudioPlatformTeam.ProductivityPowerPack2017 和源代码:https://github.com/Microsoft/VS-PPT (2认同)

小智 8

你可以尝试这个:代码对齐

它支持

  • 对齐...(对话框)
  • 按位置对齐...(对话框)
  • 按等于对齐
  • m_对齐
  • 对齐"
  • 对齐.
  • 按空间对齐

  • 标签对此不利,因为如果其他人的标签宽度不同,则不会对齐.标签仅在行首时才有用. (6认同)

Gar*_*eth 1

据我所知,不幸的是,使用 Resharper 无法做到这一点。