以下方法只适合 主项目 和 Controller 项目分离的情况
要生成xml,在Controller 相关项目 上属性 中选择(项目上右键,属性,生成,勾选“xml文档文件”);
其次要将生成 的 xml文件 拷贝到 webapi 主目录内。推荐用生成后事件 脚本拷贝;
在主项目中 的 HelpPageConfig.cs 文件中读取相关 的xml文件;
如果模型项目和 主项目 和 Controller 项目分离 可能要 组合xml才行;
继续探索...
探索完成,继续
将model 生成的 xml文档,中<assembly> 和 <members> 内所有内容拷贝到 主目录下的说明文档xml文件(就是HelpPageConfig.cs 中要读取的那个xml)的doc标签内部即可;
这样就实现了 【主项目】 和 【Controller 项目】【model项目】分离 的情况下 全部说明文档 中文化。
好像有那么一点点小问题 返回值说明没出现,或者只出现了一次,第二次就不出现了。
要处理 help 的读取代码才能解决。以后研究。
问题在 ResParameters.cshtml 文件中
系统通过如下语句查找 类型名字
dic.Add(t.FullName.ToLower() + "." + item.Name.ToLower(),null);
但是FullName 会带上[[模块信息]] 而 xml 中对应的名字是 完整类型+参数名 ,但不包括模块信息。
所以键值对查找找不到相关信息。所以没有写出返回值数据。
另外加载一次后 就无法加载时因为 再次加载时 缓存中已经有了该数据,出错后后续处理被直接跳过了。
var fullName = t.FullName.ToLower() + "." + item.Name.ToLower();
var middleName = t.FullName.Substring(0, t.FullName.IndexOf("[["));
var simpleName = middleName.ToLower() + "." + item.Name.ToLower();定义简单名称,这个名称在xml说明文档中使用
try{
if (dic.ContainsKey(fullName) == false)// 检查有没有,有了就不加入了,防止说明只出现一次
dic.Add(fullName, null);
}
catch
{
continue;
}
KeyValuePair<string, string> keyPair = Slwy.TravelWebAPI.UI.Areas.HelpPage.XMLValuePairs.document.FirstOrDefault(p => p.Key.ToLower().Contains(fullName));
KeyValuePair<string, string> keyPair = Slwy.TravelWebAPI.UI.Areas.HelpPage.XMLValuePairs.document.FirstOrDefault(p => p.Key.ToLower().Contains(simpleName));这里用简单名称查找,才能找到对应的文档