删除/添加引用并使用Powershell编译古董VB6应用程序



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

有3个项目。我的要求是删除每个项目中的特定引用。然后,自下而上编译项目(服务器>客户端>接口),并在此过程中重新添加引用。(删除引用,编译服务器.dll>将客户端引用添加到服务器.dll,编译客户端.dll>添加对客户端.dll的接口引用,编译接口.exe)

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

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

例如,以下是对 DAO 数据库组件的引用:

Reference=*G{00025E01-0000-0000-C000-000000000046}#5.0#0#C:WINDOWSSysWow64dao360.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的Visual Build Pro,它们已经知道如何构建VB6项目组,如果使用这样的第三方工具是一种选择,可以为您节省大量工作。

最新更新