新增模块没有加载 | 左侧的导航菜单栏没显示


*** 解决问题前,请先确定debug目录下是否生成了模块的dll文件 ***
跳到最下面的第7步直接跟踪代码,也有可能是加载无效的模块报错
原因汇总及解决方案:
二、AssemblyInfo.cs文件没有添加AssemblyModuleEntry特性
若配置为从资料表加载模块,要检查sys_ModuleFileList表FileName字段的文件名是否正确:

扫一扫加微信

一、菜单标题不一致
检查模块主菜单的标题命名与模块枚举类型定义的命名是否一致,模块主窗体的构造器添加一行代码:
C# Code:
menuMainBaseData.Text = GTMES.Interfaces.ModuleNames.DataDictionary;
menuMainBaseData.Text = GTMES.Interfaces.ModuleNames.DataDictionary;
模块主窗体的构造器代码参考:
C# Code:
public frmModuleMain()
{
InitializeComponent();
_ModuleID = (int)GTMES.Interfaces.ModuleID.DataDictionary; //设置模块编号
_ModuleName = GTMES.Interfaces.ModuleNames.DataDictionary;//设置模块名称
menuMainBaseData.Text = GTMES.Interfaces.ModuleNames.DataDictionary; //与AssemblyModuleEntry.ModuleName定义相同
this.MainMenuStrip = this.menuStripMain;
this.SetMenuButtonRelations();
this.SetMenuTag();
this.SetLanguage();
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
public frmModuleMain()
{
InitializeComponent();
_ModuleID = (int)GTMES.Interfaces.ModuleID.DataDictionary; //设置模块编号
_ModuleName = GTMES.Interfaces.ModuleNames.DataDictionary;//设置模块名称
menuMainBaseData.Text = GTMES.Interfaces.ModuleNames.DataDictionary; //与AssemblyModuleEntry.ModuleName定义相同
this.MainMenuStrip = this.menuStripMain;
this.SetMenuButtonRelations();
this.SetMenuTag();
this.SetLanguage();
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
二、AssemblyInfo.cs文件没有添加AssemblyModuleEntry特性
检查Properties\AssemblyInfo.cs文件内添加是否添加AssemblyModuleEntry特性,检查模块主窗体的命名空间是否正确。
三、Debug输出目录不一致
检查debug输出目录与主程序EXE输出路径是否在同一个debug目录,确定编译的DLL文件在debug目录。
开发框架默认输出目录是:..\debug
四、.NET程序集版本不一致
检查新增模块的.NET程序集体版本是否与主程序版本一致。若主程序预设是Framework4.0, 而新模块是4.5会导致加载失败。
五、生成目标平台必须一致
若生成目标平台改为x86, 检查与主程序是否一致。
六、检查Globals.cs文件的DEF_SYS_MODULE常量
C# Code:
//请将常量名改为您自己项目的名称,比如:YourProject*.DLL
public static string DEF_SYS_MODULE = "CSFramework*.DLL";//搜索开发框架的业务模块,文件名匹配
//来源:C/S框架网 | www.csframework.com | QQ:23404761
public static string DEF_SYS_MODULE = "CSFramework*.DLL";//搜索开发框架的业务模块,文件名匹配
//来源:C/S框架网 | www.csframework.com | QQ:23404761
若配置为从资料表加载模块,要检查sys_ModuleFileList表FileName字段的文件名是否正确:
七、还没解决?frmMain.InitUserInterface方法设断点跟踪
C# Code:
splash.UpdateMessage(LanLib.Get("正在加载模块..."));
_ModuleManager = new ModuleManager(this, _ModuleContainer.xtraTabControl1);//创建模块管理器
_ModuleManager.LoadModules(splash, _ModuleMenus, Globals.DEF_SYS_MODULE); //加载可用模块
LogUserOperate.Write("正在加载模块 OK.");
//来源:C/S框架网 | www.csframework.com | QQ:23404761
_ModuleManager = new ModuleManager(this, _ModuleContainer.xtraTabControl1);//创建模块管理器
_ModuleManager.LoadModules(splash, _ModuleMenus, Globals.DEF_SYS_MODULE); //加载可用模块
LogUserOperate.Write("正在加载模块 OK.");
//来源:C/S框架网 | www.csframework.com | QQ:23404761
跟踪_ModuleManager.LoadModules里面的代码,找到错误原因。
参考《C#.Net CS快速开发框架- 新增业务模块(视频下载)》
http://www.csframework.com/archive/6/arc-6-20110412-1325.htm

扫一扫加微信


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网