none
インテリセンスにコメントが表示されない RRS feed

  • 質問

  • いつもお世話になっております。

    環境:WinXP、VS2005(C#)

     

    クラスやメソッドの頭にXMLコメントをつけておくと、

    他から呼び出したときに、インテリセンスにsummaryの部分が表示されるかと思います。

     

    普通は表示されるのですが、

    DLLの境界をまたぐと表示されなくなるようです。

    DLLのクラスのコメントがEXEのインテリセンスで見えないと言うことです。

    .NET FrameworkのDLLは見ることが出来るのに、自作DLLでは見えません。

     

    見えるようにする方法はないでしょうか。

    宜しくお願い致します。

     

     

     

     

    2009年1月14日 23:39

回答

  • こんにちは!(^^)!ふ~です。

     

    >.NET FrameworkのDLLは見ることが出来るのに、自作DLLでは見えません。

     

    たぶん、皆さんは、自作DLLの解釈でC言語や、C++を想定されていると思います

    が、!(^^)!ふ~さんですので、C#と思い込んで回答しております。ご了承ください。

     

    特別な事はしていないのですが、Class1 clb = new Class1();
    がないと、何もメッセージが表示されないようです。

     

    <簡単手順>
    1.メインプロジェクトを作成する。
    2.ファイルの追加から新しいプロジェクト作成
         でクラスライブラリを作成する
    3.メイン側の参照設定で、参照の追加の参照で
         作成したクラスライブラリを追加する
    4.メインソースにusing ClassLibraryTest1などの
          クラスライブラリのnamespaceを追加する
    5.Class1 clb = new Class1();のインスタンス作成する
    6.『clb.』で作成したメッソッドが見えます。
    7.マウスをメソッドの上に合わせるとメッセージも読めます

     

    Code Snippet

    <Form1.csの内容>

    using System;
    using System.Text;
    using System.Windows.Forms;
    using ClassLibraryTest1;

     

    namespace CmmDllCmmMain
    {
     public partial class Form1 : Form
     {
      public Form1()
      {
       InitializeComponent();
      }

      private void Form1_Load(object sender, EventArgs e)
      {
       Class1 clb = new Class1();
       clb.print("本日は晴天なり");
      }
     }
    }

     

    <Class1.csの内容>

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Diagnostics ;

    namespace ClassLibraryTest1
    {
     public class Class1
     {
      /// <summary>
      /// メッセージを出力ウインドウへ表示する
      /// </summary>
      /// <param name="mess">表示文字列を入れる</param>
      public void print(string mess)
      {
       Debug .WriteLine ( mess );
      }

     }
    }

     

     

    2009年1月15日 3:45
  • MSDN
      /doc (ドキュメント コメントの処理) (C# コンパイラ オプション)

    http://msdn.microsoft.com/ja-jp/library/3260k4x7.aspx

    2009年1月15日 4:04
  •  Myon さんからの引用

    VisualStudioですので、

    「XMLドキュメントファイル」と言うところにチェックをつけています。

    ただ、これは別の目的で使用しており、

    XMLファイルも正常に出力されています。

    しかしこれではXMLファイルに出力されただけで

    DLLだけを参照しているEXEからインテリセンスみるということとは別のような気がします。

     

    これを実現するにはXMLファイルとDLLを関連付けるか、

    DLLの中にコメントのSummaryを埋め込むかしないといけないと思うのです。

    それは下記の方法以外でという事でしょうか?

     

    先程のリンク先のドキュメントより引用

    | 生成された .xml ファイルで IntelliSense 機能を使用するには、

    | サポートするアセンブリの名前と .xml ファイル名を同じにして、そのファイルをアセンブリと同じディレクトリに置いてください。

    | これで、アセンブリが Visual Studio プロジェクトで参照されると、.xml ファイルも同様に検出されます。

    2009年1月15日 5:41

すべての返信

  • こんにちは!(^^)!ふ~です。

     

    >.NET FrameworkのDLLは見ることが出来るのに、自作DLLでは見えません。

     

    たぶん、皆さんは、自作DLLの解釈でC言語や、C++を想定されていると思います

    が、!(^^)!ふ~さんですので、C#と思い込んで回答しております。ご了承ください。

     

    特別な事はしていないのですが、Class1 clb = new Class1();
    がないと、何もメッセージが表示されないようです。

     

    <簡単手順>
    1.メインプロジェクトを作成する。
    2.ファイルの追加から新しいプロジェクト作成
         でクラスライブラリを作成する
    3.メイン側の参照設定で、参照の追加の参照で
         作成したクラスライブラリを追加する
    4.メインソースにusing ClassLibraryTest1などの
          クラスライブラリのnamespaceを追加する
    5.Class1 clb = new Class1();のインスタンス作成する
    6.『clb.』で作成したメッソッドが見えます。
    7.マウスをメソッドの上に合わせるとメッセージも読めます

     

    Code Snippet

    <Form1.csの内容>

    using System;
    using System.Text;
    using System.Windows.Forms;
    using ClassLibraryTest1;

     

    namespace CmmDllCmmMain
    {
     public partial class Form1 : Form
     {
      public Form1()
      {
       InitializeComponent();
      }

      private void Form1_Load(object sender, EventArgs e)
      {
       Class1 clb = new Class1();
       clb.print("本日は晴天なり");
      }
     }
    }

     

    <Class1.csの内容>

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Diagnostics ;

    namespace ClassLibraryTest1
    {
     public class Class1
     {
      /// <summary>
      /// メッセージを出力ウインドウへ表示する
      /// </summary>
      /// <param name="mess">表示文字列を入れる</param>
      public void print(string mess)
      {
       Debug .WriteLine ( mess );
      }

     }
    }

     

     

    2009年1月15日 3:45
  • MSDN
      /doc (ドキュメント コメントの処理) (C# コンパイラ オプション)

    http://msdn.microsoft.com/ja-jp/library/3260k4x7.aspx

    2009年1月15日 4:04
  • 早速のご回答ありがとうございました。

     

    !(^^)!ふ~様

     

    EXEもDLLもC#2.0です。

    提示してくださった通りにプロジェクト、DLLを作って、

    コードもコピーしてやってみましたが、

    こちらではコメントがEXE側で見えません。

    「メッセージを出力ウインドウへ表示する」

    というサマリーがEXE側で見たいのですが。

     

    karashima様

     

    VisualStudioですので、

    「XMLドキュメントファイル」と言うところにチェックをつけています。

    ただ、これは別の目的で使用しており、

    XMLファイルも正常に出力されています。

    しかしこれではXMLファイルに出力されただけで

    DLLだけを参照しているEXEからインテリセンスみるということとは別のような気がします。

     

    これを実現するにはXMLファイルとDLLを関連付けるか、

    DLLの中にコメントのSummaryを埋め込むかしないといけないと思うのです。

     

     

    2009年1月15日 4:24
  •  Myon さんからの引用

    VisualStudioですので、

    「XMLドキュメントファイル」と言うところにチェックをつけています。

    ただ、これは別の目的で使用しており、

    XMLファイルも正常に出力されています。

    しかしこれではXMLファイルに出力されただけで

    DLLだけを参照しているEXEからインテリセンスみるということとは別のような気がします。

     

    これを実現するにはXMLファイルとDLLを関連付けるか、

    DLLの中にコメントのSummaryを埋め込むかしないといけないと思うのです。

    それは下記の方法以外でという事でしょうか?

     

    先程のリンク先のドキュメントより引用

    | 生成された .xml ファイルで IntelliSense 機能を使用するには、

    | サポートするアセンブリの名前と .xml ファイル名を同じにして、そのファイルをアセンブリと同じディレクトリに置いてください。

    | これで、アセンブリが Visual Studio プロジェクトで参照されると、.xml ファイルも同様に検出されます。

    2009年1月15日 5:41
  • 大変失礼いたしました!

    ご提示の方法で実現できました。

    ドキュメントをしっかりと読んでいませんでした。

    申し訳ありません。ありがとうございました。

     

     

     

    2009年1月15日 8:10