0

我有一个必须安装在 COM+ 中的应用程序。通过 RegSvcs 安装工作正常,但是当我尝试卸载应用程序时,一些 DLL 被锁定并保留在安装文件夹中。请注意,这只发生在我调用 COM+ 应用程序之后;否则卸载运行顺利。

我的应用程序需要全新安装和退出,但我很难确定这些 DLL 被锁定的原因。下面是锁定的第三方 DLL 的屏幕截图;未显示与我的应用程序对应的两个。

我的程序集被标记为非 ComVisible,派生自 ServicedComponent 的单个类暴露给 COM+。我尝试在调用完成后强制进行垃圾收集,但这似乎没有任何区别。所以,一些问题:

  • 是否可以安全地假设这是由于 IDisposable 在某处的不当实施而发生的,还是其他原因?
  • 我是否应该假设每个锁定的 DLL 都存在一个单独的问题,或者是否有可能是单个类的问题导致所有这些 DLL 上的锁定?
  • 有什么建议我可以如何调试这个吗?

任何帮助将不胜感激 - 感觉完全失去了这个。

锁定的 DLL

4

1 回答 1

1

我明白了......我需要以下属性:

[assembly: ApplicationAccessControl(Value=false, AccessChecksLevel=AccessChecksLevelOption.ApplicationComponent)]
[assembly: ApplicationActivation(ActivationOption.Server)]

调用从系统帐户路由到我的应用程序,但没有第二个属性,它显然是在创建者进程下激活的。

于 2020-01-20T20:36:00.497 回答