Com Vb6项目文件和源代码安全

Com Vb6项目文件和源代码安全,com,vb6,visual-sourcesafe,Com,Vb6,Visual Sourcesafe,我正在处理的应用程序的一部分是遗留的Vb6 Windows窗体应用程序。除Vb6项目文件外,项目中的所有文件都处于源代码管理(VSS)下。从我在项目中工作的其他开发人员那里可以确定,这是因为项目中使用的com组件在每个开发人员机器上有不同的引用。我希望将项目文件移动到VSS中,以便在将文件添加到项目中时,可以在项目文件中更新这些文件,并且其他开发人员(更重要的是,自动构建脚本)可以从源代码安全获取最新的项目文件 有人知道我是否/如何做到这一点,从而不破坏对不同开发机器上其他com组件的引用吗?长

我正在处理的应用程序的一部分是遗留的Vb6 Windows窗体应用程序。除Vb6项目文件外,项目中的所有文件都处于源代码管理(VSS)下。从我在项目中工作的其他开发人员那里可以确定,这是因为项目中使用的com组件在每个开发人员机器上有不同的引用。我希望将项目文件移动到VSS中,以便在将文件添加到项目中时,可以在项目文件中更新这些文件,并且其他开发人员(更重要的是,自动构建脚本)可以从源代码安全获取最新的项目文件

有人知道我是否/如何做到这一点,从而不破坏对不同开发机器上其他com组件的引用吗?

长话短说,没有


真正的问题是,开发人员不是从同一个地方获取COM组件,要么是因为他们在本地编译组件,要么是因为他们获取同一组件的不同版本。如果COM对象没有持续开发,真正的解决方案是让所有开发人员安装他们需要的组件的相同版本。

我不同意你的同事的看法。如果每个开发人员在他们的机器上都需要不同的引用,我敢打赌,您一定有一些COM类型的奇怪用法。最有可能的情况是,在DLL中编译了CoClass类型和接口类型

COM就是要将接口和实现分离开来(即使VB6做到了这一点,但最好是通过为每个CoClass创建默认接口而不告诉您这些接口)。将类型移动到TLB类型库中,并在项目中引用该类型。让每台机器上的COM注册处理实例化的特定类;这就是它的目的


如果您的团队正在与COM引用作斗争,那么更深层次的问题就错了。

您需要维护一个描述开发项目文件夹结构的标准。例如,我始终建议创建替换驱动器替换。例如,替换H:C:\DEV\uuApp\Visual Studio 2008。这使得开发者可以把他的东西放在他需要的地方。在这个“新”驱动器中,我推荐一个“系统”文件夹。每个COM对象和依赖项都放置在子文件夹中。所有项目仅从H:/System/引用COM对象。不同的COM版本进入一个新文件夹,该版本作为文件夹名称的一部分。例如,C:\DEV\uuApp\DEV\SYSTEM\Iocomp和C:\DEV\uApp\DEV\SYSTEM\Iocomp2

(不要忘记从正确的路径“新”驱动器注册COM对象。)

我在启动时使用批处理文件来设置四个不同的开发驱动器

使用SUBST的好处是,您可以签出到另一个文件夹,然后为该文件夹创建一个“H”驱动器,一切正常


我从1996年开始使用这项技术,效果非常好。我从来没有任何问题。最困难的部分是让其他人了解这项技术。

了解MIDL及其编译器。对于大型VB6应用程序来说,最好的一件事就是更好地控制类型定义。