我负责维护旧版VB6代码,并在锁定项目的com dll方面遇到了一个烦人的问题。 (我们称之为 我的项目myproject.dll)

当我加载时 我的项目 进入VB6 IDE,我能够编译所得二进制的DLL myproject.dll. 。然后,我可以运行(经典的ASP)Web应用程序,该应用程序将挂钩到DLL(或其他任何事物)中。

因此,当我尝试重新编译com dll时,我会得到“权限拒绝”错误。然后,我发现自己必须执行以下步骤才能解锁DLL:

  1. 检查我在其他VB6 IDE中没有开放的依赖项目
  2. 回收IIS
  3. 检查该文件不仅读取(有时是我将其检查到源控件中的情况)
  4. 关闭项目并重新开放。

通常,这是解决问题并允许我重新编译的最后一步,这意味着VB6 IDE实际上正在锁定已加载项目的DLL!

我的同事向我解释说,这与VB6项目在DLL上兼容二进制的方式有关,但无法提出解决方案。

我在其他地方的搜索几乎没有得到答案的方式。与此相关的搜索查询往往会返回许多无关的答案(也许我问了错误的搜索引擎)。

我在Stackoverflow上可以找到的最接近的东西是 这个问题 从几年前开始,但它并不符合账单。

有人有其他建议可以改善这一点吗?

有帮助吗?

解决方案

保留 MyProject.dll 命名 MyProject.cmp 并将二进制兼容设置点为.cmp文件。这样,您将不需要重新开放项目文件(步骤4)。

在办理登机手续期间,您可以标记 继续检查 也跳过步骤3。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top