c# Подгрузка dll

222
04 мая 2017, 11:17

Добрый день, возникла такая проблема: Я использую dll в проекте C#. Но когда я пытаюсь запустить exe, он не запускается ( участок кода, который использует dll в самом низу ). Я помню, что в cli c++ программа запускалась без dll и выдавало ошибку только тогда, когда программа отрабатывала код, который шел до функций из dll. Вопрос такой, как сделать отработку кода который находится до вызова функций из dll.

Answer 1

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

Дело в том, что текущая версия .NET производит подгрузку зависимостей в момент, когда JIT-компилятор компилирует метод. В текущей версии единицей JIT-компиляции является один метод. Это значит, что перед началом первого выполнения метода, ссылающегося на недоступные функции, будет продетектировано отсутствие DLL и выброшено исключение. Если вы никогда не будете вызывать этот метод (например, проверите наличие DLL перед вызовом), исключение выброшено не будет.

Заметьте, что полагаться на это поведение не стоит. Оно не гарантировано документацией, и может измениться в будущем без предупреждения. Например, JIT-компилятор может вполне заинлайнить «опасный» метод в точку вызова, имеет полное право.

Поэтому правильным решением является либо правильно инсталлировать ваше приложение так, чтобы нужные сборки были всегда доступны, либо грузить сборку динамически через Assembly.Load и заводить подобие плагинной системы.

READ ALSO
Библиотека для музыкального плеера [требует правки]

Библиотека для музыкального плеера [требует правки]

Подскажите хорошую библиотеку для создания музыкального плеера и как установить эту библиотеку

206
RSA шифрование на C#

RSA шифрование на C#

Хочу сделать простую шифровку алгоритмом RSA встроенными вNet средствами

724
Преобразование JSON в XML

Преобразование JSON в XML

ЗдравствуйтеЕсть сайт http://www

461