Я могу воспроизвести ошибку, обнаруженную в VS 2017 15.9.8, просто:
- Создать новую (VB или C #) библиотеку управления Windows Forms
- Проверьте, что она запускается по умолчаниюПлатформа решений AnyCpu
- Создание новой платформы решений x86
- Попробуйте запустить проект
При отладке WindowsFormsControlLibrary в Visual Studio ваша DLL загружается через узел отладки«UserControlTestContainer.exe», созданный для «AnyCpu (предпочтительно 64 бита)».
Подробную информацию об этом можно получить, щелкнув правой кнопкой мыши на панели задач запущенного хоста отладки, щелкнув правой кнопкой мыши по его значку, выберите Свойства , чтобы найти его путь и передать, например, ILSpy.
Так что я думаю, что когда отладочный хост работает как 64-битный, и передается 32-битная DLL для загрузки, несоответствие по битности приводит к сбою Assembly.LoadFrom
.
[Edit]
Это похоже на ошибку, так как она предотвращает (легко) отладку библиотеки управления WinFormsкоторый имеет зависимость (например, неуправляемый сода) это только x86.
Но я сомневаюсь, что проблемы отладки WinForms только для x86 - это то, что команда VS расставит по приоритетам.
В качестве обходного пути вы можете написать свой собственный тестовый контейнер (!)или:
- Запустите командную строку VS как admin
- Создайте копию UserControlTestContainer.exe
- Используйте
corflags /32bitreq+ /32bitpref+ <PathToExe>
, чтобы установитьКопировать для запуска в качестве x86 - Установить копию в качестве цели «Запуск внешней программы» в параметрах отладки
- Установить путь к вашей dll в качестве аргумента командной строки отладки