2

我试图在我的 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) 应用程序中引用。那么这里出了什么问题以及如何解决呢?

4

3 回答 3

2

您正在使用Assembly.LoadFile通过反射加载程序集。但是,此方法不会自动在同一目录中查找依赖项。你应该使用Assembly.LoadFrom.

还要考虑LoadFrom到通过 Fusion 允许将加载请求重定向到另一个程序集,同时LoadFile准确加载您请求的内容。

于 2011-01-04T15:02:35.843 回答
1

文件中是否有 CustomLibrary 程序集?如果没有,请在您的应用程序中挂钩此事件 AppDomain.CurrentDomain.AssemblyResolve,并加载 filePath 处的程序集引用的任何其他程序集。如果 CustomLibrary 或其他 dll 不在 GAC 中,则它是必需的。

于 2011-01-04T19:14:40.787 回答
0

确保在 GAC 中安装了“CustomLisbrary”。此外,您可能需要创建 design.dll 和 VisualStudio.design.dll。

于 2011-01-04T18:02:45.277 回答