顯示具有 XML 標籤的文章。 顯示所有文章
顯示具有 XML 標籤的文章。 顯示所有文章

2011年6月27日 星期一

[.Net] C#的註解方式以及XML的說明文件

這篇是延續上一篇,要使用Sandcastle產生HelpDoc,必須先在C#中產生XML說明文件(VB.Net也可以用同樣的方法,只是註解寫法有 點不一樣),而Sandcastle則利用這樣的說明文件去產生HelpDoc,這篇由C#的註解方式講起,簡單說明該如何產生XML說明文件


C#的註解方式以及XML的說明文件
C#提供了兩種註解方法,跟C以及JAVA蠻類似的
單行註解用 //註解
多行則是用
/*
註解
*/

但是以上註解是幫助用來讓Programer了解程式邏輯,只有能看到Source Code的人看得到這些註解,

如果我們要提供API或者library給別人呼叫,就必須提供類似Javadoc的API說明文件,這樣使用者才

會知道這些API的使用方法,以及傳入傳出的參數,而C#的XML註解就可以達到這個功能

C#的XML文件註解方式主要是在souce code中以一般註解的方式加入特定的標籤<tag>,在.Net

Project Build up時,及會同時產生說明文件

大致寫法如下:
/// <summary>
/// Test Project
/// </summary>
public class Test
{
    /// <summary>
/// Add two number
/// </summary>
/// <param name="i">1st add number</param>
/// <param name="j">2nd add number</param>
/// <returns>sum</returns>
    public int add(int i, int j){
....
    }
}

另外也可以寫成這樣用多行註解的形式
/** 
<summary>
Test Project
</summary>
*/

多行註解還有很多方式可以用,但是給他有點複雜,詳細可以參考 MSDN裡面的文件標籤的分隔符號 (C# 程式設計手冊)
http://msdn.microsoft.com/zh-tw/library/5fz4y783(v=VS.80).aspx


上面Sample Code用到的Tag
<summary>description</summary>

<summary> 標記應用於描述型別或型別成員。使用 <remarks> 為型別描述加入補充資訊。
<summary> 標記的內容會是 IntelliSense 中有關型別資訊的唯一來源,也會在物件瀏覽器中顯示。


<param name='name'>description</param>
參數 name 為方法參數的名稱。以雙引號 (" ") 將名稱括起來。

<param> 標記應使用於方法宣告的註解中,以描述該方法其中之一的參數。
<param> 標記的文字將會顯示在 IntelliSense、物件瀏覽器和程式碼 Web 註解報告中。

<returns>description</returns>

<returns> 標記應使用於方法宣告的註解來描述傳回值。


上述的標籤可以參考 MSDN建議使用的文件註解標籤 (C# 程式設計手冊)
http://msdn.microsoft.com/zh-tw/library/5ast78ax(v=VS.80).aspx

最後Project要Build前要在Properties中加入指定輸出XML 以下圖例VS2010


例子:
/// <summary>
/// Hello Example
/// </summary>
/// <remarks>
/// Copyright (C) Microsoft Corporation.  All rights reserved.
/// </remarks>

public class Hello1
{

    /// <summary>
    /// Main Function, not a method
    /// </summary>
    /// <returns>system print out, no return</returns>
    public static void Main()
    {
      
        Hello1 he1 = new Hello1();
        he1.rt_add(1, 2);
        System.Console.WriteLine("Hello, World!");
    }

    /// <summary>
    /// Add method
    /// </summary>
    /// <param name="i">1st num for adding</param>
    /// <param name="j">2nd num for adding</param>
    /// <returns>return 1st num + 2nd sum</returns>
    public int rt_add(int i,int j)
    {
        return i + j;
    }
}

產生出來的結果:
<?xml version="1.0" ?> 
<doc>
    <assembly>
<name>HelloWorld1</name> 
    </assembly>
    <members>
<member name="T:Hello1">
<summary>Hello Example</summary> 
<remarks>Copyright (C) Microsoft Corporation. All rights reserved.</remarks> 
    </member>
    <member name="M:Hello1.Main">
<summary>Main Function, not a method</summary> 
<returns>system print out, no return</returns> 
    </member>
    <member name="M:Hello1.rt_add(System.Int32,System.Int32)">
<summary>Add method</summary> 
<param name="i">1st num for adding</param> 
<param name="j">2nd num for adding</param> 
<returns>return 1st num + 2nd sum</returns> 
    </member>
    </members>
</doc> 

接著再利用XML以及exe或dll就可以在Sandcastle中產生HelpDoc (.chm)

延伸閱讀:

[Sandcastle V2.6] 使用Sandcastle Help File Builder V1.9 製作Help Doc (VS.NET)

最近因為專案要用.Net solution,利用Sandcastle製作Help Doc,由於網路上能找得的說明文章都是舊版的,介面等等有點不一樣,所以Seven在研究之後乾脆自己寫一篇。Sandcastle是一個 Microsoft提出的套件,當初好像為了取代NDOC,這個套件可以用來產生.chm或者WebBase的說明文件,有點像是Javadoc,但是由 於Sandcastle只有命令提示模式,所以需要Sandcastle Help File Builder來提供GUI介面,讓使用者可以更方便操作

需要安裝的元件如下:


Sandcastle June 2010 Release (V2.6.1062.1)
http://sandcastle.codeplex.com/

Sandcastle Help File Builder Jul 7 2010 Release (SHFB V1.9.1.0)
http://shfb.codeplex.com/
這個版本會refer上面V2.6.1062.1,如果上面Sandcastle是舊版的話就會Build Project失敗


HTML Help Workshop(for Building .chm)
http://msdn.microsoft.com/en-us/library/ms669985.aspx

.NET Framework 3.5 SP1 如果有裝VS.net應該都會有這個,裝2010的話應該會是V4.0版

MS Help 2 compiler (for building MS Help 2 .HxS) VS2005 VS2008要下載安裝SDK,如果當初安裝VS的時候有裝就不用再下載
VS2005 SDK 或者
VS2008 SDK

VS2010則在安裝時候就會一並安裝了,所以不用

如果是VS2005或者VS2008,裡面會包含舊版的Sandcastle,請檢查環境變數
DXROOT指到新安裝的目錄 ex C:\Program Files\Sandcastle
[更改環境變數需要重開機才會生效]

測試你安裝的SandCastle Help File Builder是否可正常使用

1.打開SandCastle

2.New一個Project

3.在Project Explorer中[Documentation Sources]滑鼠右鍵[Add Documentation Resource]
選取sample file中的檔案做測試,加入下面兩個檔案
C:\Program Files\Sandcastle\Examples\Sandcastle\test.dll
C:\Program Files\Sandcastle\Examples\Sandcastle\comments.xml (這個要加,不然會沒有說明)

4.按Save,接著Documentation中[Build Project]
如果順利build完沒有Error
最後要出現Build complete successfully at.....

5.[Documation]->[View Help File]應該就會看到Help File
C:\Program Files\Sandcastle\Examples\Sandcastle\test.cs對照一下


因為這個Increment有overloading,所以有兩個method以及註解




這樣就表示Sandcastle Help File Builder可正常使用

延伸閱讀:
[.Net] C#的註解方式以及XML的說明文件