在VSCode使用JS的風格格式化C#代碼
最近小組里在梳理開發(fā)規(guī)范,對于代碼格式化方面,考慮到多數(shù)同事的開發(fā)習慣,決定沿襲TS的風格,即在VSCode中自動格式化時保留左花括號不換行。起初是采用了VSCode的C#FixFormat插件,可以說基本滿足要求,唯一不足的是會將->符號分開,變成- >,這樣一些指針的寫法還是會有問題。
后來看到一種配置VSCode的FormatingOptions的方法,可以自己配置想要的代碼格式化。具體方法是在工程根目錄下新建一個omnisharp.json(如果要全局生效,則在C:\Users\用戶名.omnisharp文件夾下創(chuàng)建)。然后在omnisharp.json中寫如以下配置,然后保存即可:
{
? ?"FormattingOptions": {
? ? ? ?"newLine": "\n", ? ?// 換行符
? ? ? ?"useTabs": false, ? // 將制表符改為空格
? ? ? ?"tabSize": 4, ? ? ? // 制表符替換為4個空格
? ? ? ?"indentationSize": 4, ? // 換行縮進字符
? ? ? ?"NewLinesForBracesInTypes": false, ?// 類花括號另起一行
? ? ? ?"NewLinesForBracesInMethods": false, ? ?// 方法花括號另起一行
? ? ? ?"NewLinesForBracesInProperties": false, // 屬性花括號另起一行
? ? ? ?"NewLinesForBracesInAccessors": false, ?// 訪問器花括號另起一行
? ? ? ?"NewLinesForBracesInAnonymousMethods": false, ? // 匿名方法花括號另起一行
? ? ? ?"NewLinesForBracesInControlBlocks": false, ?// 控制塊?花括號另起一行
? ? ? ?"NewLinesForBracesInAnonymousTypes": false, // 匿名類花括號另起一行
? ? ? ?"NewLinesForBracesInObjectCollectionArrayInitializers": false, ?// 數(shù)組初始化賦值花括號另起一行
? ? ? ?"NewLinesForBracesInLambdaExpressionBody": false, ? // 箭頭函數(shù)花括號另起一行
? ? ? ?"NewLineForElse": false, ? ?// else另起一行
? ? ? ?"NewLineForCatch": false, ? // catch另起一行
? ? ? ?"NewLineForFinally": false, // finally另起一行
? ? ? ?"NewLineForMembersInObjectInit": false, // 對象成員初始化賦值另起一行
? ? ? ?"NewLineForMembersInAnonymousTypes": false, // 匿名類成員初始化賦值另起一行
? ? ? ?"NewLineForClausesInQuery": false ? // Query子句?另起一行
? ?}
}
更多配置項可以在這個鏈接找到:https://github.com/OmniSharp/omnisharp-roslyn/blob/master/src/OmniSharp.Shared/Options/FormattingOptions.cs
___________________________?2022/11/10編輯 ________________________________
omnisharp.json文件無效解決:
由于某次VSCode更新后omnisharp.json文件的配置突然就失效了,試過放全局目錄和工程目錄都沒效果,苦尋好久沒找到解決方法,結果今天一個程序同事也反饋了omnisharp.json文件無效,然后不到一小時就找到了問題所在。(我好菜,我太依賴搜索引擎了5555~)
原來是VSCode的C#插件在某次更新后默認開啟使用.editorconfig配置優(yōu)先,忽略了omnisharp.json的配置,所以可以在VSCode的Settings里設置"omnisharp.enableEditorConfigSupport": false讓omnisharp.json文件繼續(xù)生效,或者找一下.editorconfig里配置格式化的方法。
