2013-07-31 2 views
0

Я делаю приложение, которое строит отчет в LibreOffice Calc, используя библиотеки LO SDK от версии 3.6. Эти DLL - .NET 2.0, afaik, а мое приложение - .NET 3.5, поэтому он отлично работает.Приложения, пытающиеся загрузить dll из своей папки

Но когда я запускаю приложение на ПК, где установлен LO 4.0, похоже, что он пытается загрузить DLL-файлы не из папки приложения (где правильные DLL-файлы скопированы), а откуда-то на главном ПК, поскольку он выдает исключение " Эта сборка построена с использованием среды выполнения, более новой, чем текущая загруженная среда выполнения, и не может быть загружена "при загрузке cli_uno.dll (когда я пытаюсь запустить отчет). Похоже, DLL DL 4 SDK собраны для .NET 4.0?

Ну, это не вариант для восстановления приложения для .NET 4.0 (так как он будет повторяться, когда появятся новые DLL-файлы .NET 5.0).

Есть ли способ загрузить приложения DLL-файлы из своей собственной папки?

UDPATE Это приложение cli_uno.dll действительно не включено в мое приложение. Он находится в папке установки LO и явно вызывается этими файлами cli _ *. Dll, которые я включил в свое приложение. Но я не могу контролировать, какая версия LO будет установлена! Он просто выходит из-под контроля любыми настройками конфигурации. Это просто неправильно, когда приложение работает нормально с LO 3.6, но перестает работать после обновления до LO 4.0. Серьезно, я сделал приложения в древнем Delphi 7, используя древние библиотеки, чтобы подключиться к MS Excel (который был создан, когда версии XP/2000 были действительными), и отлично работает с версией по меньшей мере на 2007 год.

Не предполагается ли использование интерфейсов для приложений разных версий и даже разных платформ, чтобы взаимодействовать, обмениваться данными между ними? Может быть, я использую LO SDK совершенно неправильно?

+0

Возможный дубликат? http://stackoverflow.com/questions/267693/how-can-i-force-net-to-use-a-local-copy-of-an-assembly-thats-in-the-gac –

+0

Похоже, я Посмотрим, спасибо. – yaapelsinko

+0

Как я вижу сейчас, он не контролирует настройки версии сборки приложения - это «cli_uno.dll» не является частью моего приложения, а LO установка, и он вызвал мое приложение. Я обновляю вопрос. – yaapelsinko

ответ

0

Подписано ли ваше местное собрание? Если вы можете удалить подписку на dll, содержащуюся в вашей папке, она всегда загружается из этой папки. Как только он подписан, он сначала смотрит в GAC.

+0

На самом деле ни один из моих компонентов сборки приложения не подписан. Но DLL LO SDK должно быть подписано. Сомневаюсь, что я могу удалить знак из него. – yaapelsinko

+0

Очевидно, что вы cannot.But может быть, вы можете использовать Assembly.Load() во время запуска приложения, загружая DLL-файлы, необходимые вам в память, вместо того, чтобы ждать, пока инфраструктура сканирует DLL-файлы. Не совсем уверен. – Prash

+0

Как я вижу сейчас, он не контролирует настройки версии сборки приложения - это «cli_uno.dll» не является частью моего приложения, а LO-установка, и оно вызвано моим приложением. Я обновляю вопрос. – yaapelsinko

Смежные вопросы