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

我们现在处于UAT模式,并以C:\\ UAT [my app binaries]部署到用户计算机。 因此,我从该路径将我的dll注册为regasm C:\\ UAT \\ MyLib.dll / codebase

但是,当我们进入生产环境时,将部署到C:\\ PROD \\ [my app binaries] 因此,我将其注册为regasm C:\\ PROD \\ MyLib.dll / codebase

这将不起作用,因为产品版本将破坏tlb的旧UAT版本。 因此,用户使用我的tlb的UAT版本的电子表格将无法工作。 另外,今后,由于代码库相同,我无法使用UAT和PROD的库名称发布不同的名称,并且无法继续更改每个版本的项目或tlb名称。

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

非常感谢。

===============>>#1 票数:0 已采纳

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

  ask by Everything Matters translate from so

未解决问题?本站智能推荐:

3回复

通过已注册的TLB从python访问未注册的COM对象

我目前正在使用三段代码: 一个闭源应用程序(Main.exe) 作为dll实现的闭源VB COM对象(comobj.dll) 我在Python中开发的代码 comobj.dll托管一个COM对象(比方说'MainInteract'),我想从Python中使用它。
1回复

需要使用.NET中的反射调用COM组件

我需要确定COM组件(非托管代码)的类型,并在运行时使用C#中的反射调用公开接口的方法。 首先,“类型”的哪个成员告诉该类型是COM组件,我们可以在运行时获取CLSID? 是Type.COMObject吗? 我需要通过传递CLSID和REFID来使用CoCreateInsta
1回复

tlbimp.exe可以生成带有自定义版本信息的互操作程序集吗?

Microsoft类型库导入程序工具 (tlbimp.exe)生成没有某些版本信息的互操作程序集,即没有公司,没有版权,没有商标和数字版本始终设置为1.0.0.0。 是否有可能让工具生成具有自定义版本信息的互操作程序集? 这与我在SO上提出的另一个问题松散地相关: 修改已构建的.Net程
1回复

说,“程序集已成功添加到缓存中”,但它不在缓存中

我得到的反馈: 但它不是在寻找内容 它不在/ Windows /程序集中 我正在使用.net 4。
2回复

将TLB转换为IDL

有没有人知道从类型库(.tlb)生成idl文件的命令行工具? 这样做的原因是为了摆脱由regasm生成的枚举值中的下划线。 本博客讨论了枚举中下划线的问题 http://blogs.artinsoft.net/mrojas/archive/2010/05/17/interop-remo
1回复

如何从C#中的TLB(类型库)访问COM vtable并访问其条目?

我需要访问COM vtable,其中包含这些功能的条目,这些功能在C#中的某些特定接口下向外界公开。 我已经使用LoadTypeLib访问并迭代了TLB中包含的类型,并使用ITypeInfo进行了迭代。 现在,我只需要一一访问COM接口vtable中的那些方法,并在运行时一一调用它们
2回复

在P / Invoke和InterOP中是否存在用于封送处理的匹配类型表?

.NET世界和本机世界之间如何匹配不同类型的方言,使我几乎迷住了。 如MFC CList等。 我非常希望这样做: 某种表或清单,列出了.NET世界类型和本机世界类型之间的所有映射。 列出所有可以封送处理的类型的表。 万分谢意!!
6回复

如何在Release()上处理NET COM互操作对象

我有一个用托管代码(C ++ / CLI)编写的COM对象。 我在标准C ++中使用该对象。 当COM对象被释放时,如何强制立即调用COM对象的析构函数? 如果那是不可能的,请调用我有Release()调用我的COM对象上的MyDispose()方法? 我的代码声明对象(C ++
2回复

通过VB6中的COM处理在.NET类上公开的事件

通过VB6中的COM处理在.NET类上公开的事件 我的测试.NET(在编译器设置中注册为interop的类库)代码: 我的测试VB6应用程序winforms代码(引用了上面的类库): 具体来说,我不确定如何在VB6中设置处理程序,我得到的编译错误是VB6中此行上的“参数不可
2回复

文件版本与汇编版本

我有一个.NET(FW 2.0)库,它由COM(vb6)应用程序和.NET应用程序使用。 为COM生成的TLB被注册为由“汇编版本”的前两位组成的版本。 例如,1.2.5.7汇编版本成为TLB的1.2版本。 这非常不方便,因为有时我想更改第二个数字而不需要重新编译vb6应用程序,但似乎