В чем разница между Roslyn CodeFix и Refactoring? - PullRequest
0 голосов
/ 03 июля 2018

Я изучил всю возможную документацию по API Roslyn, но не смог найти ответ на этот простой вопрос.

Я знаю, что CodeFix наследуется от CodeFixProvider и предоставляет исправление кода. Я также знаю, что Рефакторинг наследует от CodeRefactoringProvider и предоставляет Рефакторинг. Я обнаружил одно отличие: по какой-то причине вы не можете распространять Refactorings с помощью Nuget, только через VSIX, в то время как вы можете распространять CodeFix с помощью обоих.

Но что такое исправление кода и что такое рефакторинг? Что один может сделать, а другой нет?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

В дополнение к предыдущему ответу существует еще одно функциональное отличие между исправлением кода и рефакторингом кода. Вы можете легко добавить поддержку для исправления кода всего решения, переопределив GetFixAllProvider :

public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer;

Но, насколько я знаю, не существует такого простого способа массового рефакторинга

0 голосов
/ 03 июля 2018

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

Рефакторинг - это изменение кода, которое обычно делает его не более или менее правильным . Нет ничего необычного в том, чтобы предлагать несколько рефакторингов, которые преобразуют код между различными формами, в том числе часто обратно в ту форму, в которой он находился до того, как кто-то принял рефакторинг. Напротив, было бы крайне редко найти другое Исправление кода (в том же пакете), которое преобразовало бы код в форму, к которой могло бы применяться другое Исправление кода.

...