如何在另一个引用的程序集中加载引用的程序集?

时间:2013-12-11 13:37:12

标签: c# .net reflection .net-assembly

我有一个场景,我的客户端是WPF应用程序让我们说W,有3个程序集说ABC这些是不要暴露给W,因此3个程序集在具体工厂中引用,例如F,它创建所需的实例并提供给W

我在F中使用反射来生成3个对象。

以下是代码

return (IClass)Activator.CreateInstance(Assembly.Load("A").GetType("A.AClass"), 
BindingFlags.NonPublic | BindingFlags.Instance, null, null, null);

如果我在A中引用W,但在System.IO.FileNotFound Exception中引用A时不起作用(F),则代码有效(我交叉已检查Assembly.GetExecutingAssembly().GetReferencedAssemblies()并且未加载A。)

我读到如果不需要,Assembly可能无法加载。但是我的WPF客户端如何加载程序集。如果这是预期的行为,我会找到当前的Directory路径并向其添加A.dll。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我怀疑在构建解决方案时文件没有被复制到AppDomain.CurrentDomain.BaseDirectory。如果没有引用,则需要手动确保将所需的DLL复制到正确的位置。

请参阅上面的BasconSah评论以获取建议。