保持正确版本的.NET项目引用的COM DLL(Maintain the correct versi

2019-09-28 05:52发布

我想在.NET项目引用COM DLL,但我也想确保创建互操作的DLL将有正确的版本(这样的补丁会知道什么时候该DLL必须改变)。

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

我试图在改变版本.vcproj文件

<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提前?

如果答案是肯定的有,除了主要和次要版本指定一个版本号的方法吗? (例如1.2。42 0.0)

Answer 1:

的GUID指的GUID类型库不是DLL直接。 版本号指的是类型库的版本没有的DLL。

版本号会从你的IDL文件,我相信它仅支持主要和次要版本,而不是一个内部版本。 难道这个版本时修改类型库变化?

版本号会出现在注册表中:

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

如果次要版本设置为0,那么我相信这将导入相匹配的主要版本的“最新”版本,但主要版本必须设置的东西。



文章来源: Maintain the correct version for a COM dll referenced in a .NET project
标签: .net c++ com