论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Asp.net教程
Tag:静态页面,treeview,gridview,repeater,dataset,sqldatareader,ado.net,上传,三层,ajax,xml,留言本,新闻发布,商城,注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,触发器,socket,form认证,登录,视频教程

对NDoc支持.net2.0的异常分析及解决

文章类别:Asp.net | 发表日期:2008-10-5 22:07:37

        最近在开发项目时,准备用NDoc来产生类库的帮助文档。下载了破宝(percyboy)汉化的1.3版本,看文档说是支持.net2.0,但在使用时,发现应用NDoc来从解决方案新建NDoc项目时出现异常,不能成功地生成帮助文档。
        下载源程序,用vs.net2005转换打开ndoc的解决方案进行调试,修改bug,调试通过,特记录相关的bug及解决方法如下,如想用NDoc来产生vs.net生成的程序集的帮助文件时,可照此处理。
         1、如果解决方案中的项目处于一个中文名字的目录中时,不能处理抛出异常。原因在于ndoc在解析解决方案文件时,使用的utf编码来打开解决方案文件,导致中文不能正确处理。解决方法:打开gui项目下的solution文件,定位到read方法,将打开文件的代码using (reader=new StreamReader(path))用using(reader=new StreamReader(path,System.Text.Encoding.GetEncoding(0)))代替。StreamReader的具体使用方法可以参考msdn。
         2、解析项目文件时,由vs.net2005生成的项目文件本质上是xml文件,但有的是<?xml version="1.0" encoding="utf-8"?>标记,有的项目文件没有,原因不详,也没有时间去分析具体原因,如那位知道请一定告诉我。这样导致在处理项目文件时需要分情况处理,我分析ndoc原来的思路也是这样的,可能2005以前的版本这两种项目文件的格式不一样,所以ndoc在解析项目文件时分情况进行了处理。但用vs.net2005生成的项目文件,虽然也有这样的区别,但格式是一样的,并不需要分情况处理。解决方法:打开gui项目下的project文件,定位到GetConfiguratin(string configName),将以下代码:   
        if (_ProjectDocument.FirstChild.Name == "Project")
            {
                nodes = _ProjectNavigator.Select(string.Format("VS2005:Project/VS2005:PropertyGroup[@Condition=\" '$(Configuration)|$(Platform)' == '{0}|AnyCPU' \"]", configName), _ProjectNamespaceManager);
            }
            else
            {
                nodes = _ProjectNavigator.Select(String.Format("/VisualStudioProject/CSHARP/Build/Settings/Config[@Name='{0}']", configName));
            }
     替换为:
            nodes = _ProjectNavigator.Select(string.Format("VS2005:Project/VS2005:PropertyGroup[@Condition=\" '$(Configuration)|$(Platform)' == '{0}|AnyCPU' \"]", configName), _ProjectNamespaceManager);

        作了如上处理后,编译通过后,用ndoc的从.net解决方案新建ndoc项目功能时能够正常处理,但不知这样处理后是否会对2005以前的版本产生的解决方案有不良影响,不过,2005推出时间也不短了,大部分的项目应该都迁移到2005下了,所以影响应该不大。

http://www.cnblogs.com/yxy21969/archive/2006/11/28/575257.html

视频教程列表
文章教程搜索
 
Asp.net推荐教程
Asp.net热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058