我有一个遗留的 VB6 COM DLL, 它包含在一个.NET 项目中作为参考。 我的手工构建过程是这样的:
- Build VB6 DLL
- Copy VB6 DLL to reference directory
- Register VB6 DLL with
regsvr32
- In the .NET project, remove the old reference
- Add reference to new VB6 DLL (browse)
- Set the Isolated property of the reference to True
- Build .NET solution
正在使此程序自动化。 步骤 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>
我认为,我需要用 COM 的新密钥自动覆盖 < code> Guid code > 属性,我可能需要更改 < code> VersionMajor < /code > 和 < code> Version Minor 属性 。
不幸的是,这些似乎不是 VB6 COM DLL 文件的属性。 我从哪儿可以得到这些信息和/或我是否正在沿着正确的路径走下去? 是否有任何工具或选项可以自动为我做到这一点?
< 强力 > 编辑 < /强 >
如果我不更新引用,我就会发现错误的构建错误 MSB3179 。
错误信息的实际文本是:
c: Windows Microsoft.NETFramrework64v4.0.30319Microsoft.Common.targes(2580,9):错误 MSB3179: 问题分离 COM 参考 DllName: 未检测到此组件的注册分类 。 [path/to/ projfiles.vbproj]
...“ DllName” 是我的 DLL 名称, 而“ path/to/ projfile.vbproj” 是使用 COM 引用的完全合格的工程文件路径 。