ウォークスルー(http://msdn.microsoft.com/en-us/library/bb166360.aspx)にリストされている手順に従って、LanguageServiceを実装および登録しましたが、動作させることができません。
パッケージが正しく読み込まれ、機能するメニュー項目とオプションページを追加できますが、サービスに登録されているファイルを開くことができません。デバッガーを接続すると、VSPackageが構築、ロードされ、FDoIdleメソッドが2回呼び出されていることがわかります。その後、実験的なVisual Studioセッションが雑草になり、無限ループでスタックしているように見えます。.txtファイルをファイルの種類として保存しようとすると、ファイルは正しく保存されますが、Visual Studioに読み込まれず、オブジェクトnull例外が発生します。
この質問で言及されている私の問題を見ることができます:Visual Studio 2010のカラーライザー、インテリセンスなど。どこから始めれば!
解決策は、Managed Package Frameworkを使用せず、代わりにManageExtensibilityFrameworkを使用することのようです。それは素晴らしいことですが、MPFLanguageServiceの実装で何が間違っているのかを本当に知りたいです。
MPFを使用してLanguageServiceを正常に作成した人はいますか?誰かが私を実用的な例やウォークスルーに導くことができますか?
問題が解決しました!:
さらにデバッグを行ったところ、実験的なVisualStudioインスタンスが次のコマンドを繰り返し呼び出してスタックしていることに気付きました。
Microsoft.VisualStudio.Editor.Implementation.VsFontsAndColorsInformation.TryGetIndexForNativeItem(文字列名、IVsColorTable colorTable、Int32&colorTableIndex)
思い切って、ProvideLanguageServiceAttributeでRequestStockColorsパラメーターをtrueに指定しました。これで、ファイルの種類を開くことができます。私のシンプルなスキャナーには、構文の色付けも機能しています。