NDoc是一个非常不错的C#文档生成工具,但在使用的过程中发现在用其生成的Msdn类文档使用LangID为2052——也就是使用简体中文时,空格被?代替了,怎样解决它呢?
一个偶然的机会看到了这里http://blog.joycode.com/percyboy/archive/2003/12/26/9927.aspx有人发布了NDoc的中文版,于是进去看了看。在这里找到了问题的所在,发布者破宝说:再翻译的时候错误的使用了字符集。这给了我提示,于是将NDoc的源代码修改了一下,问题解决了。方法如下:
打开NDoc解决方案后,找到Msdn项目中的MsdnDocumenter.cs文件,将其中的函数public override void Build(Project project)中的代码(大约在170行左右)
CultureInfo ci = new CultureInfo(MyConfig.LangID);
currentFileEncoding = Encoding.GetEncoding(ci.TextInfo.ANSICodePage);
修改为
if(MyConfig.LangID==2052)
{
currentFileEncoding = Encoding.GetEncoding("utf-8");
}
else
{
CultureInfo ci = new CultureInfo(MyConfig.LangID);
currentFileEncoding = Encoding.GetEncoding(ci.TextInfo.ANSICodePage);
}
同样的方法修改Msdn2中的代码。
当然这样的修改只是为了解决问题。
NDoc可以到这里http://ndoc.sourceforge.net/下载。