广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-04-03 22:13:02 次阅读 稿源:互联网
    广告

              最近在开发项目时,准备用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

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告