Применяйте быстрые действия Visual Studio и рефакторинги ко всему решению C #

#c# #visual-studio #refactoring #automated-refactoring

#c# #visual-studio #рефакторинг #автоматизированный рефакторинг

Вопрос:

Я пытаюсь очистить / реорганизовать устаревшее решение на C # и поэтому изучаю варианты того, как определенные рефакторинги или быстрые действия могут быть применены ко всему решению.

Например, Visual Studio 2017 предлагает действия «Заменить xxx и xxx на property» и «Использовать автоматическое свойство», которые я могу применить с помощью значка лампочки для отдельных классов и методов / свойств.

Как я мог бы применить их ко всему приложению или полуавтоматически повторить все вхождения (более 300) и применить их? Я открыт для всех вариантов — командной строки, powershell, VBA, даже VISX-разработки. Я не хочу заново разрабатывать сам рефакторинг, и я не думаю, что простой find amp; replace тоже подойдет.

Ответ №1:

Когда появится окно быстрых действий, вы можете применить выбранное исправление к отдельному экземпляру или ко всему документу / проекту / решению: Окно быстрого действия -> Применить к решению

Если вы применяете каждое указанное исправление к своему решению (или проекту), то вам потребуется обработать каждое предложение только один раз, поскольку первое, которое вы измените, будет применяться ко всем последующим экземплярам.

В качестве альтернативы вы могли бы использовать инструмент «Форматирование dotnet«, чтобы применить набор определенных правил форматирования к вашему проекту через командную строку, хотя это зависит от наличия у вас файла EditorConfig с определенными правилами.

Ответ №2:

Взгляните на EditorConfig . То, что вы ищете, — это разделЯзыковые соглашения«, и вы можете пометить действие как молчащее (синоним рефакторинга в версии 15.8).:

 # $slnRoot.editorconfig

[*.cs]
dotnet_style_prefer_auto_properties = true:silent
  

Затем, когда вы столкнетесь с этим действием в своем коде, вы можете применить быстрое действие ко всему вашему решению, файлу, проекту и т.д.


Примечание: в EditorConfig VS2017 были некоторые ошибки. Мне пришлось закрыть решение и перезапустить IDE, чтобы иногда вносить изменения.