アクティビティ ログの使用
VSPackage では、アクティビティ ログにメッセージを書き込むことができます。 この機能は、リテール環境で VSPackage をデバッグする場合に特に便利です。
ヒント
アクティビティ ログは常にオンになっています。 Visual Studio では、一般的な構成情報を持つ最後の 100 のエントリと最初の 10 のエントリのローリング バッファーが保持されます。
アクティビティ ログにエントリを書き込む方法
次のコードを Initialize メソッドに挿入するか、VSPackage コンストラクターを除く他のメソッドに挿入します。
IVsActivityLog log = GetService(typeof(SVsActivityLog)) as IVsActivityLog; if (log == null) return; int hr = log.LogEntry((UInt32)__ACTIVITYLOG_ENTRYTYPE.ALE_INFORMATION, this.ToString(), string.Format(CultureInfo.CurrentCulture, "Called for: {0}", this.ToString()));
このコードは、SVsActivityLog サービスを取得し、それを IVsActivityLog インターフェイスにキャストします。 LogEntry は、現在のカルチャ コンテキストを使用して、アクティビティ ログに情報エントリを書き込みます。
VSPackage が読み込まれると (通常はコマンドが呼び出されたとき、またはウィンドウが開かれたときに)、テキストがアクティビティ ログに書き込まれます。
アクティビティ ログを調べる方法
/Log コマンド ライン スイッチを使用して Visual Studio を実行し、セッション中にディスクに ActivityLog.xml を書き込みます。
Visual Studio を終了した後、Visual Studio データの次のサブフォルダーでアクティビティ ログを見つけます。
*%AppData%\Microsoft\VisualStudio\{version}\ActivityLog.xml
任意のテキスト エディターを使用して、アクティビティ ログを開きます。 一般的なエントリを次に示します。
Called for: Company.MyApp.MyAppPackage ...
エディター拡張機能でのインポート/エクスポートに関する問題のトラブルシューティング: MEF コンポジション エラー ログにアクセスする
エディター ベースの拡張機能を記述するときに、現在の VS インストールに存在しないものをインポートしようとした場合、またはインポートまたはエクスポートを誤って作成した場合に、問題が発生する可能性があります。 これらの問題を見つけて対処する主な方法は、%localappdata%\Microsoft\VisualStudio{version}\ComponentModelCache\Microsoft.VisualStudio.Default.err
Managed Extensibility Framework (MEF) コンポジション エラー ログを参照することです。 拡張機能で MEF を使用する方法の詳細については、このドキュメントをチェックしてください。
信頼性の高いプログラミング
アクティビティ ログはサービスであるため、アクティビティ ログは VSPackage コンストラクターでは使用できません。
書き込みの直前にアクティビティ ログを取得する必要があります。 今後使用するために、アクティビティ ログをキャッシュまたは保存しないでください。