程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 對NDoc支持.net2.0的異常分析及解決

對NDoc支持.net2.0的異常分析及解決

編輯:.NET實例教程
 最近在開發項目時,准備用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下了,所以影響應該不大。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved