Я пытаюсь вызвать функцию C ++ внутри DLL из моего приложения C #. DLL из программы, которая будет установлена на компьютере пользователя, поэтому DLL должна быть загружена во время выполнения. Я получаю следующее исключение:
Помощник по управляемой отладке ‘LoadFromContext’ обнаружил проблему
…Дополнительная информация: сборка с именем ‘Client.API’ была загружена
from (путь к файлу dll) с использованием контекста LoadFrom. Использование этого
контекст может привести к неожиданному поведению для сериализации, приведения
и разрешение зависимостей. Почти во всех случаях рекомендуется
контекст LoadFrom следует избегать. Это можно сделать, установив
сборки в глобальном кэше сборок или в базе приложений
каталог и использование Assembly.Load при явной загрузке сборок.
Я не очень понимаю, что означает эта ошибка. И я не знаю, как это исправить в моей ситуации. Я искал в Интернете, но я не нашел много полезной информации.
Это код, с которым я работаю:
[DllImport("dmawin.dll")]
private static extern int LoginDialog(IntPtr pWndParent, string pStrTitle,
uint pFlags, [MarshalAs(UnmanagedType.LPWStr)] ref StringBuilder pStrDataSource,
int pDSLength, string pStrUsername, string pStrPassword, string pStrSchema);private bool Login(string pDataSource, string pLoginName,
string pPassword, string pScheme)
{
private const int MAX_DB_NAME = 256;
IntPtr handle = ParentForm.Handle;
var sb = new StringBuilder(pDataSource, MAX_DB_NAME);
//function call
LoginDialog(handle, null, flags, ref sb, MAX_DB_NAME, pLoginName,
pPassword, pScheme);
}
Исправьте настройки отладчика, это предупреждение должно быть отключено от. Этот MDA обычно предназначен только для предупреждения программиста, когда он не собирался использовать Assembly.LoadFrom (). Так как вы не можете ничего с этим поделать, кроме своего кода, у вас очень мало причин обращать на это внимание.
В VS2015 используйте «Отладка»> «Windows»> «Настройки исключений». В более ранних версиях используйте Debug> Exceptions. Разверните «Ассистенты управляемой отладки» и снимите флажок «LoadFromContext». Если по какой-то причине у вас все отмечено, то вы хотите сбросить все настройки, дважды щелкните по верхнему узлу
FWIW, используемая вами библиотека уже написана на языке .NET. С большой вероятностью вы захотите поговорить с автором и спросить, поддерживает ли он управляемый интерфейс, чтобы вам не приходилось использовать [DllImport].
То, что вы видите, не является исключением. Это просто предупреждение отладчика. Если вы запустите приложение без отладки, оно вообще не появится. Внутри Visual Studio в настройках обработки исключений отладчика вы можете отключить эти типы предупреждений.