だらだらやるよ。 このページをアンテナに追加 RSSフィード

 

2008-04-27

VisualStudioのアドインからクラスを生成

| VisualStudioのアドインからクラスを生成 - だらだらやるよ。 を含むブックマーク VisualStudioのアドインからクラスを生成 - だらだらやるよ。 のブックマークコメント

http://d.hatena.ne.jp/nagakura_eil/20080420/1208628908

の続き。今日は作ったクラスにメソッドを追加してみました。


まずは前回追加したTestClassのFileCodeModelのインスタンスを取得します。

FileCodeModel2 fcm = (FileCodeModel2)dir.ProjectItems.Item("TestClass.cs").FileCodeModel;

この中身は、usingやnamespace、クラス定義が入れ子になっているので、クラスを探して取得する必要があります。

本来ならオブジェクトの中身を一つずつチェックしてやる必要があるのですが

とりあえず今回はクイックウォッチで覗き見しちゃいました。

CodeClass cls = (CodeClass)fcm.CodeElements.Item(5).Children.Item(1);

これでクラスを取得することができました。

ここからはさらにメソッド等の追加をしていきます。それぞれのクラスやメソッドの詳細はMSDN

http://msdn2.microsoft.com/ja-jp/library/envdte.codeclass(VS.80).aspx

CodeFunction f = cls.AddFunction("TestFunc",vsCMFunction.vsCMFunctionFunction,vsCMTypeRef.vsCMTypeRefBool,0,vsCMAccess.vsCMAccessPublic,0);
f.AddParameter("testprm1",vsCMTypeRef.vsCMTypeRefInt,0);
f.AddParameter("testprm2",vsCMTypeRef.vsCMTypeRefString,0);

で、肝心のメソッドの中身を書きます。

TextPoint tps = f.StartPoint;
EditPoint ep = tps.CreateEditPoint();
ep.EndOfLine();
ep.Insert("\n");
ep.Insert("string t1 = \"abcdefg\";\n");
ep.Insert("string t2 = \"abcdefg\";\n");

こんな感じでごりごり書く必要があります。

で、ここまで書いて思ったのだけど、どうせメソッドの中身を全部書く必要があるのだから

クラス定義取得したところで、全部削除して文字列で書いたほうがすっきりするかなぁとか:-)

んー、でもとりあえずここまできたら作りたいものを決めてからかな

あとメンテナンスをどれだけするかによってもかわりそうだし。


一応クラスをまるっと書き直すサンプル乗せておきます。

CodeElement cls = fcm.CodeElements.Item(5).Children.Item(1);
EditPoint clsEp = cls.StartPoint.CreateEditPoint();
clsEp.Delete(cls.EndPoint);
clsEp.Insert(@"
public class Test{
	int _hoge = 0;
	public Test(int hoge){
		_hoge = hoge;
	}
	public void ShowHogeMessageBox(){
		System.Windows.Forms.MessageBox.Show(_hoge.ToString());
	}
}");

2008-04-23

Sandcastleを試してみました

| 15:57 | Sandcastleを試してみました - だらだらやるよ。 を含むブックマーク Sandcastleを試してみました - だらだらやるよ。 のブックマークコメント

ちょこちょこ詰まったけど、とりあえずHTMLヘルプファイルの生成までできました。

というわけで、C#ソースコードからAPIドキュメントを作成する方法のまとめです。

作成した環境はVisualStudio2005です。

まずSandcastleCUIのツールなので、通常だとコマンドラインから操作する必要があります

あとはバッチファイル作ったりだとか、NAntから操作したりとかですね。

でも僕はとりあえず今のやつを簡単に出力したかったので、SandcastleGUI操作ツールである、Sandcastle Help File Builderをつかいました。


ダウンロード

HTML Help WorkshopをMSサイトからダウンロード

HTMLヘルプファイルを作成するのに必要なので、以下のリンクからダウンロードします

http://msdn2.microsoft.com/en-us/library/ms669985.aspx

ここから、Download Htmlhelp.exeのリンククリックすればOKです

SandcastleSandcastle Help File BuilderCodePlexからダウンロードする

今回使用したバージョン

Sandcastle January 2008 Release(http://www.codeplex.com/Sandcastle/Release/ProjectReleases.aspx?ReleaseId=9921)*1

Sandcastle Help File Builder 1.6.0.4 Production(http://www.codeplex.com/SHFB/Release/ProjectReleases.aspx?ReleaseId=9848)

です。


インストール

SandcastleとHelp File Builderインストーラがついてるので、そのままの設定でインストール

Help Workshopは、自己解凍形式なのでそのままデフォルトパス解凍します

これでインストールは完了です


ドキュメントを生成するための準備

クラスファイルXMLコメントを記述する

クラスの宣言や、メソッドの宣言の上の行で、C#ならスラッシュを三回入力すると雛形が生成されます

プロジェクトの設定

プロジェクト右クリックプロパティビルドタブ→出力の、XMLドキュメントファイルにチェックを入れます

ビルド

この状態でビルドすると、出力ファイルの隣に同じ名前のxmlファイルが出力されます。


HTMLヘルプファイルの出力

Sandcastle Help File Builderを起動する

右側にあるAddボタンを押して、dll,exe,xml何れかのファイルを追加します。dllを追加するとxml自動的に読み込まれるようです。

そして、このままだと日本語が表示できないので、言語プロパティは変更しておきます

Help FileのLanguageを日本語(日本)に変更すればいいだけです。

あとはビルドボタンを押して終了

PathsのOutputPathに入力した場所にヘルプ形式のファイルが出力されます。


他にも色々できそうですが、とりあえず今日はここまでで終了。

誰か全部和訳してたりしませんかね。。。

*1:最初MSダウンロードセンターへのリンクを見つけて、そちらから落としたのですがHelp File Builderで動かなかったので、CodePlexからダウンロードしました

2008-04-22

APIドキュメント

| 20:56 | APIドキュメント - だらだらやるよ。 を含むブックマーク APIドキュメント - だらだらやるよ。 のブックマークコメント

あれ、APIドキュメントHTML出力機能って2005でなくなったのかー

NDocも開発が停止してるのかな?

ふむ、Sandcastleってやつを使えばいいのか。。。

とりあえず使ってみます。

このブログは清野竜矢の個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、 私の雇用者には一切の関係はありません。