【问题标题】:Remove/Add References and Compile antique VB6 application using Powershell使用 Powershell 删除/添加引用并编译古董 VB6 应用程序
【发布时间】:2017-03-29 18:34:23
【问题描述】:

我的任务是研究是否可以使用 Powershell 自动管理 VB6 应用程序中的引用,然后编译它的项目。

有 3 个项目。我的要求是删除每个项目中的特定引用。然后,自下而上编译项目(服务器 > 客户端 > 接口)并一路添加引用。 (删除引用,编译server.dll>添加客户端引用到server.dll,编译client.dll>添加接口引用到client.dll,编译interface.exe)

我想不,但我仍然被赋予了确定的任务。当然,到哪里去找这个呢?为什么在这里,当然是 StackOverflow。

【问题讨论】:

  • 我无法共享代码 (NDA),但我们已经使用 Powershell 完成了 VB6 预处理,比如管理版本、添加 VB 代码所依赖的 dll,除非我弄错了。如果我没记错的话,其中大部分只是文本文件,所以你编辑它们并在之后编译
  • 是的,好点:它们是文本文件。

标签: powershell dll vb6


【解决方案1】:

引用存储在项目.VBP 文件中,这些文件只是文本文件。给定的引用恰好占据文件的一行。

例如,这里是对 DAO 数据库组件的引用:

Reference=*\G{00025E01-0000-0000-C000-000000000046}#5.0#0#C:\WINDOWS\SysWow64\dao360.dll#Microsoft DAO 3.6 Object Library

最重要的信息是路径左侧包含 GUID 的所有信息(即库的唯一标识符,或多或少)。文件规范和描述文本并不重要,因为 VB6 会将其更新为它在注册表中为引用的 DLL 找到的任何内容。

另一种引用形式是用于 GUI 控件,例如:

Object={BDC217C8-ED16-11CD-956C-0000C04E4C0A}#1.1#0; tabctl32.ocx

无论出于何种原因,它似乎永远没有路径。您很可能不需要修改这种类型的引用,因为它几乎肯定会破坏项目中依赖它们的表单。

因此,在您的 Powershell 脚本中,关键任务是添加或删除问题中提到的各个参考线。除非您不使用任何形式的二进制兼容性,否则 GUID 将保持稳定。因此,您基本上可以对需要添加/删除的字符串进行硬编码。


除此之外,还值得思考一下为什么您需要采用这种方法。通常,要构建 VB6 解决方案,完全没有必要在此过程中添加/删除引用。此外,根据您选择的部署技术,您可能正在使用项目或二进制兼容性,这往往会使引用保持稳定。

最后,我要提一下现有的工具,例如 Kinook's Visual Build Pro,它们已经知道如何构建 VB6 项目组,如果可以选择使用这样的第 3 方工具,可以为您节省大量工作。

【讨论】:

  • 加 1 尤其是最后一部分。二进制或项目兼容性使这个问题消失了。 This question 讨论了如何自动构建 VB6 项目组并讨论了兼容性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 2019-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 2014-07-19
相关资源
最近更新 更多