我有一个Windows服务,它使用某个guid A来实例化一个dcom对象。
我需要用新版本替换该dcom对象。 当我创建并编译我的替换dcom对象时,它是使用guid B创建的。
如何将替换dcom对象的guid从guid B更改为guidA?
答案 0 :(得分:2)
如果您尝试更改“服务器”端(发布该特定类的DLL或应用程序)上的ID,当您在项目属性中选择“无兼容性”时,VB会为您执行此操作,“组件”选项卡
如果您尝试更改在“客户端”(使用其他dll / app发布的类的DLL或应用程序)中实例化的对象,则需要更改引用(通过引用或组件) ,取决于我们正在讨论的对象类型),以便指向新版本的服务器(使用更新的GUID发布他的类)。这意味着删除当前引用并添加对新服务器的引用。如果名称没有改变,其他一切仍然可以像以前那样工作,那么显然对类接口的任何改变都很小。
据我所知,您无法直接访问VB6中的GUID。
答案 1 :(得分:0)
我设法重新编译我的替换DCOM对象并让它使用Guid A ...
我想当VB替换exe文件时,它会查找GUID,然后重新使用它来重新编译版本。
答案 2 :(得分:0)
您应该将应用程序(替换DCOM对象)编译为与现有dll二进制兼容,这样它将继承相同的GUID并且版本号将递增。如果你用替换写过现有的DCOM dll,一切都应该有用。
例如,在VB6中,您可以在项目对话框设置中指定二进制兼容性。不确定你为C ++设置它的位置,我认为GUID是在源代码中嵌入的。