Com MSXML6引用似乎仍然在VB6应用程序中使用MSXML4

Com MSXML6引用似乎仍然在VB6应用程序中使用MSXML4,com,vb6,msxml,Com,Vb6,Msxml,我正在旧版VB6应用程序中引用MSXML6(MSXML6.dll)。无论我使用DOMDocument40还是DOMDocument60,我仍然看到msxml4.dll与msxml6.dll一起使用。然而,我在项目中找不到任何其他应该使用的东西,除了我解析一个小配置的地方 为什么我会看到msxml4.dll,因为它没有被项目引用?VB6是否将msxml4用于某些用途?MSXML6在其COM实现中似乎是msxml4的新版本,而不仅仅是作为“营销”版本号 在OLEView中查看两者的IDL可以看到以下

我正在旧版VB6应用程序中引用MSXML6(MSXML6.dll)。无论我使用DOMDocument40还是DOMDocument60,我仍然看到msxml4.dll与msxml6.dll一起使用。然而,我在项目中找不到任何其他应该使用的东西,除了我解析一个小配置的地方


为什么我会看到msxml4.dll,因为它没有被项目引用?VB6是否将msxml4用于某些用途?

MSXML6在其COM实现中似乎是msxml4的新版本,而不仅仅是作为“营销”版本号

在OLEView中查看两者的IDL可以看到以下内容。。。这里有一些例子

MSXML4:

// Generated .IDL file (by the OLE/COM Object Viewer)
// 
// typelib filename: msxml4.dll

[
  uuid(F5078F18-C551-11D3-89B9-0000F81FE221),
  version(4.0),
  helpstring("Microsoft XML, v4.0")
]
library MSXML2
{
    ...
}

[
  odl,
  uuid(2933BF80-7B36-11D2-B20E-00C04F983E60),
  helpstring("Core DOM node interface"),
  dual,
  nonextensible,
  oleautomation
]
interface IXMLDOMNode : IDispatch {
   ...
}
// Generated .IDL file (by the OLE/COM Object Viewer)
// 
// typelib filename: msxml6.dll

[
  uuid(F5078F18-C551-11D3-89B9-0000F81FE221),
  version(6.0),
  helpstring("Microsoft XML, v6.0")
]
library MSXML2
{
   ...
}

[
  odl,
  uuid(2933BF80-7B36-11D2-B20E-00C04F983E60),
  helpstring("Core DOM node interface"),
  dual,
  nonextensible,
  oleautomation
]
interface IXMLDOMNode : IDispatch {
    ...
}
MSXML6:

// Generated .IDL file (by the OLE/COM Object Viewer)
// 
// typelib filename: msxml4.dll

[
  uuid(F5078F18-C551-11D3-89B9-0000F81FE221),
  version(4.0),
  helpstring("Microsoft XML, v4.0")
]
library MSXML2
{
    ...
}

[
  odl,
  uuid(2933BF80-7B36-11D2-B20E-00C04F983E60),
  helpstring("Core DOM node interface"),
  dual,
  nonextensible,
  oleautomation
]
interface IXMLDOMNode : IDispatch {
   ...
}
// Generated .IDL file (by the OLE/COM Object Viewer)
// 
// typelib filename: msxml6.dll

[
  uuid(F5078F18-C551-11D3-89B9-0000F81FE221),
  version(6.0),
  helpstring("Microsoft XML, v6.0")
]
library MSXML2
{
   ...
}

[
  odl,
  uuid(2933BF80-7B36-11D2-B20E-00C04F983E60),
  helpstring("Core DOM node interface"),
  dual,
  nonextensible,
  oleautomation
]
interface IXMLDOMNode : IDispatch {
    ...
}
这些只是简单的样品

具体来说,您可以看到库本身的UUID和接口是相同的。这意味着VB6可以从任意一个DLL使用这些项

如果您需要强制它使用MSXML6,那么我认为您需要更新项目的VBP文件中的版本号

如果您的项目引用了MSXML4,您应该会看到这样一行:

Reference=*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#4.0#0#..\..\..\Windows\SysWow64\msxml4.dll#Microsoft XML, v4.0
Reference=*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#6.0#0#..\..\..\WINDOWS\System32\msxml6.dll#Microsoft XML, v6.0
您想要的是这样一行:

Reference=*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#4.0#0#..\..\..\Windows\SysWow64\msxml4.dll#Microsoft XML, v4.0
Reference=*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#6.0#0#..\..\..\WINDOWS\System32\msxml6.dll#Microsoft XML, v6.0

UUID是相同的。。。但是版本号(
#6.0
)不同。

您如何确定正在使用哪个DLL?