Visual studio 2010 在VisualStudio中批量规范化行尾

Visual studio 2010 在VisualStudio中批量规范化行尾,visual-studio-2010,Visual Studio 2010,打开具有混合行结尾的文件时,VisualStudio将提示您对其进行规范化。是否有方法规范化当前解决方案中的所有文件 没有回答我问题的相关帖子: Visual Studio没有一种机制来规范整个解决方案的行结束。该功能本质上仅限于检查文件在打开和更改时是否正确 不过,行结尾的规范化是Visual Studio在IEditorOperations::NormalizeLinedings中公开的API。因此,可以编写插件/脚本,对解决方案中的项目执行操作 您可以创建一个bat文件,以递归方式

打开具有混合行结尾的文件时,VisualStudio将提示您对其进行规范化。是否有方法规范化当前解决方案中的所有文件

没有回答我问题的相关帖子:


    • Visual Studio没有一种机制来规范整个解决方案的行结束。该功能本质上仅限于检查文件在打开和更改时是否正确


      不过,行结尾的规范化是Visual Studio在
      IEditorOperations::NormalizeLinedings
      中公开的API。因此,可以编写插件/脚本,对解决方案中的项目执行操作

      您可以创建一个bat文件,以递归方式规范化所有文件

    • 下载命令行工具
    • 在解决方案目录的根目录中创建包含以下内容的bat文件:
    • 对于(*.cs)中的/R%%i,请执行“C:\Prgs\Tofrodos\todos.exe”-p“%%i”

      请注意,您必须将文件路径更新为todos.exe,可能还需要更新*.cs过滤器


      然后运行bat文件并等待它完成。

      我刚刚使用了记事本++查找和替换功能:

    • 设置记事本++以显示行尾,查看->显示符号->显示所有字符
    • 打开“在文件中查找”对话框
    • 根据您正在进行的转换设置查找\r\n(或\n)内容
    • 将替换为设置为\n(或\r\n)
    • 将目录指向解决方案文件夹

    • 在执行此操作之前,您应该备份或提交任何更改,正如yellowblood在Aaron F.的回答中指出的那样,如果您将
      \n
      (LF)替换为
      \r\n
      (CRLF),您将有一个糟糕的时间,因为它会在每个LF之前添加CR,即使是那些已经有CR的LF

      但是,可以使用任何支持文件中批量替换的文本编辑器(如记事本++或Visual Studio的“文件中替换”)使用正则表达式实现所需的功能

      例如,要用CRLF替换LF,请确保激活regex选项,然后替换所有出现的

      (?<!\r)\n
      
      \r
      是回车符(CR),
      \n
      是换行符(LF)。模式
      (?将匹配其前一个字符不是回车符的任何换行符,而不捕获(即替换)前一个字符

      另一种方法要简单得多:只需将
      \r\n
      替换为
      \n

      像往常一样,备份文件并确保在处理整个解决方案之前在单个文件上测试操作


      我本想在Aaron F.的回答中加上这句话作为评论,但我的声誉还不够高:)

      太好了!我从来没有为VS编写过插件/脚本,我可以打开一个PowerShell控制台并在所有解决方案文件上编写一些循环吗?@Borek不幸的是,这其实并不容易。您将遇到的主要问题是,对于什么是用户控制的文件没有很好的定义。例如,您可能不想对生成的文件执行此操作,但从API的角度来看,它与普通文件没有太大的不同。而且,并非IDE中的所有文件都有一个真正的物理文件在磁盘上支持它们(从API也很难分辨)。通常情况下,枚举文件会起作用,但最终会遇到所有这些特殊情况。很可能这就是为什么VS的行为是今天的样子。很遗憾,我认为有一种简单的方法可以获得我在解决方案资源管理器中看到的所有内容的列表(并且是一个文件)。@Borek通过列举项目项的列表,你肯定可以得到你看到的所有内容的列表。但是,实际插入项目项并确定它是否是真正的用户文件是很棘手的。这充其量只是一种启发。我希望我有一个像样的项目来满足您的要求,但正是因为这个原因,我才避免使用项目项。如果您将\n替换为\r\n,您将度过一段不愉快的时光。
      \r\n