对NDoc支持.net2.0的异常分析及解决
点击次数:39 次 发布日期:2008-11-26 11:53:05 作者:源代码网
|
源代码网推荐 下载源程序,用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 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
