เมื่อพัฒนาโปรเจ็กต์เมื่อเร็ว ๆ นี้ ฉันวางแผนที่จะใช้ NDoc เพื่อสร้างเอกสารช่วยเหลือสำหรับไลบรารีของชั้นเรียน ฉันดาวน์โหลด Percyboy เวอร์ชันภาษาจีน 1.3 เอกสารระบุว่ารองรับ .net2.0 อย่างไรก็ตาม ขณะใช้งาน ฉันพบว่ามีข้อยกเว้นเกิดขึ้นเมื่อใช้ NDoc เพื่อสร้างโปรเจ็กต์ NDoc ใหม่จากโซลูชัน และเอกสารวิธีใช้ไม่สามารถทำได้ ถูกสร้างขึ้นได้สำเร็จ
ดาวน์โหลดโปรแกรมต้นทาง ใช้การแปลง vs.net2005 เพื่อเปิดโซลูชัน ndoc สำหรับการดีบัก แก้ไขจุดบกพร่อง และส่งผ่านการแก้ไขจุดบกพร่องที่เกี่ยวข้องจะถูกบันทึกไว้ดังต่อไปนี้ หากคุณต้องการใช้ NDoc เพื่อสร้างไฟล์วิธีใช้ของ แอสเซมบลีที่สร้างโดย vs.net สามารถจัดการได้ตามลำดับ
1. หากโครงการในโซลูชันอยู่ในไดเร็กทอรีที่มีชื่อภาษาจีน จะไม่สามารถจัดการข้อยกเว้นที่เกิดขึ้นได้ เหตุผลก็คือ เมื่อ ndoc แยกวิเคราะห์ไฟล์โซลูชัน จะใช้การเข้ารหัส UTF เพื่อเปิดไฟล์โซลูชัน ส่งผลให้อักขระภาษาจีนไม่ได้รับการประมวลผลอย่างถูกต้อง วิธีแก้ไข: เปิดไฟล์โซลูชันภายใต้โปรเจ็กต์ gui ค้นหาวิธีการอ่าน และใช้ (reader=new StreamReader(path)) เพื่อเปิดไฟล์โดยใช้ (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 ค้นหา GetConfiguratin (string configName) และเปลี่ยนรหัสต่อไปนี้:
ถ้า (_ProjectDocument.FirstChild.Name == "โครงการ")
-
nodes = _ProjectNavigator.Select(string.Format("VS2005:Project/VS2005:PropertyGroup[@Condition=" '$(การกำหนดค่า)|$(แพลตฟอร์ม)' == '{0}|AnyCPU' "]", configName ), _โครงการชื่อสเปซผู้จัดการ);
-
อื่น
-
nodes = _ProjectNavigator.Select(String.Format("/VisualStudioProject/CSHARP/Build/Settings/Config[@Name='{0}']", configName));
-
แทนที่ด้วย:
nodes = _ProjectNavigator.Select(string.Format("VS2005:Project/VS2005:PropertyGroup[@Condition=" '$(การกำหนดค่า)|$(แพลตฟอร์ม)' == '{0}|AnyCPU' "]", configName ), _ProjectNamespaceManager);
หลังจากดำเนินการประมวลผลข้างต้นและผ่านการคอมไพล์แล้ว การใช้ฟังก์ชันของ ndoc เพื่อสร้างโปรเจ็กต์ ndoc ใหม่จากโซลูชัน .net จะสามารถประมวลผลได้ตามปกติ แต่ฉันไม่รู้ว่าการประมวลผลนี้จะมีผลกระทบเชิงลบใด ๆ หรือไม่ โซลูชันที่สร้างโดยเวอร์ชันก่อนปี 2548 อย่างไรก็ตาม ผลกระทบ ระยะเวลาการเปิดตัวในปี 2548 นั้นไม่สั้นนัก และโครงการส่วนใหญ่ควรถูกย้ายไปยังปี 2548 ดังนั้นผลกระทบจึงไม่ควรมีนัยสำคัญ
http://www.cnblogs.com/yxy21969/archive/2006/11/28/575257.html