首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#反射技术有关问题,加载的DLL中引用其他DLL无法正常加载

2012-08-15 
C#反射技术问题,加载的DLL中引用其他DLL无法正常加载下面是反射代码C# codeAssembly _Assemblynullstrin

C#反射技术问题,加载的DLL中引用其他DLL无法正常加载
下面是反射代码

C# code
            Assembly _Assembly=null;            string WinPath = Path.Combine(Application.StartupPath, "DLL");                _Assembly=Assembly.LoadFile(WinPath+"\\frmRight.dll");                Type _Type = _Assembly.GetType("frmRight.frmRight");                Form frm = (Form)Activator.CreateInstance(_Type);                frm.MdiParent = this;                frm.MaximizeBox = false;                frm.MinimizeBox = false;                frm.Show();                frm.WindowState = FormWindowState.Maximized;


很简单的反射代码,位的就是加载一个窗体dll,然后实例化对象,将他作为主窗体的一个MDI子窗体。
但是在这个dll中,引用了一个名为SysConfig.dll,导致在加载的时候,IDE会提示一个错误

未能加载文件或程序集“SysConfig, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。

我将dll引用到的其他自己写的dll放到同一个目录下面,依然会出这个错误!请教下如何解决这个问题?

[解决办法]
string path=AssemblyName;//项目的Assembly选项名称
string name=strName; //类的名字
Form fm=(Form)Assembly.Load(path).CreateInstance(name);
版本和DLL路径
[解决办法]
探讨
string path=AssemblyName;//项目的Assembly选项名称
string name=strName; //类的名字
Form fm=(Form)Assembly.Load(path).CreateInstance(name);
版本和DLL路径

[解决办法]
需要把相关依赖项同时放入程序能找的到的地方,比如bin,比如exe同级目录,比如GAC
[解决办法]
放在同一个目录下好了~
[解决办法]
更改项目属性-》生成——》输出路径
这样,项目生成的时候就可以直接把dll生成到你指定的目录了
还有就是,你可以把dll放到一个解决方案下的文件夹中,作为一个ShareBin
这样项目生成引用的时候就会直接从ShareBin中找
[解决办法]
问题应该出现在你的frmRight.dll对SysConfig.dll引用时。
看看frmRight引用dll是的路径是否是相对dll本身,还是相对exe的。

热点排行