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