我正在创建omnisharp.json
文件来设置C#格式首选项。 我如何知道可以设置哪些属性以及它们的默认值是什么?
using
statements,但是IntelliSense似乎并不了解相应的using
属性。OrganizeImports
文件,用于指定默认设置,但我没有这样的文件。config.json
的Configuration Options wiki page列出了默认的omnisharp-roslyn
project块,但也缺少omnisharp-roslyn
。FormattingOptions
上有OrganizeImports
的条目,但是如果您查看omnisharp.json
,会发现三年来它没有更新。SchemaStore
GitHub repository。尽管该文章列出了默认的格式设置,但它已经使用了三年多。当然,必须有明确的最新信息来源,或者我可以自行确定的方式,对吧?
SchemaStore
的omnisharp.json
属性映射到C# code formatting settings in VS Code and OmniSharp的实例。现在,您可以获取该源代码并对其进行一些文本操作...
FormattingOptions
→omnisharp.json
,但随后您将不会获得未明确初始化的任何属性。OmniSharp.Options.FormattingOptions
class→OmniSharp.Options.FormattingOptions
),但是您将无法获得默认值。...但是我认为最好的方法是自己简单地实例化该类并检查其属性。您可以使用NewLine = "\n";
轻松完成此操作。
您需要做的第一件事就是确定包含"NewLine": "\n",
类的public string NewLine { get; set; }
程序集的路径。从"NewLine": "",
开始(在Windows上为PowerShell (Core);在Mac / Linux上为OmniSharp.Shared.dll
),您会在这里找到它...
OmniSharp.Options.FormattingOptions
%UserProfile%\.vscode\extensions
~/.vscode/extensions
.vscode
extensions
ms-vscode
我在Windows上安装了csharp-{major}.{minor}.{patch}
扩展名的v1.21.11,所以该程序集的路径是.omnisharp
。
在PowerShell会话中,将该路径传递给命令以加载程序集...
{major}.{minor}.{patch}
如果成功,将不会产生任何输出。然后,您只需要实例化一个OmniSharp.Shared.dll
实例,该实例的属性名称和默认值将显示在控制台中。
ms-vscode.csharp
您甚至可以让它为您创建相应的JSON ...
C:\Users\UserName\.vscode\extensions\ms-vscode.csharp-1.21.11\.omnisharp\1.34.11\OmniSharp.Shared.dll
...或直接将其写入当前目录中的默认
PS> Add-Type -Path 'C:\Users\UserName\.vscode\extensions\ms-vscode.csharp-1.21.11\.omnisharp\1.34.11\OmniSharp.Shared.dll'
文件...
提供默认FormattingOptions
上述技术可能对使用
PS> New-Object -TypeName 'OmniSharp.Options.FormattingOptions' OrganizeImports : False EnableEditorConfigSupport : False NewLine : UseTabs : False TabSize : 4 [snip]
的其他编辑者有效;只需查找PS> [PSCustomObject] @{ FormattingOptions = New-Object -TypeName 'OmniSharp.Options.FormattingOptions' } | ConvertTo-Json { "FormattingOptions": { "OrganizeImports": false, "EnableEditorConfigSupport": false, "NewLine": "\n", "UseTabs": false, "TabSize": 4, [snip] } }
的存储位置即可。请注意,我not
omnisharp.json
的全文,因此这不会成为复制和粘贴配置的另一个过时资源。该想法是动态查询您的 OmniSharp安装版本的值。