stdole.dll是做什么的?

时间:2020-03-06 15:01:24  来源:igfitidea点击:

我们有一个大型C(.net 2.0)应用程序,它使用我们自己的C ++ COM组件和一个也可以通过COM访问的第三方指纹扫描器库。我们遇到了一个问题,即尽管来自我们自己的C ++ COM组件的事件被触发并被很好地接收,但在生产中,指纹库中的某些事件并未触发到Capp中。

使用MSINFO32将工作系统上的已加载模块与发生故障的系统上的模块进行比较,我们确定这是由于STDOLE.DLL不在GAC中,因此没有加载到故障进程中引起的。

将此文件拖到GAC中,可以使事件从指纹COM库恢复正常。

那么,stdole.dll是做什么的呢?它的大小为16k,所以不会太大...是某种链接到另一个库(如STDOLE32)吗?它的缺失如何导致这种奇怪的行为?

我们如何分发stdole.dll?这是XCOPY部署应用程序,我们不使用GAC。我们是否应该将其打包为资源并使用System.EnterpriseServices.Internal.Publish.GacInstall来确保它在GAC中?

解决方案

似乎stdole.dll是一个主要的互操作程序集。请参阅MSDN上的Office 2003主互操作程序集。

我还必须为我的项目添加对stdole的引用。即使我没有任何引用(这是一个简单的图像应用程序),我们的2位用户也收到了缺少该错误的错误。可能是当这是一个3.5应用程序时,他们仅运行.net 2.0。我知道了为什么。

我还去发布了在项目属性选项卡上,并选择了"应用程序文件",然后包括了要部署的stdole。希望那能奏效。

我有同样的问题。我只是从应用程序中删除了引用,然后重新编译了。跑完所有通过的测试。然后重新部署没有dll的文件,一切正常。

我不知道如何在项目中首先获得对此的引用。这是一个旧版应用程序,因此必须已经很久了。

西蒙