4

我负责维护遗留的 VB6 代码,并且遇到了一个关于锁定项目的 COM DLL 的烦人问题。(我们称之为MyProjectMyProject.dll

当我将MyProject加载到 VB6 IDE 中时,我能够编译生成的二进制兼容 DLL MyProject.dll。然后,我可以运行我的(经典 ASP)Web 应用程序,该应用程序与 DLL(或其他任何东西)挂钩。

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

  1. 检查我没有在其他 VB6 IDE 中打开依赖项目
  2. 回收 IIS
  3. 检查文件不是只读的(有时如果我已将其签入源代码控制)
  4. 关闭项目并重新打开它。

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

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

我在其他地方的搜索在答案方面几乎没有产生什么结果。与此相关的搜索查询往往会返回许多不相关的答案(也许我问的是搜索引擎的错误)。

我在 Stackoverflow 上能找到的最接近的东西是几年前的这个问题,但它并不真正符合要求。

有没有人有任何其他建议可以改善这种情况?

4

1 回答 1

4

MyProject.dll将命名MyProject.cmp和点二进制兼容设置的副本保存到您的 .cmp 文件中。这样您就不需要重新打开项目文件(第 4 步)。

在签入过程中,您也可以标记保持签出以跳过第 3 步。

于 2010-10-06T14:22:14.400 回答