我正在尝试将VC6 COM DLL添加到我们的VS2010RC C#解决方案中.使用VC6工具编译DLL以创建x86版本,并使用VC7跨平台工具编译以生成VC7 DLL.
只要消耗C#项目的平台设置为x86,组件的x86版本就可以正常工作.DLL的x64或x86版本是否实际注册无关紧要.它适用于两者.如果平台设置为"任何CPU",我会收到一个BadImageFormatException负载Interop.<name>.dll.
至于x64版本,我甚至无法构建项目.我收到tlbimp错误:
TlbImp:错误TI0000:必须指定与输入类型库兼容的单个有效机器类型.
有没有人见过这个问题?
编辑:
我已经做了很多深入研究这个问题,并认为这可能是一个Visual Studio错误.我有一个干净的解决方案.我引入了我的COM程序集,选择了与语言无关的"任何CPU".生成的Interop DLL的过程体系结构是x86而不是MSIL.
可能必须手工制作Interop才能使其工作.
如果有人有其他建议,请告诉我.