0

这是关于 Windows 窗体应用程序、.Net 4.0、Visual Studio 2010。

我的成像应用程序使用生成的互操作库使用 PortableDeviceApiLib 和 PortableDeviceTypesLib。当引用 PortableDevice 类型时,这会导致类型信息加载失败,除非我专门为 x86 构建。但是,在 x86 中,我的 Shell32.dll 中的 DLLImports 在程序终止时会导致运行时“堆栈不平衡”错误;这种不平衡不会发生在其他构建中,例如 AnyCPU。

同一机器应用程序上的另一个 Windows 窗体应用程序与 PortableDeviceApiLib 没有显着问题,但它不使用 Shell32.dll。

使用非 x86 构建我的成像应用程序会导致 VS 警告有关“MIDL”与“x86”不兼容可能导致运行时失败。

另一个问题是我使用C# 中枚举 Windows 便携设备中的建议 来反编译、编辑和重新编译 Interop.PortableDeviceApiLib.dll 以允许枚举多个便携设备。这似乎不会影响类型库加载失败。

我通常将 AnyCPU 用于 .Net 应用程序,包括 Forms 和 WPF。我可以尝试有关构建设置的任何其他想法吗?

4

0 回答 0