我想在 .NET 项目中引用 COM DLL,但我还想确保创建的互操作 DLL 具有正确的版本(以便补丁知道何时必须更改 DLL)。
如果我使用TlbImp
我可以用以下命令指定所需的版本/asmversion
标志,但当我直接从 Visual Studio 添加它时,它得到的版本与原始 COM DLL 的版本无关。
我尝试更改版本.vcproj
file
<ItemGroup>
<COMReference Include="MYDLLLib">
<Guid>{459F8813-D74D-DEAD-BEEF-00CAFEBABEA5}</Guid>
<!-- I changed this -->
<VersionMajor>1</VersionMajor>
<!-- This too -->
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
</ItemGroup>
但随后该项目无法构建并出现以下错误:
错误 CS0246:找不到类型或命名空间名称“MYDLLLib”(您是否缺少 using 指令或程序集引用?)
有没有办法在不创建所有 COM 引用的情况下完成此操作TlbImp
提前?
如果答案是yes除了主要版本和次要版本之外,还有没有办法指定内部版本号? (例如 1.2.42.0)
Guid 指的是 TypeLib 的 Guid,而不是直接引用 DLL。版本号指的是 TypeLib 的版本而不是 DLL。
版本号将来自您的 idl 文件,我相信它只支持主要版本和次要版本,而不支持构建版本。当你修改类型库时这个版本会改变吗?
版本号将出现在注册表中的以下位置:
HKEY_CLASSES_ROOT\Typelib\{typelib uuid}\Major.Minor
如果次要版本设置为 0 那么我相信它将导入与主要版本匹配的“最新”版本,但主要版本必须设置为某个值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)