Настройки из .editorconfig не соблюдаются в коде Omnisharp / VS - PullRequest
2 голосов
/ 01 марта 2020

Я пытаюсь настроить код Visual Stuido таким образом, чтобы Omnisharp использовал настройки, предоставленные в .editorconfig, как описано в https://www.strathweb.com/2019/07/editorconfig-support-in-omnisharp-and-c-extension-vs-code/. Я настроил новый консольный проект. net -core 3.1, используя dotnet new console и добавил файл .editorconfig в root проекта. Затем я заполнил точные значения из поста в блоге (см. Ниже) и включил анализаторы editorconfig и roslyn для OmniSharp. Я даже попробовал оба способа включения функций: в settings.json и в omnisharp.json. Но когда я использовал возможности рефакторинга OmniSharp для создания поля из параметра конструктора, сгенерированное имя было равно имени параметра вместо префикса _. Многократный перезапуск сервера OmniSharp также не помог.

.editorconfig

[*.cs]
dotnet_style_qualification_for_field = false
dotnet_naming_style.instance_field_style.capitalization = camel_case
dotnet_naming_style.instance_field_style.required_prefix = _

Пример класса с автоматически сгенерированным полем

public class MyClass
{
    private readonly string a;  // This should have been named _a

    public MyClass(string a)
    {
        this.a = a;  // Should be without the this.-prefix
    }
}

Что я использую:

  • VS Код версии 1.42.1
  • C# расширение для VS Код версии 1.21.12
  • Сервер Omnisharp (часть расширения) версии 1.34.13

Я был бы очень признателен, если бы кто-нибудь мог сказать мне, что я делаю неправильно, или указать мне правильное направление.

1 Ответ

0 голосов
/ 21 апреля 2020

У меня также были проблемы с форматированием в последнее время.

Думаю, у меня наконец-то есть стабильное рабочее решение.

  • Я отключил все другие расширения форматирования кода, которые я ранее установил и попробовал. Это включало комментирование всех настроек, связанных с этими расширениями в settings.json
  • Я удалил файл .editorconfig, который был в моем проекте root.
  • Я добавил следующее к settings.json
"[csharp]": {
    "editor.defaultFormatter": "ms-dotnettools.csharp"
 },
"omnisharp.enableMsBuildLoadProjectsOnDemand": true,
"omnisharp.enableEditorConfigSupport": true,
"omnisharp.enableRoslynAnalyzers": true,
  • Я добавил следующее в начало моего omnisharp.json файла.
{
  "RoslynExtensionsOptions": {
    "enableAnalyzersSupport": true,
  },
  "FormattingOptions": {
    "enableEditorConfigSupport": true,
  • Создайте заново .editorconfig в проекте root , используя пример , связанный в посте, который вы упомянули выше. Это было важно для меня, потому что .editorconfig, который я использовал ранее, не работал даже после всех других изменений.
  • Перезапустите VS Code
  • Перезагрузите ваш проект

Я не видел опции для создания readonly string _name, пока не перезапустил все.

[Редактировать] Следующий ответ из @Stephen также может быть полезен для вы.

#IDE1006
dotnet_naming_style.camel_case.capitalization = camel_case
dotnet_naming_symbols.private_symbols.applicable_accessibilities = private
dotnet_naming_rule.camel_case_for_private.severity = warning
dotnet_naming_rule.camel_case_for_private.symbols  = private_symbols
dotnet_naming_rule.camel_case_for_private.style = camel_case
...