VB6 IDE正在锁定已加载项目的DLL

时间:2010-10-06 13:38:22

标签: com vb6 file-locking binary-compatibility

我负责维护传统的VB6代码,并且在锁定项目的COM DLL时遇到了一个烦人的问题。 (我们称之为 MyProject MyProject.dll

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

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

  1. 检查我没有在其他VB6 IDE中打开依赖项目
  2. 回收IIS
  3. 检查文件是否为只读文件(有时候如果我已将其签入源代码控制中)
  4. 关闭项目并重新打开。
  5. 通常这是修复问题的最后一步,并允许我重新编译,这意味着VB6 IDE实际上是锁定已加载项目的DLL!

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

    我在其他地方的搜索在答案方面收效甚微。与此相关的搜索查询往往会返回很多无关的答案(也许我在问搜索引擎的错误)。

    我几年前在Stackoverflow上找到的最接近的是this question,但它并不适合这个法案。

    有没有人有其他建议可以改善这个?

1 个答案:

答案 0 :(得分:3)

保留MyProject.dll名为MyProject.cmp的副本,并将二进制兼容设置指向.cmp文件。这样您就不需要重新打开项目文件(步骤4)。

在办理登机手续时,您可以将保持签出标记为跳过第3步。