如何在用户计算机中处理多个版本的tlb

时间:2011-12-12 12:22:43

标签: .net com interop assemblies

我有一个C#.NET类库,我通过生成一个tlb在COM中公开过。这将由excel VBA用户创建自己的功能。我将其称为“MyLib.dll”和“MyLib.tlb”。

我们现在处于UAT模式,并在 C:\ UAT [我的应用程序二进制文件] 中部署到用户计算机。所以,我从这条路径注册我的dll为 regasm C:\ UAT \ MyLib.dll / codebase

但是当我们转向生产时,我们将部署到 C:\ PROD \ [我的应用程序二进制文件] 。所以,我会将其注册为 regasm C:\ PROD \ MyLib.dll / codebase

这不起作用,因为prod版本将破坏旧的UAT版本的tlb。因此,使用我的tlb的UAT版本的用户传播表将不起作用。此外,在未来,我无法使用UAT和PROD的库的不同名称发布,因为代码库是相同的,我不能继续更改每个版本的项目或tlb名称。

如何解决这种情况,或者有什么方法可以让它在名称和功能相同的情况下工作,并且可以根据部署的路径工作,或者通用最佳实践有多个版本的tlb在同一台机器上。

非常感谢。

1 个答案:

答案 0 :(得分:0)

在所有研究和尝试之后我发现的是,即使来自不同的路径,也不可能在机器中注册两个名称的tlbs。注册tlb类型时创建的注册表项使用容器类型的名称。因此,即使从不同的路径运行,我们也无法拥有两个具有相同名称和版本的tlbs。希望这有帮助!