社区
C#
帖子详情
麻烦教我一下这个简单问题,100分相送,真的很简单!
zipperhu
2003-03-10 10:27:49
有没有什么软件可以将C#的xml comment(已编译生成.xml格式)自动分析生成相应的.html, .hhc, .hhk文件?
然后就可以直接用far或hhworkshop等直接生成.chm。
我觉得微软应该提供此类工具,可就是找不到,唉...
注意:不是vs.net工具->生成注释web页!
...全文
24
3
打赏
收藏
麻烦教我一下这个简单问题,100分相送,真的很简单!
有没有什么软件可以将C#的xml comment(已编译生成.xml格式)自动分析生成相应的.html, .hhc, .hhk文件? 然后就可以直接用far或hhworkshop等直接生成.chm。 我觉得微软应该提供此类工具,可就是找不到,唉... 注意:不是vs.net工具->生成注释web页!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zipperhu
2003-03-10
打赏
举报
回复
谢谢您了,100分全给你了,因为只有您一个人回答。
我已经找到一个“NDoc”可以生成要求的文档
glboy
2003-03-10
打赏
举报
回复
在Csharp当中使用注释(转自www.ccw.com.cn的开心就好斑竹的帖子)
由于软件的复杂性以及不可预知性,所以在程序当中添加注释是一个非常明智的选择,尤其是在团队开发当中,可以使自己的程序更加适于阅读。
我们知道Csharp(即C#)作为C++语言的一种扩展版本,继承了C++的注释方法,即以“//”针对一行的注释方法,或者以“/* */”跨行的注释方法。可以很方便所有开发人员进行使用。
例一:
/*
Author:开心就好
Version:1.0
Date:: 2001/6/19
Description:构建一个Test类
*/
public class test{
//本类仅有一个公共方法
public static void Main(){
System.Console.WriteLine (“Hello,world”);//输出Hello,World语句;
}
}
说明:在这段简单的程序当中,我们使用了两种简单的注释方法,首先,我们知道“/**/”方法适合跨行注释。一般来说,我们在一个程序体的首部都会使用这种方法对整个文件作一个简单的描述。
而以//开始的注释语句其有效范围仅从该符号至该行末尾,//符号既可以放置在行首,亦可以在这一行的任意位置。
同时,我们要注意,在可能的情况下请不要使用嵌套注释语句,虽然有些编译器可以自动处理这些嵌套的注释语句,但作为一个良好的程序员,在其编程中应该养成一个良好的习惯,尽量避免这种情况的发生。
例二:
/*
Author:开心就好
Version: 1.1
Date: 2001/6/19
Description:对Test类进行合理的扩展
*/
public class test{
public static void Main(){
/*
//这是一个嵌套注释,是一种不合理的状态
*/
System.Console.WriteLine (“Hello,World”);
}
通过以上两组例子,我们现在已经对注释有了基本的了解,但是如果仅是这些语句,可能就不根本不值得进行这样大篇幅的介绍,所以现在我们开始引入Csharp当中专用的一种注释方法――“///”,并且对这种注释方法作详细的介绍。
Csharp引用的这种注释方法,原则上与原有的“//”相兼容,也是一种单行注释方法,但由于其新增加了一些注释语句,并且在VS.NET当中进行了相应的集成,使其功能更加强大。
例三:
/*
Author:开心就好
Version:1.2
Date:2001/6/18
Description:构建一个Test类
*/
///<Summary>一个Test类</Summary>
public class test{
///<Summary>入口方法</Summary>
public static void Mial(){
System.Console.WriteLine(“Hello,World”);
}
}
我们可以看看与前面的注释有哪方面的不同。首先我们注意到增加了一个<Summary>的标识符。但在这儿我们可能还没有体会到它有什么具体的用处,相反,对于一些手写代码的朋友来说,我们可能还感觉到这样去写可能还增加了一些负担,因为又要多敲入几个单词。
且慢,下面我们开始对这个程序进行编译,我们知道,Csharp的编译命令为CSC,如果大家对这个命令进行过仔细的研究的话,我们可以看到它有一个参数为/doc,那这个参数有什么用呢?
下面,我们将例三的文件存为C:\test.cs,并且使用如下的命令行进行编译:
csc /t:exe /doc:test.xml test.cs
下面我们看一下C盘根目录中,会出现一个新的XML文件,即test.xml,使用浏览器打开,其文件内容为:
<?xml version="1.0" ?>
- <doc>
- <assembly>
<name>test</name>
</assembly>
- <members>
- <member name="T:test">
<Summary>一个Test类</Summary>
</member>
- <member name="M:test.Main">
<Summary>入口方法</Summary>
</member>
</members>
</doc>
到目前为止,我们可能仍然没有看出来,这东西有什么用处。只不过多产生了一个XML文件而已。
如果在座的各位也有Java程序员,可能对此更是不屑一顾,因为在Java编译工具当中,提供了JavaDoc文件,对Java程序当中的注释进行整理,并且生成一个可读的HTML文件,可以作为一个类的说明手册。
其实CSC的DOC参数也是起类似的作用的,不过它只是生成了一个中间的XML数据文件。利用VS.NET提供的强大功能,这个XML数据文件会形成一个强大的说明文件,甚至在团队开发当中,你只要写清楚这些注释语句就可以自动产生一个详细设计文档,而不必在写完程序后自己再动手写这么一份文档。
在CSC的注释语句中,除了<Summary>标识符之外,微软还提供了其它的标识符,下面我们进行逐一的介绍:
标识符
描述及示例
应用于
<Summary>
对整体进行概要性描述
<summary>Description</summary>
类、属性(不推荐)、方法等
<para>
跟在Summary之后,对方法所涉及的入口参数进行有效的解释
<param name=username>本参数是用户的帐号</param>
方法的入口参数;
<returns>
对方法的返回值进行解释;
<returns>返回值零代表操作成功,-1代表操作不成功</returns>
方法的返回值;
<remarks>
对一些语句进行备注性描述
<remarks>本类需要调用另外一个User类相关方法</remarks>
类、方法、属性等;
<see>
在生成的文档中产生一个连接到其它描述的超链接;
<see cref=”[member]”/>
可以在其它注释标识符中加入
<seealso>
与上者的区别是本标识符显示超链接在一个文档的尾部的“See Also”区域,而前者在文档之中;
<seealso cref=”[member]”/>
不可以在其它注释标识符中加入
<value>
对一个属性进行概要性解释;
<value>这是一个public属性</value>
属性
<code>
如果需要置入一部分源代码段,可以使用本标识符将其标记出来
<code>
public int add(int a,b)
{return a+b;
}
</code>
可以在其它注释标识符中加入
<exception>
对程序中可能抛出的异常做解释;
<exception cref=”System.Exception”>抛出的异常情况</exception>
在方法当中如果有抛出异常,如“try…catch结构”时可以使用本标识符做解释
<permission>
对方法的访问权限做一些解释:
<permission cref=”System.Security.PermissionSet”>这是公共方法</permission>
方法,属性
<c>
与<code>标识符基本相同,但本标识符仅用于单行代码;
<c>return a+b;</c>
可以在其它标识符中插入使用;
<example>
举例说明,通常与<code>配套使用;
<example> 以下示例说明如何调用Add方法:
<code>
class MyClass
{
public static int Main()
{
return Add(1+2);
}
}
</code>
</example>
可以在其它标识符中插入;
<paramref>
在其它地方引用一个入口参数
<paramref cref=”a”>请注意,这是一个整型参数</paramref>
备注:本表中的方法也可以称之为成员函数(这是VC++当中惯用的名称);另外,关于<list>标识符我们在此没有做解释,有兴趣的朋友可以阅读SDK或者其它相关材料;
对于这些东西进行了解释之后,我们现在给出一个详细的示例给大家,现在让我们来看看这些标识符为我们带来的多种便利(在这儿,我假设各位手中都已经有了Visual Studio.NET)
例四:
using System;
/// <summary>
/// ClassName:SomeClass
/// Version:1.0
/// Date:2001/6/21
/// Author:开心就好
/// </summary>
/// <remarks>
/// 本类仅是一个示例教学类,不完成具体的工作
/// </remarks>
public class SomeClass
{
/// <summary>
/// 内部私有变量,存储名称</summary>
private string myName = null;
public SomeClass()
{
//
// TODO: Add Constructor Logic here
//
}
/// <summary>
/// 名称属性 </summary>
/// <value>
///本属性为只读属性,返回用户名</value>
public string Name
{
get
{
if ( myName == null )
{
throw new Exception("Name is null");
}
return myName;
}
}
/// <summary>
/// 本方法是没有进行具体构建</summary>
/// <param name="s"> 入口参数S是一个String类型</param>
/// <seealso cref="String">
///String类型的信息</seealso>
public void SomeMethod(string s)
{
}
/// <summary>
/// 本方法仍然没有进行具体构建</summary>
/// <returns>
/// 返回值始终为0.</returns>
/// <seealso cref="SomeMethod(string)">
/// 参看SomeMethod(string)方法的说明 </seealso>
public int SomeOtherMethod()
{
return 0;
}
/// <summary>
/// 该应用程序的入口
/// </summary>
/// <param name="args"> 入口参数集合</param>
public static int Main(String[] args)
{
//
// TODO: Add code to start application here
//
return 0;
}
}
下面,我们在Visual Studio.NET中将这段程序拷贝进去,然后选择Tools菜单中的“Build Comment Web Pages…”,将弹出一个对话框,我们直接点击OK之后,可以看到系统正在对这些注释进行整理,最后将出现一个Web文档。
这份Web文档,我们可以使用HTML打开,请看下图
是不是比JavaDOC产生的注释还要好一些呢?所有的注释都被Visual Studio.Net分门别类的进行了整理,可以让同一团队中其它的人员对其一目了然:)
但这种注释并不是仅是为了产生这个注释文档,更重要的是,它可以提供在编程中的智能提示的作用。
仍以上例来举例说明,下面我使用了一个新的文件,并且在这个文件当中引用了例四中定义的一些属性与方法,如下图:
我们可以从图中清楚的看到,Visual Studio.NET自动将原有的注释加入到了智能提示当中。
我们可以想象,如果你在一个团队当中参与开发,当团队中其他人员需要调用你编的一段程序时,他甚至可
glboy
2003-03-10
打赏
举报
回复
上面提到的vs.net工具->生成注释web页,是可以生成为.HTML的,至于要直接生成.chm,MS好象并没有提供这个,你只有使用工具来进行制作了。
另外下面贴篇文章给你参考,不知道你需要的是否是这个,希望能对你有帮助,转自www.ccw.com.cn
史上最
简单
的Git入门
教
程
改为指向add distributed: 3.3 工作区和暂存区 在使用Git管理版本时,经常会听到工作区和暂存区这两个概念,理解工作区和暂存区对于理解Git的很多操作十分有帮助,下面分表介绍
一下
这两个概念。 工作区 工作区即...
bat批处理
教
程_超级详细
教
程
这是一篇技术
教
程,我会用很
简单
的文字表达清楚自己的意思,你要你识字就能看懂,就能学到知识。写这篇
教
程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更
简单
,那么就让它
简单
吧!看这篇...
STM32单片机自学
教
程
然后,通过实例演示如何编写
简单
的程序,控制STM32的GPIO、定时器、串口通信等功能。最后,介绍STM32在物联网、智能家居等领域的应用案例,帮助读者拓展视野,激发创新灵感,掌握STM32开发的基本技能,为后续深入...
红米note5解锁
教
程_红米NOTE5手机忘密码了怎么办?修手机的师傅
教
给我一个
简单
方法,解锁其实很
简单
...
众所周知,随着移动互联网的快速发展,购票、支付...那么今天就
教
大家刷机的方法,让用户自己就能解决这个
问题
。温馨提示!前两种解锁的方法只适合用于安卓手机。第一种刷机时间较快,但是会删除掉手机里面储存的内...
ESP32 小智 AI 机器人入门
教
程从原理到实现(自己云端部署)
简介: 本
教
程将指导初学者使用 ESP32 微控制器开发一个
简单
的语音对话机器人“小智”。我们将介绍所需的基础原理、硬件准备、软件环境搭建,以及如何编写代码实现语音唤醒和与云端大模型的对接。通过本
教
程,即使...
C#
111,120
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章