У меня есть крошечное приложение на основе roslyn для форматирования кода проектов VB.NET/C# на основе sample provided at codeplex. Это приложение представляет собой новую версию старого кода форматера, что я разработан на основе DTE, в котором программно запустить Визуальную команду студии Edit.FormatDocument
каждый файл в определенном решении, как это:Как запустить коррекцию случая по решению?
projectItem.Document.DTE.ExecuteCommand("Edit.FormatDocument");
Это уже не приемлемо, поэтому я начал разработку новой версии, которая будет выполнять ту же задачу, что и команда FormatDocument. Одной из особенностей этой команды в исходном файле VB.NET является то, что он исправляет кожух для ключевых слов и имен, например:
public
становитсяPublic
,- переменными определяются как
fooBar
но используются какfoobar
=> использования изменения вfooBar
- т.д.
Сначала я подумал, что только Microsoft.CodeAnalysis.Formatting.Formatter.FormatAsync(...)
будет делать эту работу, но это кажется, что это происходит только заботу о непечатаемыхах. Поэтому я начал искать в другом месте и обнаружил метод Microsoft.CodeAnalysis.CaseCorrection.CaseCorrector.CaseCorrectAsync(...)
, но класс CaseCorrector
, к сожалению, internal
. Это заставляет меня задаться вопросом, не является ли это ошибкой с учетом метода CaseCorrectAsync
, являющегося public
.
Есть ли разумный способ запустить коррекцию случаев в моем новом приложении на основе рослина?
Что касается ошибки или нет: нет, скорее всего, это не так. Многие из помощников Рослина являются «внутренними», но команда открыта для запросов сделать их «публичными» после того, как вы продемонстрировали необходимость в ней. Вероятно, вы должны создать проблему для репо для этого. –
Имейте в виду, что мы [с открытым исходным кодом] (https://github.com/dotnet/roslyn), и поэтому вы можете легко разветвить нас и сделать их общедоступными для ваших собственных инструментов. Но, конечно, файл ошибка тоже. –
@JasonMalinowski Если у меня может возникнуть еще один вопрос - есть ли инструкции по локальному созданию пакетов roslyn nuget с использованием модификаций (например, создание CaseCorrector public), которые я сделал? –