首页 / 知识

关于c ++:维护.NET项目中引用的COM dll的正确版本

2023-04-14 02:02:00

关于c ++:维护.NET项目中引用的COM dll的正确版本

Maintain the correct version for a COM dll referenced in a .NET project

我想在.NET项目中引用COM DLL,但我还想确保创建的互操作DLL具有正确的版本(以便补丁程序知道何时必须更改DLL)。

如果使用TlbImp,则可以使用/asmversion标志指定所需的版本,但是当我直接从Visual Studio添加它时,它将获得与原始COM DLL的版本无关的版本。

我尝试更改.vcproj文件中的版本

1
2
3
4
5
6
7
8
9
10
11
12
<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>

但是随后该项目无法构建,并出现以下错误:

error CS0246: The type or namespace name 'MYDLLLib' could not be found (are you missing a using directive or an assembly reference?)

有什么方法可以完成此任务而无需事先使用TlbImp创建我的所有COM引用?

如果答案是肯定的,除了主要版本和次要版本以外,还有其他方法可以指定内部版本号吗? (例如1.2.42.0)


该Guid指的是TypeLib的Guid,而不是DLL。 版本号是指TypeLib的版本,而不是DLL。

版本号将来自您的idl文件,我相信它仅支持主要版本和次要版本,而不支持构建版本。 修改typelib时,此版本会更改吗?

版本号将出现在注册表下:

1
HKEY_CLASSES_ROOT\\Typelib\\{typelib uuid}\\Major.Minor

如果次要版本设置为0,那么我相信它将导入与主版本匹配的"最新"版本,但是必须将主版本设置为某些版本。


项目引用维护互操作

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢