tl; dr群集の場合:
- コード内のConsole.WriteLineまたはDebug.Printステートメントでない場合、タイプ名が出力ウィンドウに書き込まれる原因は何ですか?Visual Studioデバッガーですか?と
- どうすればオフにできますか?
背景と詳細:
CSVファイルをデータベースにインポートするプログラムをデバッグしようとしています。最近、サードパーティのライブラリの依存関係を含める方法を変更しました。以前は、ダウンロードしたバイナリファイルを参照していました。現在、サードパーティのライブラリにNHibernateなどの利用可能なソースコードがある場合、プロジェクトはソリューションに含まれ、自分で作成したプロジェクトと一緒にコンパイルされます。
変更後、以前は表示していなかったタイプ名のみを含む単一行が[出力/デバッグ]ウィンドウに多数表示されます。私のプログラムはデータインポーターであり、メインループにより、これらの行が数千回表示され、デバッグが遅くなり、出力ウィンドウが汚染されます。具体的には、これを言う行がたくさんあります:
NHibernate.Driver.NHybridDataReader
コードをトレースしましたが、NHibernateがデータベースから結果を読み戻すたびにこれが表示されるようです。ただし、この行はNHibernateライブラリによってコードで出力されないため、別の場所から取得されている必要があります。私の推測では、Visual Studioデバッガーは、アセンブリバインディング中に発生するのと同様に、出力ウィンドウに書き込みます。
NHibernateプロジェクトをリリースモードでコンパイルし、他のすべてをデバッグモードでコンパイルしようとしましたが、修正されませんでした。NHibernateプロジェクトだけで[VisualStudioホスティングプロセスを有効にする]のチェックを外してみましたが、それも機能しませんでした。
要約すると、私の質問は次のとおりです。
- コード内のConsole.WriteLineまたはDebug.Printステートメントでない場合、出力ウィンドウにタイプ名を書き込むのは何ですか?と
- どうすればオフにできますか?
私の質問は何ではありません
私の質問は、必要なデータがデータベースからプリロードされるようにデータインポータープログラムを作成するためのより良い方法についてではありません。私が書いたコードは遅いことを知っています。この特定のケースでは、本番環境では問題ありません。私が欲しいのは、大量の不要なタイプ情報でデバッグウィンドウを汚染するのをやめることです。私のプログラムのワークループにより、長いCSVファイルに対してタイプが数千回書き込まれるため、出力が使いにくくなり、出力ウィンドウを同期しようとするデバッガーの速度が低下します。これは私が防ごうとしていることです。しかし、メッセージがどこから来ているのかさえわからないので、それを行う方法がわかりません。