2009-12-22 4 views
1

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

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

Любые идеи здесь?

Спасибо,

Matt

ответ

0

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

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

+0

Thanks Reed. Когда вы говорите «locatable», что именно это означает? В том же месте, что и другие двоичные файлы? Для GeckoFX и WebKit.NET существует много многих двоичных файлов, поскольку они зависят от механизмов выполнения для этих браузеров. –

+0

Windows имеет четко определенный способ поиска DLL. Он должен найти сборку (GeckoFX.dll или WebKit.NET.dll), а также все исполняемые файлы. См .: http://msdn.microsoft.com/en-us/library/7d83bc18(VS.80).aspx –

2

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

0

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

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

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