使用Windows 2003 Server或2000,生成用于其他系统的COM +应用程序代理包括MSI中的.NET Enterprise Services组件在出口期间创建的包。 .NET组件也在GAC中注册,并且regsvcs在安装应用程序代理期间自动运行。无法使用Windows 7或Windows Server 2008从COM +目录导出32位ServicedComponent 64位
但是,我们发现Windows Server 2008不包含程序集。它将包含.tlb,但不包含.dll,也不会将其安装到GAC中,当应用程序找不到组件时,一切都会炸毁。
任何人都知道该怎么做才能确保其行为与2000-2003年一样?
UPDATE我们可以生成只用.NET程序集代理,它工作正常,但如果我们尝试其它组件或传统VB6 COM + DLL文件添加到它说,他们建造了一个不同的处理器相同的封装。
UPDATE我明白,如果你在任何CPU模式(所有项目都设置为)建立,那么当你通过删除您的组件到组件服务应用程序注册,它将使用64位,如果它是一个现有的64位应用程序。但是,这是一个32位应用程序。在COM +应用程序中注册了VB6 dll,它们是32位的。所以应该使用32位注册表等,并使应用程序为32位。所以,当.NET Any CPU组件被添加后,它应该是32位的......但是当我们导出应用程序时,.NET程序集不会被添加到创建的.MSI中。
UPDATE我们发现http://support.microsoft.com/kb/924729,其中讨论了其中的32位的ServicedComponents无法导出一个bug ...有一个修补程序,但它是Windows Server 2003中我们已经收窄的问题,这只是32位服务组件没有正确导出。
是您的Server 2008 x64吗? – 2009-12-23 17:44:28
是的。我已经用更多信息更新了我的问题。 – 2009-12-23 18:27:36