Как я могу использовать WebKit.NET или GeckoFX в приложении .NET WinForms с динамически загружаемыми сборками?

Я работаю над приложением .NET WinForms, которое загружает формы и другие элементы пользовательского интерфейса из отдельных сборок во время выполнения. Это хорошо работает.

Однако одна из сборок, которую я загружаю, имеет форму, в которой используется либо GeckoFX, либо WebKit.NET для встраивания элемента управления веб-браузера. Когда я пытаюсь загрузить эту сборку с помощью Assembly.CreateInstance (), я получаю исключение о том, что он не может найти сборку, которую я пытаюсь загрузить, даже если она есть. Все работает нормально, и отдельное тестовое приложение с нормальной сборкой / ссылкой отлично работает с этими элементами управления.

Есть идеи здесь?

Спасибо,

Мэтт


person Matt Culbreth    schedule 22.12.2009    source источник


Ответы (3)


Вы можете попробовать использовать Fusion Log Viewer, чтобы найдите, какая зависимость не загружается. Предполагается, что зависимость - это сборка .NET, которая не загружается. Если сборка отсутствует через P / Invoke, все будет сложнее.

person GrayWizardx    schedule 22.12.2009

Убедитесь, что можно найти все зависимости, а также сборку, которую вы пытаетесь загрузить.

Если вы это сделаете, вы сможете нормально использовать любую сборку.

person Reed Copsey    schedule 22.12.2009
comment
Спасибо, Рид. Когда вы говорите «местный», что именно это означает? В том же месте, что и другие двоичные файлы? Для GeckoFX и WebKit.NET существует множество двоичных файлов, поскольку они зависят от механизмов выполнения для этих браузеров. - person Matt Culbreth; 23.12.2009
comment
В Windows есть четко определенный способ поиска DLL. Ему необходимо найти сборку (GeckoFX.dll или WebKit.NET.dll), а также все исполняемые двоичные файлы. См .: msdn.microsoft.com/en-us/library /7d83bc18(VS.80).aspx - person Reed Copsey; 23.12.2009

Это может произойти в 2 случаях.

  1. Для geckofx в вашей системе нет xulrunner, вам нужно добавить эту строку в свой код для загрузки xulrunner - Skybound.Gecko.Xpcom.Initialize (@ "путь к xulrunner");

  2. Если вы работаете на 64-битной машине, вы получите исключение, вам нужно собрать его для 32-битной версии.

person Sumit Ghosh    schedule 26.08.2010