.net 无法使用Windows 7或Windows Server 2008 64位从COM+目录导出32位ServicedComponent

.net 无法使用Windows 7或Windows Server 2008 64位从COM+目录导出32位ServicedComponent,.net,windows,com+,64-bit,.net,Windows,Com+,64 Bit,使用Windows 2003 Server或2000生成COM+应用程序代理以在其他系统上使用,在导出期间创建的MSI包中包含.NET Enterprise Services组件。NET组件也在GAC中注册,并且在安装应用程序代理期间,regsvcs会自动运行 但是,我们发现Windows Server 2008不包括该程序集。它将包含.tlb而不是.dll,也不会在GAC中安装它,当然,当应用程序找不到程序集时,一切都会崩溃 有人知道如何确保这种行为像2000-2003年那样有效吗 更新我们可

使用Windows 2003 Server或2000生成COM+应用程序代理以在其他系统上使用,在导出期间创建的MSI包中包含.NET Enterprise Services组件。NET组件也在GAC中注册,并且在安装应用程序代理期间,regsvcs会自动运行

但是,我们发现Windows Server 2008不包括该程序集。它将包含.tlb而不是.dll,也不会在GAC中安装它,当然,当应用程序找不到程序集时,一切都会崩溃

有人知道如何确保这种行为像2000-2003年那样有效吗

更新我们可以只使用.NET程序集生成代理,它工作正常,但如果我们尝试将其他程序集或旧版VB6 COM+DLL添加到同一个包中,则表示它们是为不同的处理器构建的

更新我理解,如果您在所有项目都设置为的任何CPU模式下进行构建,那么当您通过将程序集拖放到组件服务应用程序中进行注册时,如果它是现有的64位应用程序,它将使用64位。但是,这是一个32位应用程序。COM+应用程序中注册的VB6 DLL为32位。因此,应该使用32位注册表等,并使应用程序为32位。因此,当.NET之后添加任何CPU程序集时,它应该是32位的。。。但是,当我们导出应用程序时,.NET程序集不会添加到创建的.MSI中


我们发现的更新讨论了32位ServicedComponents无法导出的错误。。。有一个修补程序,但它适用于Windows Server 2003。我们已经缩小了问题范围,只有32位ServicedComponents无法正确导出。

我已经就此与Microsoft技术支持部门联系。问题是,在Windows 2008 64位上,无法从COM+应用程序正确导出任何32位ServicedComponent,因为注册表和目录已更改。这在Windows Server 2003上也是一个问题,但已通过修补程序修复,并在Windows Server 2008中标记为64位已修复,但实际上在2008年未修复。这也是Windows7中的一个bug


所有关心此问题的Windows 7开发人员都应联系Microsoft技术支持,报告他们遇到此问题,因为如果没有客户的成本证明,Microsoft不打算修复此问题。我们正在努力让微软接受我们的商业案例作为理由。如果有任何变化,我将在将来更新此帖子。

我已就此与Microsoft技术支持部门联系。问题是,在Windows 2008 64位上,无法从COM+应用程序正确导出任何32位ServicedComponent,因为注册表和目录已更改。这在Windows Server 2003上也是一个问题,但已通过修补程序修复,并在Windows Server 2008中标记为64位已修复,但实际上在2008年未修复。这也是Windows7中的一个bug


所有关心此问题的Windows 7开发人员都应联系Microsoft技术支持,报告他们遇到此问题,因为如果没有客户的成本证明,Microsoft不打算修复此问题。我们正在努力让微软接受我们的商业案例作为理由。如果有任何变化,我将在将来更新这篇文章。

.NET DLL编译到任何cpu上,当它们被jit编译时,都会有一点变化。COM+只有一种硬咬的感觉。x86或x64,但不是中性的。出于这个原因,您需要使用其中一个,而不是任何CPU


Earl

编译到任何cpu上的NET DLL在jit编译时都会有比特数。COM+只有一种硬咬的感觉。x86或x64,但不是中性的。出于这个原因,您需要使用其中一个,而不是任何CPU


Earl

MS已针对2008年R2的此问题进行了热修复。我们能够让他们确认这是一个bug,并在去年发布了一个修补程序。尝试与他们联系以获取HF。

MS针对2008 R2的此问题进行了热修复。我们能够让他们确认这是一个bug,并在去年发布了一个修补程序。尝试联系他们获取HF。

您的服务器是2008 x64吗?是。我用更多的信息更新了我的问题。你的服务器是2008 x64吗?是的。我用更多的信息更新了我的问题。微软说它不会解决这个问题。那么解决方案是什么?我正在尝试将2008 R2 64位上生成的com+导出导出到32位机器,但它不工作。我可以自己创建详细信息吗?@john我说过,微软不会解决这个问题。没有解决方案,所以你必须找到另一种方法!事实上,我发现遵循中的步骤对我来说回避了这个问题。@john很高兴它对你有用,在我们的例子中,我们是tota
lly被卡住了,不得不移植旧代码。微软说它不会解决这个问题。那么解决方案是什么呢?我正在尝试将2008 R2 64位上生成的com+导出导出到32位机器,但它不工作。我可以自己创建详细信息吗?@john我说过,微软不会解决这个问题。没有解决方案,所以你必须找到另一种方法!事实上,我发现按照中的步骤为我解决了这个问题。@john很高兴它对您有效,在我们的情况下,我们完全陷入困境,不得不移植遗留代码。感谢更新。不幸的是,对于那个项目来说已经太晚了谢谢你的更新。不幸的是,对于那个项目来说已经太晚了