0

我面临以下情况:我创建了一个简单的完全信任 XBAP 应用程序,它引用了非托管 c++ COM 服务器(隔离)。

部署后,我希望 XBAP 应用程序会发现位于同一目录中的 COM 服务器 dll,但事实并非如此。我收到以下错误:

调用的目标已引发异常。---> System.Runtime.InteropServices.COMException (0x80040154):检索具有 CLSID {970599E0-2673-11D3-A8A8-00105AA943DF} 的组件的 COM 类工厂失败,原因是以下错误:80040154。在 Generation888.Generation888.Simple (Int32 num1,Int32 num2)

我验证了部署 XBAP 的文件夹包含包含正确 CLSID 的 DLL 和 XBAP 清单

如果我创建了一个简单的 C# Windows 窗体应用程序并引用相同的 COM dll,它就可以正常工作。

我的问题是 XBAP 是否支持 Side-by-Side 机制。

谢谢

4

1 回答 1

1

我对 XBAP 不是很熟悉,所以这些是一些一般性建议。如果您的 XBAP 实际上是作为一个单独的可执行文件启动的,因为它是完全信任的(taskmgr 说什么?),请尝试在 Windows Vista 或更高版本上使用提升的命令行中的“sxstrace.exe”工具来确定 XBAP 清单是否实际上是被系统解释。如果您第一次尝试没有清单或更改清单的应用程序,系统可能会缓存这些旧信息,您需要通过触摸清单和可执行文件的时间戳来清除此清单状态缓存。

您的可执行文件也可能具有嵌入式清单,这意味着外部清单被忽略。要检查这一点,请在 Visual Studio 中打开可执行文件并查看它是否具有 ID 1 的 RT_MANIFEST 资源。

于 2009-12-01T06:27:34.873 回答