Как добавить типы из внешней сборки в элемент управления? (WPF) - PullRequest
2 голосов
/ 04 января 2011

Я пытаюсь сделать что-то подобное в моем приложении 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) приложении.Так что здесь не так и как это исправить?

Ответы [ 3 ]

2 голосов
/ 04 января 2011

Вы используете Assembly.LoadFile для загрузки сборки через отражение. Однако этот метод не находит автоматически зависимости в том же каталоге. Вы должны использовать Assembly.LoadFrom.

Также учтите, что LoadFrom проходит через Fusion, позволяя перенаправить запрос загрузки на другую сборку, в то время как LoadFile загружает именно то, что вы запрашивали.

1 голос
/ 04 января 2011

Является ли сборка CustomLibrary в файле?Если нет, подключите это событие AppDomain.CurrentDomain.AssemblyResolve в вашем приложении и загрузите любые другие сборки, на которые ссылается сборка в filePath.Требуется, если CustomLibrary или другие библиотеки не находятся в GAC.

0 голосов
/ 04 января 2011

Убедитесь, что «CustomLisbrary» установлен в GAC.Кроме того, вы можете создать design.dll и VisualStudio.design.dll.

...