2013-12-11 88 views
0

我遇到的情况,我的客户是WPF应用让我们说W,有3个总成说ABC未暴露于W,因此3个组件在一个具体的工厂引用,说F这创建所需的实例并提供给W如何在另一个引用程序集中加载引用程序集?

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

下面是代码,如果我在W引用A

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

代码工作,但是当AF被引用不起作用(System.IO.FileNotFound Exception)(我十字Assembly.GetExecutingAssembly().GetReferencedAssemblies()检查和A未装载)。

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

+0

您是否尝试过使用['AppDomain.AssemblyResolve'](http://msdn.microsoft.com/pl-pl/library/system.appdomain.assemblyresolve(v = vs.110).aspx)处理程序? –

+0

这不是一个后备技术,我的意思是我能够实际获得原始所需的程序集? –

+0

据我所知,你知道这需要大会,所以你可以通过'Assembly.LoadFrom'提供它 –

回答

1

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

看到BasconSah评论上面的建议。

相关问题