C#では、実行時にソースコードにXMLコメント(VSのタグ)にアクセスする方法はありますか?
-
27-10-2019 - |
質問
Visual Studioでは、XMLコメントをメソッド/クラスに追加してドキュメントを提供できます。見る http://msdn.microsoft.com/en-us/magazine/cc302121.aspx.
Visual Studioは、これらのXMLコメントからファイルを生成し、エクスポートするため、確実にアクセスできます。
私の質問は、プログラムが実行時にXMLテキストにアクセスできるようなある種のクラスがあるかということです。 (ブルートフォースの方法はエクスポートされたファイルを解析することだと思いますが、それはきちんとした解決策ではありません)
これをやりたい理由は、より大きなプログラムのために一種のヘルパープログラムを作成しているため、XMLコメントを画面に出力したいからです。私は反射を通してプロパティ名を持っているので、いくつかのクラスに名前を戻し、XMLドキュメントを取得する方法はありますか?
すでに検索してみましたが、何も見つかりませんでした。私はそれをひどく言葉遣いにしているかもしれません。これは可能ですか?
解決
私の限り、XMLのコメントは、アセンブリバイナリファイル(.exeまたは.dll)のメタデータとして保存されていません。したがって、唯一のオプションは、Visual Studioによって生成されたXMLファイルを直接解析することです。
他のヒント
XMLのコメントは実行可能ファイルから剥奪されます - だから、彼らからXMLドキュメントを生成するための特別なコンパイラフラグがあるので、彼らは迷子になりません。
これらのXMLファイルからHTMLヘルプやその他の形式を生成するのに役立つツールがあります。
試す docsbyReflection.
// From type.
var typeDoc = DocsService.GetXmlFromType(typeof(Stub));
// From property.
var propertyInfo = typeof(Stub).GetProperty("PropertyWithDoc");
var propertyDoc = DocsService.GetXmlFromMember(propertyInfo);
// From method.
var methodInfo = typeof(Stub).GetMethod("MethodWithGenericParameter");
var methodDoc = DocsService.GetXmlFromMember(methodInfo);
// From assembly.
var assemblyDoc = DocsService.GetXmlFromAssembly(typeof(Stub).Assembly);