2012-02-20 95 views

回答

2

Visual Studio中不具有正火行尾的機制對整個解。該功能基本上僅限於在打開並更改該文件時檢查文件是否正確。

雖然行結束標準化是由Visual Studio在IEditorOperations::NormalizeLineEndings中公開的API。因此,可以編寫一個插件/腳本,對解決方案中的項目執行操作。

+0

這很好!我從來沒有寫VS的插件/腳本,我可以打開一個PowerShell控制檯,並編寫一些循環遍歷所有的解決方案文件? – Borek 2012-02-20 18:58:39

+1

@Borek不幸的是,它實際上並不容易。你會遇到的主要問題是用戶控制文件的定義不明確。例如,您可能不希望對照生成的文件執行此操作,但與API視角中的普通文件相比,它看起來沒有多大區別。並非IDE中的所有文件都有一個支持它們在磁盤上的真實物理文件(也很難從API中獲知)。一般列舉文件將工作,但你最終與所有這些角落/特殊情況。在所有可能的情況下,這就是爲什麼VS行爲就是今天的原因 – JaredPar 2012-02-20 19:01:15

+0

這很可惜,我想有一個簡單的方法可以獲得我在解決方案資源管理器(和文件)中看到的所有內容的列表。 – Borek 2012-02-20 19:07:55

5

您可以創建一個遞歸地歸一化所有文件的bat文件。

  1. 下載命令行工具Tofrodos
  2. 在您的解決方案目錄的根目錄具有以下內容創建一個批處理文件:

用於/ R %%我在(*的.cs)做「C:\ PRGS \ Tofrodos \待辦事項。 EXE」 -p 「%% i」 的

請注意,您必須更新的文件路徑todos.exe,也可能是* 的.cs過濾器。

然後運行bat文件並等待它完成。

1

我只是用記事本++查找和替換功能:

  1. 集記事本+ +,顯示行結尾,查看 - >顯示符號 - >顯示所有字符
  2. 打開在文件對話框
  3. 集查找這取決於丁文你做
  4. 組與替換爲\ n(或\ r \ n)的
  5. 點的目錄在您的解決方案文件夾中找到什麼用\ r \ n(或\ n)的

您應該備份或承諾,你這樣做

+2

如果你用\ r \ n替換\ n,你會有一段糟糕的時間。 – yellowblood 2015-12-30 10:33:08

2

由於yellowblood亞倫F.的答覆中指出,如果你與\r\n替換\n(LF)(CRLF),您將收到有任何改變這是一個糟糕的時間,因爲它會在每個LF之前添加一個CR,即使那些已經有了一個。

但是,使用支持文件批量替換的文本編輯器(如Notepad ++或Visual Studio的「替換文件」)中的正則表達式可以實現您想要的效果。

例如,爲了與CRLF替換LF,確保激活的正則表達式的選項,然後用

\r\n 

\r取代的

(?<!\r)\n 

所有出現是一個回車(CR),\n是換行符(LF)。模式(?<!\r)\n將匹配其前一個字符不是回車符的任何換行符,而不捕獲(即替換)該前一個字符。

另一種方法更簡單:只需將\r\n替換爲\n即可。

一如既往,備份您的文件並確保在處理整個解決方案之前在單個文件上測試操作。

我會添加此作爲Aaron F.的答案的評論,但我的聲譽不夠高:)