はじめに
C#でクラスライブラリを開発する時に、必ずやった方が便利な設定の紹介です。
前提として、その開発したクラスライブラリのDLLファイルが、別のソリューション(.sln)から参照される場合を想定しています。
(同じソリューション内で[プロジェクト]の参照しかしない場合は、本稿の設定をしなくても問題ありません)
デフォルト設定のままで不便なこと
開発したクラスライブラリを、デフォルト設定のままで別のソリューションから参照させた場合、以下の2つの不便なことが起きます。
ここで言う「デフォルト設定」とは、Release ビルドしたDLLファイルを参照させた場合を意味します。
インテリセンスでコメントが表示されない
開発したクラスライブラリが、以下のようにプロパティやメソッドのコメントを記載しているとします。
/// <summary>
/// 人を表すクラス
/// </summary>
public class Person
{
/// <summary>
/// 名前
/// </summary>
public string Name { get; set; }
/// <summary>
/// 指定されたメッセージで挨拶する
/// </summary>
/// <param name="message">メッセージ</param>
public void Greet(string message)
{
Console.WriteLine(message);
}
}
しかし、そのDLLファイルを参照させた別のプロジェクトから利用する際に、メソッドのコメントがインテリセンスで表示されません。
デバッグ実行時にステップインができない
デバッグ実行時に、参照しているDLLのクラスのメソッドにステップインしたいと思っても、ステップインできません。
お勧めする便利な設定
以下の設定を行うことで、両方の問題が解消できます。
インテリセンスでコメントが表示されるようにする
-doc (C# コンパイラ オプション) を付けることで、XML ファイル内にドキュメント コメントを含めることができます。
具体的には、以下の手順でプロジェクト設定を変更すると、ビルド時にDLLファイルと同じフォルダにXMLファイルが作成されます。
- プロジェクトの [プロパティ] ページを開きます。
- [ビルド] タブをクリックします。
- [XML ドキュメント ファイル] プロパティにチェックを付けます。
-doc の詳細は以下を参照ください。
-doc (C# コンパイラ オプション) | Microsoft Docs
上記で作成したXMLファイルを、参照するDLLファイルと同じフォルダに格納しておけば、DLLファイルの読み込み時に、XMLも一緒に読み込んでくれます。その結果、下図のように、インテリセンスでコメントも表示されるようになります。
デバッグ実行時にステップインできるようにする
デバッグ実行するためには、ビルド時にDLLと一緒に生成される pdbファイルが必要になります。また、Releaseビルドのファイルではデバッグ実行できないため、Debugビルドのファイルに差し替える必要があります。
従って、DebugビルドしたDLLとpdbファイルを同じフォルダに格納し、そのDLLファイルを参照させることで、そのDLLのメソッドをステップ実行できます。
詳細は以下を参照ください。
Visual Studio デバッガーでシンボル (.pdb) ファイルとソース ファイルの指定 (C#、C++、Visual Basic、 F#) | Microsoft Docs
下図は、DLLファイルを参照したプロジェクトから、DLL内のクラスのメソッドにステップインした時の画面です。ソースコードのコメントや行番号も確認できます。
なお、テスト実施やリリースの際には、Release ビルドのDLLを利用する必要があるため、別途 ReleaseビルドのDLLを別フォルダに格納しておくことをお勧めします。インストーラを作成するスクリプトなどは、ReleaseビルドのDLLを利用するように設定しておくと良いと思います。
まとめ
DebugビルドしたDLLとXMLとpdbのファイルを同じフォルダに格納した上で、参照させると便利です。
私は上記手法を用いて こちらのツール を作っています。
Twitterでも開発に役立つ情報を発信しています → @kojimadev