我有一个旧版 VB6 COM DLL,它作为参考包含在 .NET 项目中。我的手动构建过程如下所示:
- 构建 VB6 DLL
- 将 VB6 DLL 复制到参考目录
- 注册 VB6 DLL
regsvr32
- 在 .NET 项目中,删除旧的引用
- 添加对新 VB6 DLL 的引用(浏览)
- 将引用的独立属性设置为 True
- 构建 .NET 解决方案
我正在自动化这个过程。步骤 4 到 6 给我带来了麻烦。当我注册新的 VB6 COM DLL 时,.NET 项目中的旧引用无效。通过查看项目文件,我看到了这一点:
<ItemGroup>
<COMReference Include="DllName">
<Guid>{65CDCC83-E707-4AA3-8940-FE79F265D570}</Guid>
<VersionMajor>50</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>True</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
我相信我需要Guid
用 COM 的新 clsid 自动覆盖该属性,并且我可能需要更改VersionMajor
和VersionMinor
属性。
不幸的是,这些似乎不是 VB6 COM DLL 文件的属性。我在哪里可以获得这些信息和/或我什至走在正确的道路上?是否有一些工具或选项可以自动为我执行此操作?
编辑
如果我不更新引用,我得到的构建错误是 error MSB3179。
错误消息的实际文本是:
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(2580,9):错误 MSB3179:隔离 COM 引用“DllName”时出现问题:未检测到此组件的注册类。[路径/到/projfile.vbproj]
...其中“DllName”是我的 DLL 名称,“path/to/projfile.vbproj”是带有 COM 引用的项目文件的完全限定路径。