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

时间:2017-03-29 18:34:23

标签: powershell dll vb6

我已经完成了研究是否可以使用Powershell自动管理VB6应用程序中的References然后再编译它的项目的任务。

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

我没有想到,但我还是被赋予了确定无疑的任务。当然,人们去哪里找到这个?为什么这里当然是StackOverflow。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

另一种参考形式是GUI控件,例如:

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

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

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

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

最后,我会提到有一些现有工具,例如Kinook's Visual Build Pro已经知道如何构建VB6项目组,如果使用第三方工具是一个选项,可以为你节省很多工作

相关问题