我已经创建了WinForms UserControl。
当我将平台留在AnyCPU上时,可以毫无问题地对其进行调试: 当我按Play时,将显示预览。
然后我尝试将项目更改为x86。 因此,我单击“ AnyCPU”,然后单击“配置管理器”。
在“活动项目平台”上,选择“新建...”。
现在,我选择“ x86”并单击“确定”。
然后,当我单击“播放”时,出现错误“ System.BadImageFormatException”。
这是一个常见问题,还是我的系统上非常非常错误的事情?
每次我尝试一个新项目时都会发生。
答案 0 :(得分:2)
我可以通过以下方式重现您在VS 2017 15.9.8中发现的错误:
在Visual Studio中调试WindowsFormsControlLibrary时,将通过为“ AnyCpu(首选64位)”构建的调试主机“ UserControlTestContainer.exe”加载DLL。
您可以通过右键单击正在运行的调试主机的任务栏,右键单击其图标,选择 Properties 来找到其路径,然后传递到例如ILSpy。
因此,我认为当调试主机以64位运行并传递32位dll进行加载时,位javascript的不匹配。
[编辑]
这似乎是一个错误,因为它阻止(轻松)调试仅具有x86依赖项(例如非托管代码)的WinForms控件库。
但是我怀疑VS团队会优先考虑WinForms仅用于x86的调试问题。
作为解决方法,您可以编写自己的测试容器(!)或:
Assembly.LoadFrom
to fail将副本设置为以x86运行答案 1 :(得分:-1)
这是一个常见问题,通常意味着您试图从32位可执行文件调用64位库。为x86编译时,请确保使用32位库。