2016-04-15 3 views
0

私はsample provided at codeplexに基づいてVB.NET/C#プロジェクトのコードフォーマット用の小さなロンリンベースのアプリケーションを持っています。そこで私は、ソリューションでケース補正を実行するには?

projectItem.Document.DTE.ExecuteCommand("Edit.FormatDocument"); 

これはもはや許容可能である:このアプリケーションは、私はプログラム的にこのような特定のソリューション内のすべてのファイルにVisual StudioコマンドEdit.FormatDocumentを実行するには、私はDTEに基づいて開発古いコードフォーマッタの新しいバージョンですFormatDocumentコマンドと同じタスクを実行する新しいバージョンの開発を開始しました。 VB.NETのソースファイルでこのコマンドの特徴の一つは、例えば、それがキーワードと名前の両方のケースを修正することです:

  • publicPublic
  • 変数がfooBarとして定義されているがfoobar =>用法として使わなり、 fooBarなど

  • への変更は、最初に私は一人でMicrosoft.CodeAnalysis.Formatting.Formatter.FormatAsync(...)は、仕事をするだろうと思ったが、それが唯一の空白の世話をするように思えます。したがって、私は他の場所を探し始めて、方法Microsoft.CodeAnalysis.CaseCorrection.CaseCorrector.CaseCorrectAsync(...)を発見しましたが、CaseCorrectorクラスは残念ながらinternalです。それは、方法CaseCorrectAsyncであるバグがpublicであるかどうか私には不思議に思います。

    新しいローズンベースのアプリでケース補正を実行するのに合理的な方法はありますか?

  • +0

    バグかどうかについては、そうではありません。 Roslynのヘルパーの多くは「内部」ですが、あなたがそれを必要としていることを示した後、チームは「公開」するよう要求されています。あなたはおそらくこのためのレポに問題を作成する必要があります。 –

    +0

    私たちは[オープンソース](https://github.com/dotnet/roslyn)ですので、簡単にフォークして自分のツールに公開することができます。もちろん、バグも報告してください。 –

    +0

    @JasonMalinowskiもう1つ質問がある場合は、私が作った変更を利用してローズンナゲットパッケージをローカルに構築する方法についていくつかの指示がありますか(例:CaseCorrector public)? –

    答えて

    0

    正しい解決策は、実際には、roslyn bug reportのコメントに従ってpublicであることが意図されたCaseCorrectorクラスを使用することです。この問題を解決するには、今すぐCaseCorrectorを公開し、roslynをローカルにビルドし、変更されたバイナリを使用しなければなりません。

    ローカル変更が必要な場合は、ローズンナゲットパッケージを作成するためにBuildNuGets.csx scriptを利用することが可能です。

    関連する問題