C# 从x64代码访问x86 COM+服务器

C# 从x64代码访问x86 COM+服务器,c#,visual-studio-2010,.net-4.0,com+,C#,Visual Studio 2010,.net 4.0,Com+,我需要访问x86 dll第三方,没有从x64代码访问源代码。我的研究表明,将dll放入COM+包装器中并作为OOP服务进行访问是最合适的方法 到目前为止还不错 因此,尽管我运行的是VS2010和.NET4,但遵循NET2.0互操作性配方的指南是一种问题解决方法。我构建了一个概念验证Servicedll和测试Clientexe,该服务作为面向对象的服务器应用程序运行。它们都可以工作,并且通过组件服务禁用服务会杀死它,因此它似乎使用了正确的路由 这一切都在x86中 当我将客户机更改为x64时,我会得

我需要访问x86 dll第三方,没有从x64代码访问源代码。我的研究表明,将dll放入COM+包装器中并作为OOP服务进行访问是最合适的方法

到目前为止还不错

因此,尽管我运行的是VS2010和.NET4,但遵循NET2.0互操作性配方的指南是一种问题解决方法。我构建了一个概念验证Servicedll和测试Clientexe,该服务作为面向对象的服务器应用程序运行。它们都可以工作,并且通过组件服务禁用服务会杀死它,因此它似乎使用了正确的路由

这一切都在x86中

当我将客户机更改为x64时,我会得到一个“BadImageFormatException”,如果它只是加载一个x86DLL,我会想到这一点,但这应该是运行OOP的

我知道我遗漏了什么,这可能是很明显的

其他说明:

1我运行regsvcs post-build和regsvcs/u prebuild
2问题dll按原样被卡住,我的主要代码库必须是x64。您需要强制程序在所有平台上以x86模式运行。进入主程序集的属性,在“构建”选项卡中,将“平台目标”从“任意CPU”更改为“x86”。这将强制所有汇编程序在x86模式下运行,即使在x64机器上也是如此。

您需要强制程序在所有平台上以x86模式运行。进入主程序集的属性,在“构建”选项卡中,将“平台目标”从“任意CPU”更改为“x86”。这将强制所有汇编程序在x86模式下运行,即使在x64机器上也是如此。

它们都不是任何CPU,服务器是x86,客户端是x64。我不希望客户端在x86中运行,这会破坏使用COM+的全部目的,因为我可以在代码中使用dll。它们都不是任何CPU,服务器是x86,客户端是x64。我不希望客户端在x86中运行,这会破坏使用COM+的全部目的,因为我可以在代码中使用dll。