我正在尝试在我的WPF应用程序中执行类似的操作:
ToolboxControl ctrl = new ToolboxControl();
Assembly assembly = Assembly.LoadFile(file);
var category = new ToolboxCategory(assembly.GetName().Name);
foreach (Type t in assembly.GetTypes())
{
var wrapper = new ToolboxItemWrapper(t, t.Name);
category.Add(wrapper);
}
ctrl.Categories.Add(category);
即。为程序集中找到的每种类型添加ToolboxItemWrappers。但是最后一行抛出以下异常(见图)
http://img41.imageshack.us/img41/2261/7xvqv.png http://img41.imageshack.us/img41/2261/7xvqv.png
外部程序集的所有依赖项也在主(WPF)应用程序中引用。那么这里有什么问题以及如何解决它?
答案 0 :(得分:2)
您正在使用Assembly.LoadFile
通过反射加载程序集。但是,此方法不会自动在同一目录中查找依赖项。您应该使用Assembly.LoadFrom
。
还要考虑LoadFrom
通过Fusion,允许将加载请求重定向到另一个程序集,而LoadFile
正好加载您请求的内容。
答案 1 :(得分:1)
CustomLibrary程序集是否在文件中?如果没有,请在您的应用程序中挂钩此事件AppDomain.CurrentDomain.AssemblyResolve,并加载filePath上的程序集引用的任何其他程序集。如果CustomLibrary或其他dll不在GAC中,则是必需的。
答案 2 :(得分:0)
确保在GAC中安装“CustomLisbrary”。此外,您可能想要创建design.dll和VisualStudio.design.dll。