.NET/COM如何处理通过Regasm注册的多个版本?
我有一个.NET DLL(它恰好是用C++/CLI编写的)。我想通过COM公开部分内容。我这样做并使用“regasm my.dll/codebase”注册它。到现在为止,一直都还不错。但是我改变了一些东西,程序集的版本号也改变了,加上我把dll移到了另一个文件夹。我再次注册它并在OLE/COM查看器中查看COM对象。我看到这样的东西 InprocServer32 [Codebase] = file://c://foo/bar/my.dll 7.0.0.0 [Class] = My.Blah.Class 7.0.0.0 [Assembly] = Sync, Version=7.0.0.0, Culture=neutral, PublicKeyToken=1dd19234234 7.0.0.0 [RuntimeVersion] = v2.0.50727 7.0.0.0 [CodeBase] = file://c:/dooby/do/my.dll 7.0.0.27397 [Class] = My.Blah.Class 7.0.0.27397 [Assembly] = Sync, Version=7.0.0.27397, Culture=neutral, PublicKeyToken=1dd19234234 7.0.0.27397 [RuntimeVersion] = v2.0.50727 7.0.0.27397 [CodeBase] = file://c://foo/bar/my.dll InprocServer32[Codebase]=file://c://foo/bar/my.dll 7.0.0.0[Class]=My.Blah.Class 7.0.0.0[Assembly]=Sync,版本=7.0.0.0,区域性=neutral,PublicKeyToken=1dd19234234 7.0.0.0[运行时版本]=v2.0.50727 7.0.0.0[CodeBase]=file://c:/dooby/do/my.dll 7.0.0.27397[类]=我的类 7.0.0.27397[程序集]=同步,版本=7.0.0.27397,区域性=中性,PublicKeyToken=1dd19234234 7.0.0.27397[运行时版本]=v2.0.50727 7.0.0.27397[CodeBase]=file://c://foo/bar/my.dll 关于多个版本的问题:.NET/COM如何处理通过Regasm注册的多个版本?,com,versions,regasm,Com,Versions,Regasm,我有一个.NET DLL(它恰好是用C++/CLI编写的)。我想通过COM公开部分内容。我这样做并使用“regasm my.dll/codebase”注册它。到现在为止,一直都还不错。但是我改变了一些东西,程序集的版本号也改变了,加上我把dll移到了另一个文件夹。我再次注册它并在OLE/COM查看器中查看COM对象。我看到这样的东西 InprocServer32 [Codebase] = file://c://foo/bar/my.dll 7.0.0.0 [Class] = My.Blah.Cl
具有相同CLSID的组件应该是兼容的,特别是如果您只更改了程序集之间的内部版本号。这是我通过谷歌搜索找到的唯一能证实这一点的东西 要直接回答您的问题:
出于这个原因,我总是使用静态AssemblyVersion设置COM可见程序集。如果要使用版本标记二进制文件,请改用AssemblyFileVersion
我发现有证据表明COM总是选择注册了多个版本的组件的编号最高的版本,而不是最后注册的版本。有人能证实这一点吗?