c# - 如何将外部程序集的类型添加到工具箱控件? (WPF)

标签 c# .net wpf assemblies toolbox

我正在尝试在我的 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) 应用程序中引用。那么这里出了什么问题以及如何修复它?

最佳答案

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

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

关于c# - 如何将外部程序集的类型添加到工具箱控件? (WPF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4594968/

相关文章:

.net - 将 .NET 项目编译为独立 native 二进制文件的可用工具有哪些?

c# - ASP MVC Core 和运行时生成的程序集

c# - 线程逐渐增加处理器使用率

c# - 在 Google 日历中设置事件颜色

c# - 分组一个列表<object[]>

c# - 使用 MSBuild,我可以签署一个在文件中指定密码的应用程序吗?

c# - 如何在winform应用程序中显示WPF窗口

Wpf 视口(viewport)坐标

WPF ObjectDataProvider 参数

c# - 如何将数据传递给 _Layout.cshtml