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

标签 com vb6 file-locking binary-compatibility

我负责维护旧版 VB6 代码,并且遇到了有关项目 COM DLL 锁定的烦人问题。 (我们将其命名为 MyProjectMyProject.dll)

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

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

  1. 检查我没有在其他 VB6 IDE 中打开依赖项目
  2. 回收 IIS
  3. 检查文件是否为只读(有时,如果我已将其 checkin 源代码管理,则会是只读)
  4. 关闭项目并重新打开。

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

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

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

我在 Stackoverflow 上能找到的最接近的东西是 this question从几年前开始,但它并不真正符合要求。

有人有其他可以改善这种情况的建议吗?

最佳答案

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

在 checkin 期间,您也可以标记保持 checkout 以跳过第 3 步。

关于com - VB6 IDE 正在锁定加载项目的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3873041/

相关文章:

windows - CopyFile 是否锁定源文件?

visual-studio-2010 - Visual Studio 2010 构建无法复制文件错误

Linux flock,如何锁定 "just"文件?

c++ - 通过 IShellFolder 接口(interface)枚举打印机文件夹导致堆分配泄漏

com - 可以在 VBScript 中按名称访问 WMI 对象的属性吗?

vb6 - VB6中的Sub和Function有什么区别?

svn - Visual Basic 6 项目丢失对所有用户定义类型的引用并且无法编译

python - 如何从 Python 中的 C# DLL 调用 Windows COM 方法?

com - 如何从 PowerShell 调用复杂的 COM 方法?

com - 奇怪的 VB6 生成问题 - 以前工作的相同代码不会重新编译