我有一个场景,我的客户端是WPF
应用程序让我们说W
,有3个程序集说A
,B
,C
这些是不要暴露给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
。
有什么想法吗?
答案 0 :(得分:1)
我怀疑在构建解决方案时文件没有被复制到AppDomain.CurrentDomain.BaseDirectory
。如果没有引用,则需要手动确保将所需的DLL复制到正确的位置。
请参阅上面的BasconSah评论以获取建议。